[MLton-commit] r4898
Matthew Fluet
fluet at mlton.org
Sat Dec 2 11:10:21 PST 2006
Merge x86_64 branch revisions into trunk
----------------------------------------------------------------------
U mlton/trunk/Makefile
U mlton/trunk/basis-library/Makefile
U mlton/trunk/basis-library/README
U mlton/trunk/basis-library/arrays-and-vectors/array-slice.sig
U mlton/trunk/basis-library/arrays-and-vectors/array.sig
U mlton/trunk/basis-library/arrays-and-vectors/array.sml
U mlton/trunk/basis-library/arrays-and-vectors/array2.sml
U mlton/trunk/basis-library/arrays-and-vectors/mono-array-slice.sig
U mlton/trunk/basis-library/arrays-and-vectors/mono-array.sig
U mlton/trunk/basis-library/arrays-and-vectors/mono-array2.sig
U mlton/trunk/basis-library/arrays-and-vectors/mono-vector-slice.sig
U mlton/trunk/basis-library/arrays-and-vectors/mono.sml
U mlton/trunk/basis-library/arrays-and-vectors/sequence.fun
U mlton/trunk/basis-library/arrays-and-vectors/sequence.sig
U mlton/trunk/basis-library/arrays-and-vectors/slice.sig
U mlton/trunk/basis-library/arrays-and-vectors/vector-slice.sig
U mlton/trunk/basis-library/arrays-and-vectors/vector.sig
U mlton/trunk/basis-library/arrays-and-vectors/vector.sml
A mlton/trunk/basis-library/build/
A mlton/trunk/basis-library/config/
_U mlton/trunk/basis-library/config/c/
U mlton/trunk/basis-library/general/bool.sml
U mlton/trunk/basis-library/general/general.sig
U mlton/trunk/basis-library/general/general.sml
U mlton/trunk/basis-library/general/option.sig
U mlton/trunk/basis-library/general/sml90.sml
U mlton/trunk/basis-library/integer/embed-int.sml
U mlton/trunk/basis-library/integer/embed-word.sml
A mlton/trunk/basis-library/integer/int-global.sml
U mlton/trunk/basis-library/integer/int-inf.sig
U mlton/trunk/basis-library/integer/int-inf.sml
A mlton/trunk/basis-library/integer/int-inf0.sml
A mlton/trunk/basis-library/integer/int-inf1.sml
U mlton/trunk/basis-library/integer/int.sml
A mlton/trunk/basis-library/integer/int1.sml
U mlton/trunk/basis-library/integer/integer.sig
A mlton/trunk/basis-library/integer/iwconv0.sml
A mlton/trunk/basis-library/integer/num0.sml
A mlton/trunk/basis-library/integer/num1.sml
A mlton/trunk/basis-library/integer/pack-word.sml
D mlton/trunk/basis-library/integer/pack-word32.sml
D mlton/trunk/basis-library/integer/patch.sml
A mlton/trunk/basis-library/integer/word-global.sml
U mlton/trunk/basis-library/integer/word.sig
U mlton/trunk/basis-library/integer/word.sml
A mlton/trunk/basis-library/integer/word1.sml
U mlton/trunk/basis-library/io/bin-io.sig
U mlton/trunk/basis-library/io/bin-io.sml
U mlton/trunk/basis-library/io/imperative-io.fun
U mlton/trunk/basis-library/io/io.sig
U mlton/trunk/basis-library/io/io.sml
U mlton/trunk/basis-library/io/prim-io.fun
U mlton/trunk/basis-library/io/prim-io.sig
U mlton/trunk/basis-library/io/stream-io.fun
U mlton/trunk/basis-library/io/text-io.sig
U mlton/trunk/basis-library/io/text-io.sml
U mlton/trunk/basis-library/libs/basis-1997/arrays-and-vectors/mono-array2.sig
U mlton/trunk/basis-library/libs/basis-1997/arrays-and-vectors/mono-vector-array-array2-convert.fun
U mlton/trunk/basis-library/libs/basis-1997/arrays-and-vectors/mono-vector.sig
U mlton/trunk/basis-library/libs/basis-1997/arrays-and-vectors/vector-array-convert.fun
U mlton/trunk/basis-library/libs/basis-1997/arrays-and-vectors/vector.sig
U mlton/trunk/basis-library/libs/basis-1997/io/io-convert.fun
U mlton/trunk/basis-library/libs/basis-1997/io/stream-io.sig
U mlton/trunk/basis-library/libs/basis-1997/io/text-io-convert.fun
U mlton/trunk/basis-library/libs/basis-1997/posix/file-sys.sig
U mlton/trunk/basis-library/libs/basis-1997/posix/flags-convert.fun
U mlton/trunk/basis-library/libs/basis-1997/posix/io-convert.fun
U mlton/trunk/basis-library/libs/basis-1997/posix/io.sig
U mlton/trunk/basis-library/libs/basis-1997/posix/process-convert.fun
U mlton/trunk/basis-library/libs/basis-1997/posix/tty-convert.fun
U mlton/trunk/basis-library/libs/basis-1997/posix/tty.sig
U mlton/trunk/basis-library/libs/basis-1997/real/IEEE-real-convert.fun
U mlton/trunk/basis-library/libs/basis-1997/real/real-convert.fun
U mlton/trunk/basis-library/libs/basis-1997/real/real.sig
U mlton/trunk/basis-library/libs/basis-1997/system/file-sys.sig
U mlton/trunk/basis-library/libs/basis-1997/system/os-convert.fun
U mlton/trunk/basis-library/libs/basis-1997/system/os.sig
U mlton/trunk/basis-library/libs/basis-1997/system/path-convert.fun
U mlton/trunk/basis-library/libs/basis-1997/system/process-convert.fun
U mlton/trunk/basis-library/libs/basis-1997/system/timer.sig
U mlton/trunk/basis-library/libs/basis-1997/system/unix.sig
U mlton/trunk/basis-library/libs/basis-1997/top-level/basis.sig
U mlton/trunk/basis-library/libs/basis-2002/top-level/basis-exns.sig
U mlton/trunk/basis-library/libs/basis-2002/top-level/basis-types.sig
U mlton/trunk/basis-library/libs/basis-2002/top-level/basis.sig
U mlton/trunk/basis-library/libs/basis-2002/top-level/generate-overloads.sml
U mlton/trunk/basis-library/libs/basis-2002/top-level/pervasive-exns.sml
U mlton/trunk/basis-library/libs/basis-extra/basis-extra.mlb
U mlton/trunk/basis-library/libs/basis-extra/top-level/basis.sig
U mlton/trunk/basis-library/libs/basis-extra/top-level/basis.sml
U mlton/trunk/basis-library/libs/basis-none/top-level/basis.sml
D mlton/trunk/basis-library/libs/primitive.mlb
U mlton/trunk/basis-library/list/list-pair.sml
U mlton/trunk/basis-library/list/list.sig
U mlton/trunk/basis-library/list/list.sml
A mlton/trunk/basis-library/maps/
D mlton/trunk/basis-library/misc/
U mlton/trunk/basis-library/mlton/array.sig
U mlton/trunk/basis-library/mlton/call-stack.sml
U mlton/trunk/basis-library/mlton/cont.sml
U mlton/trunk/basis-library/mlton/exit.sml
U mlton/trunk/basis-library/mlton/exn.sml
U mlton/trunk/basis-library/mlton/ffi.sig
U mlton/trunk/basis-library/mlton/ffi.sml
U mlton/trunk/basis-library/mlton/finalizable.sml
U mlton/trunk/basis-library/mlton/gc.sml
U mlton/trunk/basis-library/mlton/int-inf.sig
U mlton/trunk/basis-library/mlton/io.fun
U mlton/trunk/basis-library/mlton/io.sig
U mlton/trunk/basis-library/mlton/itimer.sml
U mlton/trunk/basis-library/mlton/mlton.sml
U mlton/trunk/basis-library/mlton/platform.sig
U mlton/trunk/basis-library/mlton/platform.sml
U mlton/trunk/basis-library/mlton/pointer.sig
U mlton/trunk/basis-library/mlton/pointer.sml
U mlton/trunk/basis-library/mlton/proc-env.sml
U mlton/trunk/basis-library/mlton/process.sig
U mlton/trunk/basis-library/mlton/process.sml
U mlton/trunk/basis-library/mlton/profile.sml
U mlton/trunk/basis-library/mlton/ptrace.sml
U mlton/trunk/basis-library/mlton/random.sig
U mlton/trunk/basis-library/mlton/rlimit.sig
U mlton/trunk/basis-library/mlton/rlimit.sml
U mlton/trunk/basis-library/mlton/rusage.sml
U mlton/trunk/basis-library/mlton/signal.sig
U mlton/trunk/basis-library/mlton/signal.sml
U mlton/trunk/basis-library/mlton/socket.sig
U mlton/trunk/basis-library/mlton/socket.sml
U mlton/trunk/basis-library/mlton/syslog.sig
U mlton/trunk/basis-library/mlton/syslog.sml
U mlton/trunk/basis-library/mlton/thread.sig
U mlton/trunk/basis-library/mlton/thread.sml
U mlton/trunk/basis-library/mlton/vector.sig
U mlton/trunk/basis-library/mlton/weak.sml
U mlton/trunk/basis-library/mlton/word.sig
U mlton/trunk/basis-library/mlton/world.sml
U mlton/trunk/basis-library/net/generic-sock.sig
U mlton/trunk/basis-library/net/generic-sock.sml
U mlton/trunk/basis-library/net/inet-sock.sml
U mlton/trunk/basis-library/net/net-host-db.sig
U mlton/trunk/basis-library/net/net-host-db.sml
U mlton/trunk/basis-library/net/net-prot-db.sig
U mlton/trunk/basis-library/net/net-prot-db.sml
U mlton/trunk/basis-library/net/net-serv-db.sig
U mlton/trunk/basis-library/net/net-serv-db.sml
U mlton/trunk/basis-library/net/net.sig
U mlton/trunk/basis-library/net/net.sml
U mlton/trunk/basis-library/net/socket.sig
U mlton/trunk/basis-library/net/socket.sml
U mlton/trunk/basis-library/net/unix-sock.sig
U mlton/trunk/basis-library/net/unix-sock.sml
U mlton/trunk/basis-library/notes.txt
U mlton/trunk/basis-library/platform/cygwin.sml
U mlton/trunk/basis-library/posix/error.sig
U mlton/trunk/basis-library/posix/error.sml
U mlton/trunk/basis-library/posix/file-sys.sig
U mlton/trunk/basis-library/posix/file-sys.sml
U mlton/trunk/basis-library/posix/flags.sig
U mlton/trunk/basis-library/posix/flags.sml
U mlton/trunk/basis-library/posix/io.sig
U mlton/trunk/basis-library/posix/io.sml
U mlton/trunk/basis-library/posix/posix.sig
U mlton/trunk/basis-library/posix/posix.sml
D mlton/trunk/basis-library/posix/primitive.sml
U mlton/trunk/basis-library/posix/proc-env.sml
U mlton/trunk/basis-library/posix/process.sml
U mlton/trunk/basis-library/posix/signal.sig
U mlton/trunk/basis-library/posix/signal.sml
U mlton/trunk/basis-library/posix/stub-mingw.sml
U mlton/trunk/basis-library/posix/sys-db.sig
U mlton/trunk/basis-library/posix/sys-db.sml
U mlton/trunk/basis-library/posix/tty.sig
U mlton/trunk/basis-library/posix/tty.sml
A mlton/trunk/basis-library/primitive/
U mlton/trunk/basis-library/real/IEEE-real.sig
U mlton/trunk/basis-library/real/IEEE-real.sml
U mlton/trunk/basis-library/real/math.sig
U mlton/trunk/basis-library/real/pack-real.sml
A mlton/trunk/basis-library/real/real-global.sml
D mlton/trunk/basis-library/real/real.fun
U mlton/trunk/basis-library/real/real.sig
A mlton/trunk/basis-library/real/real.sml
D mlton/trunk/basis-library/real/real32.sml
D mlton/trunk/basis-library/real/real64.sml
U mlton/trunk/basis-library/sml-nj/sml-nj.sml
U mlton/trunk/basis-library/sml-nj/unsafe.sml
U mlton/trunk/basis-library/system/command-line.sml
U mlton/trunk/basis-library/system/date.sig
U mlton/trunk/basis-library/system/date.sml
U mlton/trunk/basis-library/system/file-sys.sml
U mlton/trunk/basis-library/system/io.sml
U mlton/trunk/basis-library/system/path.sml
U mlton/trunk/basis-library/system/pre-os.sml
U mlton/trunk/basis-library/system/process.sig
U mlton/trunk/basis-library/system/process.sml
U mlton/trunk/basis-library/system/time.sml
U mlton/trunk/basis-library/system/timer.sml
U mlton/trunk/basis-library/system/unix.sml
U mlton/trunk/basis-library/text/byte.sml
A mlton/trunk/basis-library/text/char-global.sml
U mlton/trunk/basis-library/text/char.sml
U mlton/trunk/basis-library/text/char0.sml
A mlton/trunk/basis-library/text/nullstring.sml
U mlton/trunk/basis-library/text/string-cvt.sig
U mlton/trunk/basis-library/text/string-cvt.sml
A mlton/trunk/basis-library/text/string-global.sml
U mlton/trunk/basis-library/text/string.sig
U mlton/trunk/basis-library/text/string.sml
U mlton/trunk/basis-library/text/string0.sml
A mlton/trunk/basis-library/text/substring-global.sml
U mlton/trunk/basis-library/text/substring.sml
A mlton/trunk/basis-library/top-level/infixes-unsafe.sml
A mlton/trunk/basis-library/util/
U mlton/trunk/benchmark/Makefile
U mlton/trunk/benchmark/tests/Makefile
U mlton/trunk/bin/add-cross
U mlton/trunk/bin/build-cross-gcc
U mlton/trunk/bin/clean
U mlton/trunk/bin/grab-wiki
U mlton/trunk/bin/host-arch
U mlton/trunk/bin/host-os
U mlton/trunk/bin/make-pdf-guide
U mlton/trunk/bin/mlton-script
U mlton/trunk/bin/mmake
U mlton/trunk/bin/msed
U mlton/trunk/bin/patch-mingw
U mlton/trunk/bin/platform
U mlton/trunk/bin/regression
U mlton/trunk/bin/sync-ignore
U mlton/trunk/bin/upgrade-basis
D mlton/trunk/bytecode/
U mlton/trunk/doc/changelog
U mlton/trunk/doc/examples/ffi/export.sml
U mlton/trunk/doc/examples/ffi/ffi-export.c
U mlton/trunk/doc/examples/ffi/ffi-import.c
U mlton/trunk/doc/examples/finalizable/finalizable.sml
U mlton/trunk/doc/examples/profiling/fib-tak.sml
U mlton/trunk/doc/examples/profiling/list-rev.sml
U mlton/trunk/doc/style-guide/main.tex
A mlton/trunk/doc/x86_64-port-notes/
U mlton/trunk/include/bytecode-main.h
U mlton/trunk/include/c-chunk.h
U mlton/trunk/include/c-common.h
U mlton/trunk/include/c-main.h
U mlton/trunk/include/main.h
U mlton/trunk/include/x86-main.h
U mlton/trunk/lib/ckit-lib/Makefile
U mlton/trunk/lib/cml/cml-lib/multicast.sig
U mlton/trunk/lib/cml/cml-lib/multicast.sml
U mlton/trunk/lib/cml/cml-lib/result.sig
U mlton/trunk/lib/cml/cml-lib/simple-rpc.sig
U mlton/trunk/lib/cml/cml-lib/trace-cml.sig
U mlton/trunk/lib/cml/core-cml/channel.sig
U mlton/trunk/lib/cml/core-cml/channel.sml
U mlton/trunk/lib/cml/core-cml/cml.sig
U mlton/trunk/lib/cml/core-cml/event.sml
U mlton/trunk/lib/cml/core-cml/mailbox.sig
U mlton/trunk/lib/cml/core-cml/run-cml.sig
U mlton/trunk/lib/cml/core-cml/run-cml.sml
U mlton/trunk/lib/cml/core-cml/sync-var.sig
U mlton/trunk/lib/cml/core-cml/sync-var.sml
U mlton/trunk/lib/cml/core-cml/timeout.sml
U mlton/trunk/lib/cml/core-cml/trans-id.sml
U mlton/trunk/lib/cml/core-cml/version.sig
_U mlton/trunk/lib/cml/tests/
A mlton/trunk/lib/cml/tests/.ignore
U mlton/trunk/lib/cml/tests/primes-multicast.sml
U mlton/trunk/lib/cml/tests/primes.sml
U mlton/trunk/lib/cml/util/assert.sig
U mlton/trunk/lib/cml/util/assert.sml
U mlton/trunk/lib/cml/util/critical.sig
U mlton/trunk/lib/cml/util/imp-queue.sml
U mlton/trunk/lib/cml/util/local-assert.fun
U mlton/trunk/lib/cml/util/local-debug.fun
U mlton/trunk/lib/mlnlffi/c.sig
U mlton/trunk/lib/mlnlffi/internals/c-int.x86-linux.mlb
D mlton/trunk/lib/mlnlffi/memory/platform/memory.amd64-linux.mlb
A mlton/trunk/lib/mlnlffi/memory/platform/memory.amd64-linux.mlb
U mlton/trunk/lib/mlrisc-lib/Makefile
U mlton/trunk/lib/mlton/basic/alpha-beta.fun
U mlton/trunk/lib/mlton/basic/alpha-beta.sig
U mlton/trunk/lib/mlton/basic/append-list.sig
U mlton/trunk/lib/mlton/basic/append-list.sml
U mlton/trunk/lib/mlton/basic/array.fun
U mlton/trunk/lib/mlton/basic/array.sig
U mlton/trunk/lib/mlton/basic/array2.sig
U mlton/trunk/lib/mlton/basic/array2.sml
U mlton/trunk/lib/mlton/basic/assert.sml
U mlton/trunk/lib/mlton/basic/base64.sig
U mlton/trunk/lib/mlton/basic/base64.sml
U mlton/trunk/lib/mlton/basic/binary-search.sig
U mlton/trunk/lib/mlton/basic/bool.sml
U mlton/trunk/lib/mlton/basic/bounded-order.fun
U mlton/trunk/lib/mlton/basic/buffer.sig
U mlton/trunk/lib/mlton/basic/buffer.sml
U mlton/trunk/lib/mlton/basic/char-buffer.sig
U mlton/trunk/lib/mlton/basic/char-buffer.sml
U mlton/trunk/lib/mlton/basic/char-pred.sml
U mlton/trunk/lib/mlton/basic/char.sig
U mlton/trunk/lib/mlton/basic/char0.sml
U mlton/trunk/lib/mlton/basic/choice-pattern.sig
U mlton/trunk/lib/mlton/basic/circular-list.fun
U mlton/trunk/lib/mlton/basic/circular-list.sig
U mlton/trunk/lib/mlton/basic/clearable-promise.sml
U mlton/trunk/lib/mlton/basic/computation.sig
U mlton/trunk/lib/mlton/basic/console.sig
U mlton/trunk/lib/mlton/basic/console.sml
U mlton/trunk/lib/mlton/basic/counter.sig
U mlton/trunk/lib/mlton/basic/counter.sml
U mlton/trunk/lib/mlton/basic/date.sig
U mlton/trunk/lib/mlton/basic/date.sml
U mlton/trunk/lib/mlton/basic/dir.sig
U mlton/trunk/lib/mlton/basic/dir.sml
U mlton/trunk/lib/mlton/basic/directed-graph.sml
U mlton/trunk/lib/mlton/basic/directed-sub-graph.sml
U mlton/trunk/lib/mlton/basic/dot-color.sml
U mlton/trunk/lib/mlton/basic/dot.sig
U mlton/trunk/lib/mlton/basic/dot.sml
U mlton/trunk/lib/mlton/basic/doubly-linked.fun
U mlton/trunk/lib/mlton/basic/engine.sig
U mlton/trunk/lib/mlton/basic/engine.sml
U mlton/trunk/lib/mlton/basic/env.fun
U mlton/trunk/lib/mlton/basic/env.sig
U mlton/trunk/lib/mlton/basic/error.sml
U mlton/trunk/lib/mlton/basic/escape.sml
U mlton/trunk/lib/mlton/basic/euclidean-ring.fun
U mlton/trunk/lib/mlton/basic/euclidean-ring.sig
U mlton/trunk/lib/mlton/basic/exn.sml
U mlton/trunk/lib/mlton/basic/exn0.sml
U mlton/trunk/lib/mlton/basic/export.sml
U mlton/trunk/lib/mlton/basic/field.fun
U mlton/trunk/lib/mlton/basic/file-desc.sml
U mlton/trunk/lib/mlton/basic/file.sml
U mlton/trunk/lib/mlton/basic/fold.fun
U mlton/trunk/lib/mlton/basic/fold.sig
U mlton/trunk/lib/mlton/basic/format.sig
U mlton/trunk/lib/mlton/basic/format.sml
U mlton/trunk/lib/mlton/basic/function.sml
U mlton/trunk/lib/mlton/basic/hash-set.sml
U mlton/trunk/lib/mlton/basic/hash-table.sig
U mlton/trunk/lib/mlton/basic/hash-table.sml
U mlton/trunk/lib/mlton/basic/html.sig
U mlton/trunk/lib/mlton/basic/html.sml
U mlton/trunk/lib/mlton/basic/http.sig
U mlton/trunk/lib/mlton/basic/http.sml
U mlton/trunk/lib/mlton/basic/init-script.sml
U mlton/trunk/lib/mlton/basic/instream.sig
U mlton/trunk/lib/mlton/basic/instream.sml
U mlton/trunk/lib/mlton/basic/instream0.sml
U mlton/trunk/lib/mlton/basic/int-inf.sig
U mlton/trunk/lib/mlton/basic/int-inf.sml
U mlton/trunk/lib/mlton/basic/int.sml
U mlton/trunk/lib/mlton/basic/integer.fun
U mlton/trunk/lib/mlton/basic/intermediate-computation.sig
U mlton/trunk/lib/mlton/basic/intermediate-computation.sml
U mlton/trunk/lib/mlton/basic/iterate.sml
U mlton/trunk/lib/mlton/basic/justify.sig
U mlton/trunk/lib/mlton/basic/justify.sml
U mlton/trunk/lib/mlton/basic/layout.sig
U mlton/trunk/lib/mlton/basic/layout.sml
U mlton/trunk/lib/mlton/basic/linked-list.sig
U mlton/trunk/lib/mlton/basic/linked-list.sml
U mlton/trunk/lib/mlton/basic/list.sig
U mlton/trunk/lib/mlton/basic/list.sml
U mlton/trunk/lib/mlton/basic/mark.sig
U mlton/trunk/lib/mlton/basic/mark.sml
U mlton/trunk/lib/mlton/basic/max-pow-2-that-divides.fun
U mlton/trunk/lib/mlton/basic/merge-sort.sig
U mlton/trunk/lib/mlton/basic/mono-container.sig
U mlton/trunk/lib/mlton/basic/mono-list.fun
U mlton/trunk/lib/mlton/basic/mono-option.fun
U mlton/trunk/lib/mlton/basic/my-dirs.sml
U mlton/trunk/lib/mlton/basic/net.sml
U mlton/trunk/lib/mlton/basic/number.fun
U mlton/trunk/lib/mlton/basic/number.sig
U mlton/trunk/lib/mlton/basic/option.sml
U mlton/trunk/lib/mlton/basic/ordered-ring.fun
U mlton/trunk/lib/mlton/basic/ordered-ring.sig
U mlton/trunk/lib/mlton/basic/outstream.sig
U mlton/trunk/lib/mlton/basic/outstream0.sml
U mlton/trunk/lib/mlton/basic/parse.fun
U mlton/trunk/lib/mlton/basic/parse.sig
U mlton/trunk/lib/mlton/basic/pid.sig
U mlton/trunk/lib/mlton/basic/pointer.sig
U mlton/trunk/lib/mlton/basic/pointer.sml
U mlton/trunk/lib/mlton/basic/popt.sig
U mlton/trunk/lib/mlton/basic/popt.sml
U mlton/trunk/lib/mlton/basic/port.sig
U mlton/trunk/lib/mlton/basic/port.sml
U mlton/trunk/lib/mlton/basic/postscript.sig
U mlton/trunk/lib/mlton/basic/postscript.sml
U mlton/trunk/lib/mlton/basic/power.sml
U mlton/trunk/lib/mlton/basic/process.sig
U mlton/trunk/lib/mlton/basic/process.sml
U mlton/trunk/lib/mlton/basic/promise.sig
U mlton/trunk/lib/mlton/basic/property-list.fun
U mlton/trunk/lib/mlton/basic/property.fun
U mlton/trunk/lib/mlton/basic/property.sig
U mlton/trunk/lib/mlton/basic/ps.sml
U mlton/trunk/lib/mlton/basic/quick-sort.sig
U mlton/trunk/lib/mlton/basic/quick-sort.sml
U mlton/trunk/lib/mlton/basic/random.sig
U mlton/trunk/lib/mlton/basic/random.sml
U mlton/trunk/lib/mlton/basic/rational.fun
U mlton/trunk/lib/mlton/basic/rational.sig
U mlton/trunk/lib/mlton/basic/rdb.sig
U mlton/trunk/lib/mlton/basic/rdb.sml
U mlton/trunk/lib/mlton/basic/reader.sml
U mlton/trunk/lib/mlton/basic/real.sig
U mlton/trunk/lib/mlton/basic/real.sml
U mlton/trunk/lib/mlton/basic/ref.sml
U mlton/trunk/lib/mlton/basic/regexp.sig
U mlton/trunk/lib/mlton/basic/regexp.sml
U mlton/trunk/lib/mlton/basic/relation0.sml
U mlton/trunk/lib/mlton/basic/resizable-array.fun
U mlton/trunk/lib/mlton/basic/resizable-array.sig
U mlton/trunk/lib/mlton/basic/result.sig
U mlton/trunk/lib/mlton/basic/result.sml
U mlton/trunk/lib/mlton/basic/ring-with-identity.fun
U mlton/trunk/lib/mlton/basic/ring-with-identity.sig
U mlton/trunk/lib/mlton/basic/ring.fun
U mlton/trunk/lib/mlton/basic/ring.sig
U mlton/trunk/lib/mlton/basic/sexp.sig
U mlton/trunk/lib/mlton/basic/signal.sml
U mlton/trunk/lib/mlton/basic/stream.sig
U mlton/trunk/lib/mlton/basic/stream.sml
U mlton/trunk/lib/mlton/basic/string-map.sml
U mlton/trunk/lib/mlton/basic/string.sig
U mlton/trunk/lib/mlton/basic/string.sml
U mlton/trunk/lib/mlton/basic/string0.sml
U mlton/trunk/lib/mlton/basic/string1.sml
U mlton/trunk/lib/mlton/basic/substring.sig
U mlton/trunk/lib/mlton/basic/substring.sml
U mlton/trunk/lib/mlton/basic/sum.sig
U mlton/trunk/lib/mlton/basic/t.sig
U mlton/trunk/lib/mlton/basic/tab.sml
U mlton/trunk/lib/mlton/basic/time.sig
U mlton/trunk/lib/mlton/basic/time.sml
U mlton/trunk/lib/mlton/basic/trace.sig
U mlton/trunk/lib/mlton/basic/trace.sml
U mlton/trunk/lib/mlton/basic/tree.sig
U mlton/trunk/lib/mlton/basic/tree.sml
U mlton/trunk/lib/mlton/basic/unique-id.fun
U mlton/trunk/lib/mlton/basic/unique-set.fun
U mlton/trunk/lib/mlton/basic/unique-set.sig
U mlton/trunk/lib/mlton/basic/url.sig
U mlton/trunk/lib/mlton/basic/url.sml
U mlton/trunk/lib/mlton/basic/vector.fun
U mlton/trunk/lib/mlton/basic/vector.sig
U mlton/trunk/lib/mlton/basic/word.sig
U mlton/trunk/lib/mlton/basic/word.sml
U mlton/trunk/lib/mlton/directed-graph/shortest-path-check.fun
U mlton/trunk/lib/mlton/directed-graph/shortest-path-check.sig
U mlton/trunk/lib/mlton/directed-graph/shortest-path.sig
U mlton/trunk/lib/mlton/directed-graph/sources.cm
U mlton/trunk/lib/mlton/env/array-finite-function.fun
U mlton/trunk/lib/mlton/env/basic-env-to-env.fun
U mlton/trunk/lib/mlton/env/cache.fun
U mlton/trunk/lib/mlton/env/cache.sig
U mlton/trunk/lib/mlton/env/finite-function.fun
U mlton/trunk/lib/mlton/env/finite-function.sig
U mlton/trunk/lib/mlton/env/mono-env.fun
U mlton/trunk/lib/mlton/env/mono-env.sig
U mlton/trunk/lib/mlton/env/move-to-front.fun
U mlton/trunk/lib/mlton/env/poly-cache-ref.fun
U mlton/trunk/lib/mlton/env/poly-cache.fun
U mlton/trunk/lib/mlton/env/poly-cache.sig
U mlton/trunk/lib/mlton/env/splay-env.fun
U mlton/trunk/lib/mlton/heap/binary.fun
U mlton/trunk/lib/mlton/heap/binomial.fun
U mlton/trunk/lib/mlton/heap/fibonacci.fun
U mlton/trunk/lib/mlton/heap/forest.fun
U mlton/trunk/lib/mlton/heap/forest.sig
U mlton/trunk/lib/mlton/heap/heap.sig
U mlton/trunk/lib/mlton/heap/test.sml
U mlton/trunk/lib/mlton/pervasive/pervasive.sml
U mlton/trunk/lib/mlton/queue/append-reverse.fun
U mlton/trunk/lib/mlton/queue/append-reverse.sig
U mlton/trunk/lib/mlton/queue/circular.fun
U mlton/trunk/lib/mlton/queue/early.fun
U mlton/trunk/lib/mlton/queue/ephemeral.fun
U mlton/trunk/lib/mlton/queue/explicit-append-reverse.fun
U mlton/trunk/lib/mlton/queue/incremental-append-reverse.fun
U mlton/trunk/lib/mlton/queue/incremental.fun
U mlton/trunk/lib/mlton/queue/lazy-append-reverse.fun
U mlton/trunk/lib/mlton/queue/linked-list.fun
U mlton/trunk/lib/mlton/queue/list.fun
U mlton/trunk/lib/mlton/queue/persistent.fun
U mlton/trunk/lib/mlton/queue/persistent.sig
U mlton/trunk/lib/mlton/queue/queue.fun
U mlton/trunk/lib/mlton/queue/test.sml
U mlton/trunk/lib/mlton/queue/two-list.fun
U mlton/trunk/lib/mlton/queue/unbounded-ephemeral.sig
U mlton/trunk/lib/mlton/set/disjoint-collection.fun
U mlton/trunk/lib/mlton/set/disjoint-collection.sig
U mlton/trunk/lib/mlton/set/disjoint-max.fun
U mlton/trunk/lib/mlton/set/disjoint-max.sig
U mlton/trunk/lib/mlton/set/disjoint.fun
U mlton/trunk/lib/mlton/set/disjoint.sig
U mlton/trunk/lib/mlton/set/hashed-unique-set.fun
U mlton/trunk/lib/mlton/set/object-oriented.sml
U mlton/trunk/lib/mlton/set/ordered-unique-set.fun
U mlton/trunk/lib/mlton/set/poly-set.sig
U mlton/trunk/lib/mlton/set/poly-unordered.fun
U mlton/trunk/lib/mlton/set/poly-unordered2.fun
U mlton/trunk/lib/mlton/set/set.sig
U mlton/trunk/lib/mlton/set/test.sml
U mlton/trunk/lib/mlton/set/type.sig
U mlton/trunk/lib/mlton/set/universe-equal.fun
U mlton/trunk/lib/mlton/set/universe-type-check.fun
U mlton/trunk/lib/mlton/set/universe.sig
U mlton/trunk/lib/mlton/set/unordered-universe.fun
U mlton/trunk/lib/mlton/set/unordered.fun
U mlton/trunk/lib/mlton/sources.cm
U mlton/trunk/lib/mlton/sources.mlb
U mlton/trunk/lib/mlton-stubs/array.sig
U mlton/trunk/lib/mlton-stubs/bin-io.sml
U mlton/trunk/lib/mlton-stubs/int-inf.sig
U mlton/trunk/lib/mlton-stubs/io.sig
U mlton/trunk/lib/mlton-stubs/mlton.sml
U mlton/trunk/lib/mlton-stubs/platform.sig
U mlton/trunk/lib/mlton-stubs/process.sig
U mlton/trunk/lib/mlton-stubs/random.sig
U mlton/trunk/lib/mlton-stubs/random.sml
U mlton/trunk/lib/mlton-stubs/real.sml
U mlton/trunk/lib/mlton-stubs/rlimit.sig
U mlton/trunk/lib/mlton-stubs/rusage.sig
U mlton/trunk/lib/mlton-stubs/signal.sig
U mlton/trunk/lib/mlton-stubs/syslog.sig
U mlton/trunk/lib/mlton-stubs/thread.sig
U mlton/trunk/lib/mlton-stubs/vector.sig
U mlton/trunk/lib/mlton-stubs/word.sig
U mlton/trunk/lib/mlton-stubs-in-smlnj/array.sml
U mlton/trunk/lib/mlton-stubs-in-smlnj/char.sml
U mlton/trunk/lib/mlton-stubs-in-smlnj/import.cm
U mlton/trunk/lib/mlton-stubs-in-smlnj/int-inf.sml
U mlton/trunk/lib/mlton-stubs-in-smlnj/os.sml
U mlton/trunk/lib/mlton-stubs-in-smlnj/real.sml
U mlton/trunk/lib/mlton-stubs-in-smlnj/socket.sml
U mlton/trunk/lib/mlton-stubs-in-smlnj/sources.cm
U mlton/trunk/lib/mlton-stubs-in-smlnj/word.sml
U mlton/trunk/lib/smlnj-lib/Makefile
U mlton/trunk/man/mlton.1
_U mlton/trunk/mllex/
U mlton/trunk/mllex/.ignore
U mlton/trunk/mllex/Makefile
_U mlton/trunk/mlnlffigen/
U mlton/trunk/mlnlffigen/.ignore
U mlton/trunk/mlnlffigen/Makefile
_U mlton/trunk/mlprof/
U mlton/trunk/mlprof/.ignore
U mlton/trunk/mlprof/Makefile
U mlton/trunk/mlprof/main.sml
U mlton/trunk/mlprof/sources.cm
_U mlton/trunk/mlton/
U mlton/trunk/mlton/.ignore
U mlton/trunk/mlton/Makefile
U mlton/trunk/mlton/ast/admits-equality.fun
U mlton/trunk/mlton/ast/admits-equality.sig
U mlton/trunk/mlton/ast/ast-atoms.fun
U mlton/trunk/mlton/ast/ast-atoms.sig
U mlton/trunk/mlton/ast/ast-const.fun
U mlton/trunk/mlton/ast/ast-core.fun
U mlton/trunk/mlton/ast/ast-core.sig
U mlton/trunk/mlton/ast/ast-mlbs.fun
U mlton/trunk/mlton/ast/ast-mlbs.sig
U mlton/trunk/mlton/ast/ast-modules.fun
U mlton/trunk/mlton/ast/ast-modules.sig
U mlton/trunk/mlton/ast/ast-programs.fun
U mlton/trunk/mlton/ast/char-size.fun
U mlton/trunk/mlton/ast/char-size.sig
U mlton/trunk/mlton/ast/field.fun
U mlton/trunk/mlton/ast/field.sig
U mlton/trunk/mlton/ast/int-size.fun
U mlton/trunk/mlton/ast/int-size.sig
U mlton/trunk/mlton/ast/longid.fun
U mlton/trunk/mlton/ast/prim-cons.fun
U mlton/trunk/mlton/ast/prim-tycons.fun
U mlton/trunk/mlton/ast/prim-tycons.sig
U mlton/trunk/mlton/ast/real-size.fun
U mlton/trunk/mlton/ast/real-size.sig
U mlton/trunk/mlton/ast/record.fun
U mlton/trunk/mlton/ast/record.sig
U mlton/trunk/mlton/ast/sources.cm
U mlton/trunk/mlton/ast/symbol.fun
U mlton/trunk/mlton/ast/symbol.sig
U mlton/trunk/mlton/ast/tycon-kind.fun
U mlton/trunk/mlton/ast/tycon-kind.sig
U mlton/trunk/mlton/ast/tyvar.fun
U mlton/trunk/mlton/ast/word-size.fun
U mlton/trunk/mlton/ast/word-size.sig
U mlton/trunk/mlton/atoms/atoms.sig
U mlton/trunk/mlton/atoms/c-function.fun
U mlton/trunk/mlton/atoms/c-function.sig
U mlton/trunk/mlton/atoms/c-type.fun
U mlton/trunk/mlton/atoms/cases.sig
U mlton/trunk/mlton/atoms/con-.fun
U mlton/trunk/mlton/atoms/const-type.fun
U mlton/trunk/mlton/atoms/const-type.sig
U mlton/trunk/mlton/atoms/const.fun
U mlton/trunk/mlton/atoms/const.sig
U mlton/trunk/mlton/atoms/ffi.fun
U mlton/trunk/mlton/atoms/ffi.sig
U mlton/trunk/mlton/atoms/generic-scheme.fun
U mlton/trunk/mlton/atoms/hash-type.fun
U mlton/trunk/mlton/atoms/id.fun
U mlton/trunk/mlton/atoms/prim.fun
U mlton/trunk/mlton/atoms/prim.sig
U mlton/trunk/mlton/atoms/profile-exp.sig
U mlton/trunk/mlton/atoms/profile-label.fun
U mlton/trunk/mlton/atoms/profile-label.sig
U mlton/trunk/mlton/atoms/real-x.fun
U mlton/trunk/mlton/atoms/real-x.sig
U mlton/trunk/mlton/atoms/source-info.fun
U mlton/trunk/mlton/atoms/source-info.sig
U mlton/trunk/mlton/atoms/sources.cm
U mlton/trunk/mlton/atoms/tycon.fun
U mlton/trunk/mlton/atoms/type-ops.fun
U mlton/trunk/mlton/atoms/type-ops.sig
U mlton/trunk/mlton/atoms/unary-tycon.fun
U mlton/trunk/mlton/atoms/unary-tycon.sig
U mlton/trunk/mlton/atoms/var.fun
U mlton/trunk/mlton/atoms/word-x-vector.fun
U mlton/trunk/mlton/atoms/word-x-vector.sig
U mlton/trunk/mlton/atoms/word-x.fun
U mlton/trunk/mlton/atoms/word-x.sig
U mlton/trunk/mlton/backend/allocate-registers.fun
U mlton/trunk/mlton/backend/allocate-registers.sig
U mlton/trunk/mlton/backend/backend.fun
U mlton/trunk/mlton/backend/backend.sig
U mlton/trunk/mlton/backend/chunkify.fun
U mlton/trunk/mlton/backend/equivalence-graph.fun
U mlton/trunk/mlton/backend/equivalence-graph.sig
U mlton/trunk/mlton/backend/err.sml
U mlton/trunk/mlton/backend/implement-handlers.fun
U mlton/trunk/mlton/backend/implement-handlers.sig
U mlton/trunk/mlton/backend/limit-check.fun
U mlton/trunk/mlton/backend/limit-check.sig
U mlton/trunk/mlton/backend/live.fun
U mlton/trunk/mlton/backend/machine.fun
U mlton/trunk/mlton/backend/machine.sig
U mlton/trunk/mlton/backend/object-type.sig
U mlton/trunk/mlton/backend/packed-representation.fun
U mlton/trunk/mlton/backend/pointer-tycon.fun
U mlton/trunk/mlton/backend/pointer-tycon.sig
U mlton/trunk/mlton/backend/profile.fun
U mlton/trunk/mlton/backend/profile.sig
U mlton/trunk/mlton/backend/rep-type.fun
U mlton/trunk/mlton/backend/representation.sig
U mlton/trunk/mlton/backend/rssa.fun
U mlton/trunk/mlton/backend/rssa.sig
U mlton/trunk/mlton/backend/runtime.fun
U mlton/trunk/mlton/backend/runtime.sig
U mlton/trunk/mlton/backend/scale.sig
U mlton/trunk/mlton/backend/signal-check.sig
U mlton/trunk/mlton/backend/small-int-inf.fun
U mlton/trunk/mlton/backend/small-int-inf.sig
U mlton/trunk/mlton/backend/sources.cm
U mlton/trunk/mlton/backend/ssa-to-rssa.fun
U mlton/trunk/mlton/backend/ssa-to-rssa.sig
U mlton/trunk/mlton/backend/switch.fun
U mlton/trunk/mlton/backend/switch.sig
U mlton/trunk/mlton/closure-convert/abstract-value.fun
U mlton/trunk/mlton/closure-convert/abstract-value.sig
U mlton/trunk/mlton/closure-convert/closure-convert.sig
U mlton/trunk/mlton/closure-convert/globalize.sig
U mlton/trunk/mlton/closure-convert/sources.cm
U mlton/trunk/mlton/cm/parse.sml
U mlton/trunk/mlton/codegen/bytecode/bytecode.sig
U mlton/trunk/mlton/codegen/c-codegen/c-codegen.fun
U mlton/trunk/mlton/codegen/sources.cm
U mlton/trunk/mlton/codegen/x86-codegen/peephole.fun
U mlton/trunk/mlton/codegen/x86-codegen/peephole.sig
U mlton/trunk/mlton/codegen/x86-codegen/x86-allocate-registers.fun
U mlton/trunk/mlton/codegen/x86-codegen/x86-codegen.fun
U mlton/trunk/mlton/codegen/x86-codegen/x86-generate-transfers.fun
U mlton/trunk/mlton/codegen/x86-codegen/x86-jump-info.fun
U mlton/trunk/mlton/codegen/x86-codegen/x86-live-transfers.fun
U mlton/trunk/mlton/codegen/x86-codegen/x86-liveness.fun
U mlton/trunk/mlton/codegen/x86-codegen/x86-loop-info.fun
U mlton/trunk/mlton/codegen/x86-codegen/x86-loop-info.sig
U mlton/trunk/mlton/codegen/x86-codegen/x86-mlton-basic.fun
U mlton/trunk/mlton/codegen/x86-codegen/x86-mlton-basic.sig
U mlton/trunk/mlton/codegen/x86-codegen/x86-mlton.fun
U mlton/trunk/mlton/codegen/x86-codegen/x86-pseudo.sig
U mlton/trunk/mlton/codegen/x86-codegen/x86-simplify.fun
U mlton/trunk/mlton/codegen/x86-codegen/x86-translate.fun
U mlton/trunk/mlton/codegen/x86-codegen/x86.fun
U mlton/trunk/mlton/codegen/x86-codegen/x86.sig
U mlton/trunk/mlton/control/bits.sml
U mlton/trunk/mlton/control/control-flags.sig
U mlton/trunk/mlton/control/control-flags.sml
U mlton/trunk/mlton/control/control.sig
U mlton/trunk/mlton/control/control.sml
U mlton/trunk/mlton/control/pretty.sml
U mlton/trunk/mlton/control/region.sig
U mlton/trunk/mlton/control/region.sml
U mlton/trunk/mlton/control/source-pos.sig
U mlton/trunk/mlton/control/source.sig
U mlton/trunk/mlton/control/source.sml
U mlton/trunk/mlton/control/sources.cm
U mlton/trunk/mlton/control/system.sig
U mlton/trunk/mlton/core-ml/core-ml.fun
U mlton/trunk/mlton/defunctorize/defunctorize.fun
U mlton/trunk/mlton/elaborate/decs.sig
U mlton/trunk/mlton/elaborate/elaborate-core.fun
U mlton/trunk/mlton/elaborate/elaborate-env.fun
U mlton/trunk/mlton/elaborate/elaborate-env.sig
U mlton/trunk/mlton/elaborate/elaborate-mlbs.fun
U mlton/trunk/mlton/elaborate/elaborate-sigexp.fun
U mlton/trunk/mlton/elaborate/interface.fun
U mlton/trunk/mlton/elaborate/interface.sig
U mlton/trunk/mlton/elaborate/precedence-parse.fun
U mlton/trunk/mlton/elaborate/precedence-parse.sig
U mlton/trunk/mlton/elaborate/type-env.fun
U mlton/trunk/mlton/elaborate/type-env.sig
U mlton/trunk/mlton/front-end/front-end.fun
U mlton/trunk/mlton/front-end/front-end.sig
U mlton/trunk/mlton/front-end/ml.grm
U mlton/trunk/mlton/front-end/ml.lex
U mlton/trunk/mlton/front-end/mlb-front-end.fun
U mlton/trunk/mlton/front-end/mlb-front-end.sig
U mlton/trunk/mlton/front-end/mlb.grm
U mlton/trunk/mlton/front-end/mlb.lex
U mlton/trunk/mlton/front-end/sources.cm
U mlton/trunk/mlton/front-end/sources.mlb
U mlton/trunk/mlton/main/compile.fun
U mlton/trunk/mlton/main/lookup-constant.fun
U mlton/trunk/mlton/main/lookup-constant.sig
U mlton/trunk/mlton/main/main.fun
U mlton/trunk/mlton/main/main.sig
U mlton/trunk/mlton/match-compile/match-compile.fun
U mlton/trunk/mlton/match-compile/match-compile.sig
U mlton/trunk/mlton/match-compile/nested-pat.fun
U mlton/trunk/mlton/match-compile/nested-pat.sig
U mlton/trunk/mlton/match-compile/sources.cm
U mlton/trunk/mlton/ssa/analyze.fun
U mlton/trunk/mlton/ssa/analyze.sig
U mlton/trunk/mlton/ssa/analyze2.fun
U mlton/trunk/mlton/ssa/analyze2.sig
U mlton/trunk/mlton/ssa/common-arg.fun
U mlton/trunk/mlton/ssa/common-arg.sig
U mlton/trunk/mlton/ssa/common-block.fun
U mlton/trunk/mlton/ssa/common-block.sig
U mlton/trunk/mlton/ssa/common-subexp.fun
U mlton/trunk/mlton/ssa/common-subexp.sig
U mlton/trunk/mlton/ssa/constant-propagation.fun
U mlton/trunk/mlton/ssa/constant-propagation.sig
U mlton/trunk/mlton/ssa/contify.fun
U mlton/trunk/mlton/ssa/contify.sig
U mlton/trunk/mlton/ssa/deep-flatten.fun
U mlton/trunk/mlton/ssa/deep-flatten.sig
U mlton/trunk/mlton/ssa/direct-exp.fun
U mlton/trunk/mlton/ssa/direct-exp2.fun
U mlton/trunk/mlton/ssa/equatable.sml
U mlton/trunk/mlton/ssa/flat-lattice.fun
U mlton/trunk/mlton/ssa/flat-lattice.sig
U mlton/trunk/mlton/ssa/flatten.fun
U mlton/trunk/mlton/ssa/flatten.sig
U mlton/trunk/mlton/ssa/global.sig
U mlton/trunk/mlton/ssa/inline.sig
U mlton/trunk/mlton/ssa/introduce-loops.sig
U mlton/trunk/mlton/ssa/known-case.fun
U mlton/trunk/mlton/ssa/known-case.sig
U mlton/trunk/mlton/ssa/local-flatten.fun
U mlton/trunk/mlton/ssa/loop-invariant.sig
U mlton/trunk/mlton/ssa/multi.fun
U mlton/trunk/mlton/ssa/n-point-lattice.fun
U mlton/trunk/mlton/ssa/poly-equal.sig
U mlton/trunk/mlton/ssa/prepasses.fun
U mlton/trunk/mlton/ssa/redundant-tests.fun
U mlton/trunk/mlton/ssa/redundant-tests.sig
U mlton/trunk/mlton/ssa/redundant.fun
U mlton/trunk/mlton/ssa/redundant.sig
U mlton/trunk/mlton/ssa/ref-flatten.fun
U mlton/trunk/mlton/ssa/ref-flatten.sig
U mlton/trunk/mlton/ssa/remove-unused.fun
U mlton/trunk/mlton/ssa/remove-unused.sig
U mlton/trunk/mlton/ssa/remove-unused2.fun
U mlton/trunk/mlton/ssa/remove-unused2.sig
U mlton/trunk/mlton/ssa/restore.fun
U mlton/trunk/mlton/ssa/restore2.fun
U mlton/trunk/mlton/ssa/shrink.fun
U mlton/trunk/mlton/ssa/shrink2.fun
U mlton/trunk/mlton/ssa/simplify-types.sig
U mlton/trunk/mlton/ssa/simplify.fun
U mlton/trunk/mlton/ssa/simplify.sig
U mlton/trunk/mlton/ssa/simplify2.sig
U mlton/trunk/mlton/ssa/ssa-to-ssa2.sig
U mlton/trunk/mlton/ssa/ssa-tree.fun
U mlton/trunk/mlton/ssa/ssa-tree.sig
U mlton/trunk/mlton/ssa/ssa-tree2.fun
U mlton/trunk/mlton/ssa/ssa-tree2.sig
U mlton/trunk/mlton/ssa/three-point-lattice.fun
U mlton/trunk/mlton/ssa/three-point-lattice.sig
U mlton/trunk/mlton/ssa/two-point-lattice.fun
U mlton/trunk/mlton/ssa/two-point-lattice.sig
U mlton/trunk/mlton/ssa/type-check.fun
U mlton/trunk/mlton/ssa/type-check.sig
U mlton/trunk/mlton/ssa/type-check2.fun
U mlton/trunk/mlton/ssa/type-check2.sig
U mlton/trunk/mlton/ssa/useless.fun
U mlton/trunk/mlton/ssa/useless.sig
U mlton/trunk/mlton/ssa/zone.fun
U mlton/trunk/mlton/ssa/zone.sig
U mlton/trunk/mlton/xml/call-count.fun
U mlton/trunk/mlton/xml/implement-exceptions.sig
U mlton/trunk/mlton/xml/implement-suffix.sig
U mlton/trunk/mlton/xml/monomorphise.sig
U mlton/trunk/mlton/xml/polyvariance.fun
U mlton/trunk/mlton/xml/polyvariance.sig
U mlton/trunk/mlton/xml/scc-funs.sig
U mlton/trunk/mlton/xml/shrink.fun
U mlton/trunk/mlton/xml/shrink.sig
U mlton/trunk/mlton/xml/simplify-types.sig
U mlton/trunk/mlton/xml/sxml-simplify.fun
U mlton/trunk/mlton/xml/sxml-simplify.sig
U mlton/trunk/mlton/xml/type-check.sig
U mlton/trunk/mlton/xml/uncurry.fun
U mlton/trunk/mlton/xml/uncurry.sig
U mlton/trunk/mlton/xml/xml-simplify.fun
U mlton/trunk/mlton/xml/xml-simplify.sig
U mlton/trunk/mlton/xml/xml-tree.fun
U mlton/trunk/mlton/xml/xml-tree.sig
U mlton/trunk/mlton/xml/xml-type.sig
_U mlton/trunk/mlyacc/
U mlton/trunk/mlyacc/.ignore
U mlton/trunk/mlyacc/Makefile
U mlton/trunk/package/debian/control
U mlton/trunk/package/mingw/mlton.bat
U mlton/trunk/regression/Makefile
A mlton/trunk/regression/exnHistory.x86-mingw.ok
A mlton/trunk/regression/exnHistory3.x86-mingw.ok
A mlton/trunk/regression/nextAfter.ok
A mlton/trunk/regression/nextAfter.sml
U mlton/trunk/regression/real.ok
U mlton/trunk/regression/rlimit.sml
_U mlton/trunk/runtime/
U mlton/trunk/runtime/.ignore
U mlton/trunk/runtime/Makefile
D mlton/trunk/runtime/Posix/
D mlton/trunk/runtime/assert.h
D mlton/trunk/runtime/basis/Array/
D mlton/trunk/runtime/basis/CommandLine.c
D mlton/trunk/runtime/basis/Date.c
D mlton/trunk/runtime/basis/Debug.c
D mlton/trunk/runtime/basis/GC.c
D mlton/trunk/runtime/basis/IEEEReal.c
D mlton/trunk/runtime/basis/Int/
D mlton/trunk/runtime/basis/IntInf.c
D mlton/trunk/runtime/basis/Itimer/
A mlton/trunk/runtime/basis/MLton/Itimer/
A mlton/trunk/runtime/basis/MLton/Process/
A mlton/trunk/runtime/basis/MLton/Rlimit/
A mlton/trunk/runtime/basis/MLton/Rusage/
A mlton/trunk/runtime/basis/MLton/Syslog/
D mlton/trunk/runtime/basis/MLton/allocTooLarge.c
U mlton/trunk/runtime/basis/MLton/bug.c
D mlton/trunk/runtime/basis/MLton/errno.c
D mlton/trunk/runtime/basis/MLton/exit.c
D mlton/trunk/runtime/basis/MLton/profile.c
D mlton/trunk/runtime/basis/MLton/rlimit.c
D mlton/trunk/runtime/basis/MLton/rusage.c
D mlton/trunk/runtime/basis/MLton/share.c
D mlton/trunk/runtime/basis/MLton/size.c
D mlton/trunk/runtime/basis/MLton/spawne.c
D mlton/trunk/runtime/basis/MLton/spawnp.c
D mlton/trunk/runtime/basis/MLton/world.c
U mlton/trunk/runtime/basis/Net/Net.c
A mlton/trunk/runtime/basis/Net/NetHostDB-consts.c
U mlton/trunk/runtime/basis/Net/NetHostDB.c
U mlton/trunk/runtime/basis/Net/NetProtDB.c
U mlton/trunk/runtime/basis/Net/NetServDB.c
A mlton/trunk/runtime/basis/Net/Socket/GenericSock.c
A mlton/trunk/runtime/basis/Net/Socket/INetSock-consts.c
U mlton/trunk/runtime/basis/Net/Socket/INetSock.c
A mlton/trunk/runtime/basis/Net/Socket/Socket-consts.c
U mlton/trunk/runtime/basis/Net/Socket/Socket.c
U mlton/trunk/runtime/basis/Net/Socket/UnixSock.c
D mlton/trunk/runtime/basis/OS/
D mlton/trunk/runtime/basis/PackReal.c
A mlton/trunk/runtime/basis/Posix/
D mlton/trunk/runtime/basis/Ptrace.c
_U mlton/trunk/runtime/basis/Real/
A mlton/trunk/runtime/basis/Real/.ignore
A mlton/trunk/runtime/basis/Real/IEEEReal-consts.c
A mlton/trunk/runtime/basis/Real/IEEEReal.c
A mlton/trunk/runtime/basis/Real/Math-fns.h
U mlton/trunk/runtime/basis/Real/Math.c
A mlton/trunk/runtime/basis/Real/PackReal.c
A mlton/trunk/runtime/basis/Real/Real-consts.c
A mlton/trunk/runtime/basis/Real/Real-ops.h
A mlton/trunk/runtime/basis/Real/Real.c
U mlton/trunk/runtime/basis/Real/class.c
D mlton/trunk/runtime/basis/Real/frexp.c
U mlton/trunk/runtime/basis/Real/gdtoa.c
D mlton/trunk/runtime/basis/Real/modf.c
U mlton/trunk/runtime/basis/Real/nextAfter.c
D mlton/trunk/runtime/basis/Real/real.c
U mlton/trunk/runtime/basis/Real/signBit.c
U mlton/trunk/runtime/basis/Real/strto.c
U mlton/trunk/runtime/basis/Stdio.c
A mlton/trunk/runtime/basis/System/
D mlton/trunk/runtime/basis/Thread.c
D mlton/trunk/runtime/basis/Time.c
A mlton/trunk/runtime/basis/Word/
A mlton/trunk/runtime/basis/coerce.c
A mlton/trunk/runtime/basis/coerce.h
A mlton/trunk/runtime/basis-ffi.h
A mlton/trunk/runtime/bytecode/
A mlton/trunk/runtime/cenv.h
A mlton/trunk/runtime/gc/
U mlton/trunk/runtime/gc.c
U mlton/trunk/runtime/gc.h
U mlton/trunk/runtime/gdtoa-patch
A mlton/trunk/runtime/gen/
U mlton/trunk/runtime/platform/aix.c
U mlton/trunk/runtime/platform/aix.h
A mlton/trunk/runtime/platform/alpha.h
A mlton/trunk/runtime/platform/amd64.h
A mlton/trunk/runtime/platform/arm.h
U mlton/trunk/runtime/platform/cygwin.c
U mlton/trunk/runtime/platform/cygwin.h
U mlton/trunk/runtime/platform/darwin.c
U mlton/trunk/runtime/platform/darwin.h
A mlton/trunk/runtime/platform/diskBack.unix.c
A mlton/trunk/runtime/platform/displayMem.linux.c
U mlton/trunk/runtime/platform/feround.h
A mlton/trunk/runtime/platform/float-math.c
A mlton/trunk/runtime/platform/float-math.h
U mlton/trunk/runtime/platform/freebsd.c
U mlton/trunk/runtime/platform/freebsd.h
U mlton/trunk/runtime/platform/getText.c
D mlton/trunk/runtime/platform/getrusage.c
A mlton/trunk/runtime/platform/hppa.h
U mlton/trunk/runtime/platform/hpux.c
U mlton/trunk/runtime/platform/hpux.h
A mlton/trunk/runtime/platform/ia64.h
U mlton/trunk/runtime/platform/linux.c
U mlton/trunk/runtime/platform/linux.h
A mlton/trunk/runtime/platform/m68k.h
U mlton/trunk/runtime/platform/mingw.c
U mlton/trunk/runtime/platform/mingw.h
A mlton/trunk/runtime/platform/mips.h
A mlton/trunk/runtime/platform/mmap-protect.c
U mlton/trunk/runtime/platform/mmap.c
U mlton/trunk/runtime/platform/netbsd.c
U mlton/trunk/runtime/platform/netbsd.h
A mlton/trunk/runtime/platform/nonwin.c
U mlton/trunk/runtime/platform/openbsd.c
U mlton/trunk/runtime/platform/openbsd.h
A mlton/trunk/runtime/platform/powerpc.h
U mlton/trunk/runtime/platform/recv.nonblock.c
A mlton/trunk/runtime/platform/s390.h
U mlton/trunk/runtime/platform/setenv.putenv.c
D mlton/trunk/runtime/platform/showMem.linux.c
D mlton/trunk/runtime/platform/signbit.c
U mlton/trunk/runtime/platform/solaris.c
U mlton/trunk/runtime/platform/solaris.h
A mlton/trunk/runtime/platform/sparc.h
D mlton/trunk/runtime/platform/ssmmap.c
A mlton/trunk/runtime/platform/sysconf.c
A mlton/trunk/runtime/platform/sysctl.c
D mlton/trunk/runtime/platform/totalRam.sysconf.c
D mlton/trunk/runtime/platform/totalRam.sysctl.c
U mlton/trunk/runtime/platform/use-mmap.c
U mlton/trunk/runtime/platform/windows.c
A mlton/trunk/runtime/platform/x86.h
U mlton/trunk/runtime/platform.c
U mlton/trunk/runtime/platform.h
D mlton/trunk/runtime/types.h
A mlton/trunk/runtime/util/
A mlton/trunk/runtime/util.c
A mlton/trunk/runtime/util.h
U mlton/trunk/util/cm2mlb/cm2mlb.sml
U mlton/trunk/util/cm2mlb/sources.cm
U mlton/trunk/util/cmcat/cmcat.sml
U mlton/trunk/util/cmcat/sources.cm
----------------------------------------------------------------------
Modified: mlton/trunk/Makefile
===================================================================
--- mlton/trunk/Makefile 2006-12-02 17:15:22 UTC (rev 4897)
+++ mlton/trunk/Makefile 2006-12-02 19:06:13 UTC (rev 4898)
@@ -39,7 +39,7 @@
# If we're compiling with another version of MLton, then we want to do
# another round of compilation so that we get a MLton built without
# stubs.
-ifeq (other, $(shell if [ ! -x $(BIN)/mlton ]; then echo other; fi))
+ifeq (other, $(shell if [ ! -x "$(BIN)/mlton" ]; then echo other; fi))
BOOTSTRAP_OTHER:=true
else
BOOTSTRAP_OTHER:=false
@@ -64,19 +64,19 @@
# because they may be better than those that were used for the first
# round of compilation. So, we clean out the front end.
ifeq (true, $(BOOTSTRAP_OTHER))
- rm -f $(COMP)/$(AOUT)$(EXE)
- $(MAKE) -C $(COMP)/front-end clean
+ rm -f "$(COMP)/$(AOUT)$(EXE)"
+ $(MAKE) -C "$(COMP)/front-end" clean
endif
$(MAKE) compiler world
@echo 'Build of MLton succeeded.'
.PHONY: basis-no-check
basis-no-check:
- mkdir -p $(LIB)/sml
- rm -rf $(LIB)/sml/basis
- $(CP) $(SRC)/basis-library/. $(LIB)/sml/basis
- find $(LIB)/sml/basis -type d -name .svn | xargs rm -rf
- find $(LIB)/sml/basis -type f -name .ignore | xargs rm -rf
+ mkdir -p "$(LIB)/sml"
+ rm -rf "$(LIB)/sml/basis"
+ $(CP) "$(SRC)/basis-library/." "$(LIB)/sml/basis"
+ find "$(LIB)/sml/basis" -type d -name .svn | xargs rm -rf
+ find "$(LIB)/sml/basis" -type f -name .ignore | xargs rm -rf
.PHONY: basis
basis:
@@ -102,15 +102,15 @@
.PHONY: compiler
compiler:
- $(MAKE) -C $(COMP)
- $(CP) $(COMP)/$(AOUT)$(EXE) $(LIB)/
+ $(MAKE) -C "$(COMP)"
+ $(CP) "$(COMP)/$(AOUT)$(EXE)" "$(LIB)/"
.PHONY: constants
constants:
@echo 'Creating constants file.'
- $(BIN)/mlton -build-constants true >tmp.c
- $(BIN)/mlton -output tmp tmp.c
- ./tmp >$(LIB)/$(TARGET)/constants
+ "$(BIN)/mlton" -build-constants true >tmp.c
+ "$(BIN)/mlton" -output tmp tmp.c
+ ./tmp >"$(LIB)/$(TARGET)/constants"
rm -f tmp tmp.c
DEBSRC := mlton-$(VERSION).orig
@@ -151,12 +151,12 @@
.PHONY: dirs
dirs:
- mkdir -p $(BIN) $(LIB)/$(TARGET) $(INC)
+ mkdir -p "$(BIN)" "$(LIB)/$(TARGET)/include" "$(INC)"
.PHONY: docs
docs: dirs
- $(MAKE) -C $(LEX) docs
- $(MAKE) -C $(YACC) docs
+ $(MAKE) -C "$(LEX)" docs
+ $(MAKE) -C "$(YACC)" docs
if htmldoc --version >/dev/null 2>&1; then \
bin/make-pdf-guide; \
fi
@@ -165,32 +165,32 @@
.PHONY: freebsd
freebsd:
$(MAKE) clean clean-svn version
- rm -rf $(BSDSRC)
- mkdir -p $(BSDSRC)
- ( cd $(SRC) && tar -cpf - . ) | ( cd $(BSDSRC) && tar -xpf - )
+ rm -rf "$(BSDSRC)"
+ mkdir -p "$(BSDSRC)"
+ ( cd $(SRC) && tar -cpf - . ) | ( cd "$(BSDSRC)" && tar -xpf - )
cd /tmp && tar -cpf - mlton-$(VERSION) | \
$(GZIP) >/usr/ports/distfiles/mlton-$(VERSION)-$(RELEASE).freebsd.src.tgz
# do not change "make" to "$(MAKE)" in the following line
- cd $(BSDSRC)/package/freebsd && MAINTAINER_MODE=yes make build-package
+ cd "$(BSDSRC)/package/freebsd" && MAINTAINER_MODE=yes make build-package
LIBRARIES := ckit-lib cml mlnlffi-lib mlyacc-lib smlnj-lib
.PHONY: libraries-no-check
libraries-no-check:
- mkdir -p $(LIB)/sml
- cd $(LIB)/sml && rm -rf $(LIBRARIES)
- $(MAKE) -C $(SRC)/lib/ckit-lib
- $(MAKE) -C $(SRC)/lib/mlrisc-lib
- $(MAKE) -C $(SRC)/lib/smlnj-lib
- $(CP) $(SRC)/lib/cml/. $(LIB)/sml/cml
- $(CP) $(SRC)/lib/ckit-lib/ckit/. $(LIB)/sml/ckit-lib
- $(CP) $(SRC)/lib/mlnlffi/. $(LIB)/sml/mlnlffi-lib
- true || $(CP) $(SRC)/lib/mlrisc-lib/MLRISC/. $(LIB)/sml/mlrisc-lib
- $(CP) $(SRC)/lib/mlyacc/. $(LIB)/sml/mlyacc-lib
- $(CP) $(SRC)/lib/smlnj-lib/smlnj-lib/. $(LIB)/sml/smlnj-lib
- find $(LIB)/sml -type d -name .cm | xargs rm -rf
- find $(LIB)/sml -type d -name .svn | xargs rm -rf
- find $(LIB)/sml -type f -name .ignore | xargs rm -rf
+ mkdir -p "$(LIB)/sml"
+ cd "$(LIB)/sml" && rm -rf $(LIBRARIES)
+ $(MAKE) -C "$(SRC)/lib/ckit-lib"
+ $(MAKE) -C "$(SRC)/lib/mlrisc-lib"
+ $(MAKE) -C "$(SRC)/lib/smlnj-lib"
+ $(CP) "$(SRC)/lib/cml/." "$(LIB)/sml/cml"
+ $(CP) "$(SRC)/lib/ckit-lib/ckit/." "$(LIB)/sml/ckit-lib"
+ $(CP) "$(SRC)/lib/mlnlffi/." "$(LIB)/sml/mlnlffi-lib"
+ true || $(CP) "$(SRC)/lib/mlrisc-lib/MLRISC/." "$(LIB)/sml/mlrisc-lib"
+ $(CP) "$(SRC)/lib/mlyacc/." "$(LIB)/sml/mlyacc-lib"
+ $(CP) "$(SRC)/lib/smlnj-lib/smlnj-lib/." "$(LIB)/sml/smlnj-lib"
+ find "$(LIB)/sml" -type d -name .cm | xargs rm -rf
+ find "$(LIB)/sml" -type d -name .svn | xargs rm -rf
+ find "$(LIB)/sml" -type f -name .ignore | xargs rm -rf
.PHONY: libraries
libraries:
@@ -206,149 +206,151 @@
.PHONY: nj-mlton
nj-mlton:
$(MAKE) dirs runtime
- $(MAKE) -C $(COMP) nj-mlton
+ $(MAKE) -C "$(COMP)" nj-mlton
$(MAKE) script basis-no-check mlbpathmap targetmap constants libraries-no-check
@echo 'Build of MLton succeeded.'
.PHONY: nj-mlton-dual
nj-mlton-dual:
$(MAKE) dirs runtime
- $(MAKE) -C $(COMP) nj-mlton-dual
+ $(MAKE) -C "$(COMP)" nj-mlton-dual
$(MAKE) script basis-no-check mlbpathmap targetmap constants libraries-no-check
@echo 'Build of MLton succeeded.'
.PHONY: nj-mlton-quad
nj-mlton-quad:
$(MAKE) dirs runtime
- $(MAKE) -C $(COMP) nj-mlton-quad
+ $(MAKE) -C "$(COMP)" nj-mlton-quad
$(MAKE) script basis-no-check mlbpathmap targetmap constants libraries-no-check
@echo 'Build of MLton succeeded.'
.PHONY: mlbpathmap
mlbpathmap:
- touch $(MLBPATHMAP)
+ touch "$(MLBPATHMAP)"
( echo 'MLTON_ROOT $$(LIB_MLTON_DIR)/sml'; \
- echo 'SML_LIB $$(LIB_MLTON_DIR)/sml' ) \
- >>$(MLBPATHMAP).tmp
- mv $(MLBPATHMAP).tmp $(MLBPATHMAP)
+ echo 'SML_LIB $$(LIB_MLTON_DIR)/sml'; ) \
+ >>"$(MLBPATHMAP).tmp"
+ mv "$(MLBPATHMAP).tmp" "$(MLBPATHMAP)"
.PHONY: traced
traced:
- $(MAKE) -C $(COMP) AOUT=$(AOUT).trace COMPILE_ARGS="-const 'Exn.keepHistory true' -const 'MLton.debug true' -drop-pass 'deepFlatten'"
- $(CP) $(COMP)/$(AOUT).trace $(LIB)/
- $(LIB)/$(AOUT).trace @MLton -- $(LIB)/world.trace
- sed 's/mlton-compile/mlton-compile.trace/' < $(MLTON) | sed 's/world.mlton/world.trace.mlton/' > $(MLTON).trace
- chmod a+x $(MLTON).trace
+ $(MAKE) -C "$(COMP)" "AOUT=$(AOUT).trace" COMPILE_ARGS="-const 'Exn.keepHistory true' -const 'MLton.debug true' -drop-pass 'deepFlatten'"
+ $(CP) "$(COMP)/$(AOUT).trace" "$(LIB)/"
+ "$(LIB)/$(AOUT).trace" @MLton -- "$(LIB)/world.trace"
+ sed 's/mlton-compile/mlton-compile.trace/' < "$(MLTON)" | sed 's/world.mlton/world.trace.mlton/' > "$(MLTON).trace"
+ chmod a+x "$(MLTON).trace"
.PHONY: debugged
debugged:
- $(MAKE) -C $(COMP) AOUT=$(AOUT).debug COMPILE_ARGS="-debug true -const 'Exn.keepHistory true' -const 'MLton.debug true' -drop-pass 'deepFlatten'"
- $(CP) $(COMP)/$(AOUT).debug $(LIB)/
- $(LIB)/$(AOUT).debug @MLton -- $(LIB)/world.debug
- sed 's/mlton-compile/mlton-compile.debug/' < $(MLTON) | sed 's/world.mlton/world.debug.mlton/' > $(MLTON).debug
- chmod a+x $(MLTON).debug
+ $(MAKE) -C "$(COMP)" "AOUT=$(AOUT).debug" COMPILE_ARGS="-debug true -const 'Exn.keepHistory true' -const 'MLton.debug true' -drop-pass 'deepFlatten'"
+ $(CP) "$(COMP)/$(AOUT).debug" "$(LIB)/"
+ "$(LIB)/$(AOUT).debug" @MLton -- "$(LIB)/world.debug"
+ sed 's/mlton-compile/mlton-compile.debug/' < "$(MLTON)" | sed 's/world.mlton/world.debug.mlton/' > "$(MLTON).debug"
+ chmod a+x "$(MLTON).debug"
.PHONY: profiled
profiled:
- $(MAKE) -C $(COMP) AOUT=$(AOUT).alloc COMPILE_ARGS="-profile alloc"
- $(CP) $(COMP)/$(AOUT).alloc $(LIB)/
- $(MAKE) -C $(COMP) AOUT=$(AOUT).count COMPILE_ARGS="-profile count"
- $(CP) $(COMP)/$(AOUT).count $(LIB)/
- $(MAKE) -C $(COMP) AOUT=$(AOUT).time COMPILE_ARGS="-profile time"
- $(CP) $(COMP)/$(AOUT).time $(LIB)/
- $(LIB)/$(AOUT).alloc @MLton -- $(LIB)/world.alloc
- $(LIB)/$(AOUT).count @MLton -- $(LIB)/world.count
- $(LIB)/$(AOUT).time @MLton -- $(LIB)/world.time
- sed 's/mlton-compile/mlton-compile.alloc/' < $(MLTON) | sed 's/world.mlton/world.alloc.mlton/' > $(MLTON).alloc
- sed 's/mlton-compile/mlton-compile.count/' < $(MLTON) | sed 's/world.mlton/world.count.mlton/' > $(MLTON).count
- sed 's/mlton-compile/mlton-compile.time/' < $(MLTON) | sed 's/world.mlton/world.time.mlton/' > $(MLTON).time
- chmod a+x $(MLTON).alloc
- chmod a+x $(MLTON).count
- chmod a+x $(MLTON).time
+ for t in alloc count time; do \
+ $(MAKE) -C "$(COMP)" "AOUT=$(AOUT).$$t" \
+ COMPILE_ARGS="-profile $$t"; \
+ $(CP) "$(COMP)/$(AOUT).$$t" "$(LIB)/"; \
+ "$(LIB)/$(AOUT).$$t" @MLton -- "$(LIB)/world.$$t"; \
+ sed "s/mlton-compile/mlton-compile.$$t/" \
+ <"$(MLTON)" | \
+ sed "s/world.mlton/world.$$t.mlton/" \
+ >"$(MLTON).$$t"; \
+ chmod a+x "$(MLTON).$$t"; \
+ done
TOPDIR := 'TOPDIR-unset'
SOURCEDIR := $(TOPDIR)/SOURCES/mlton-$(VERSION)
.PHONY: rpms
rpms:
$(MAKE) clean clean-svn version
- mkdir -p $(TOPDIR)
- cd $(TOPDIR) && mkdir -p BUILD RPMS/i386 SOURCES SPECS SRPMS
- rm -rf $(SOURCEDIR)
- mkdir -p $(SOURCEDIR)
- ( cd $(SRC) && tar -cpf - . ) | ( cd $(SOURCEDIR) && tar -xpf - )
- $(CP) $(SOURCEDIR)/$(SPEC) $(TOPDIR)/SPECS/mlton.spec
- ( cd $(TOPDIR)/SOURCES && tar -cpf - mlton-$(VERSION) ) \
- | $(GZIP) >$(SOURCEDIR).tgz
- rm -rf $(SOURCEDIR)
- rpm -ba --quiet --clean $(TOPDIR)/SPECS/mlton.spec
+ mkdir -p "$(TOPDIR)"
+ cd "$(TOPDIR)" && mkdir -p BUILD RPMS/i386 SOURCES SPECS SRPMS
+ rm -rf "$(SOURCEDIR)"
+ mkdir -p "$(SOURCEDIR)"
+ ( cd "$(SRC)" && tar -cpf - . ) | ( cd "$(SOURCEDIR)" && tar -xpf - )
+ $(CP) "$(SOURCEDIR)/$(SPEC)" "$(TOPDIR)/SPECS/mlton.spec"
+ ( cd "$(TOPDIR)/SOURCES" && tar -cpf - mlton-$(VERSION) ) \
+ | $(GZIP) >"$(SOURCEDIR).tgz"
+ rm -rf "$(SOURCEDIR)"
+ rpm -ba --quiet --clean "$(TOPDIR)/SPECS/mlton.spec"
.PHONY: runtime
runtime:
@echo 'Compiling MLton runtime system for $(TARGET).'
$(MAKE) -C runtime
- $(CP) $(RUN)/*.a $(LIB)/$(TARGET)/
- $(CP) runtime/*.h include/*.h $(INC)/
- mkdir -p $(INC)/platform
- $(CP) bytecode/interpret.h $(INC)
- $(CP) runtime/platform/*.h $(INC)/platform
- $(MAKE) -C bytecode
- bytecode/print-opcodes >$(LIB)/opcodes
- ar r $(LIB)/$(TARGET)/libmlton.a bytecode/interpret.o
- ar r $(LIB)/$(TARGET)/libmlton-gdb.a bytecode/interpret-gdb.o
- for x in $(LIB)/$(TARGET)/*.a; do $(RANLIB) $$x; done
+ $(CP) include/*.h "$(INC)/"
+ $(CP) runtime/*.a "$(LIB)/$(TARGET)/"
+ mkdir -p "$(SRC)/basis-library/config/c/$(TARGET_ARCH)-$(TARGET_OS)"
+ $(CP) runtime/gen/c-types.sml \
+ basis-library/config/c/$(TARGET_ARCH)-$(TARGET_OS)/c-types.sml
+ $(CP) runtime/gen/basis-ffi.sml \
+ basis-library/primitive/basis-ffi.sml
+ $(CP) runtime/bytecode/opcodes "$(LIB)/"
+ $(CP) runtime/*.h "$(INC)/"
+ mv "$(INC)/c-types.h" "$(LIB)/$(TARGET)/include"
+ for d in basis basis/Real basis/Word gc platform util; do \
+ mkdir -p "$(INC)/$$d"; \
+ $(CP) runtime/$$d/*.h "$(INC)/$$d"; \
+ done
+ $(CP) runtime/bytecode/interpret.h "$(INC)"
+ for x in "$(LIB)"/"$(TARGET)"/*.a; do $(RANLIB) "$$x"; done
.PHONY: script
script:
- $(CP) bin/mlton-script $(MLTON)
- chmod a+x $(MLTON)
- $(CP) $(SRC)/bin/platform $(LIB)
+ $(CP) bin/mlton-script "$(MLTON)"
+ chmod a+x "$(MLTON)"
+ $(CP) "$(SRC)/bin/platform" "$(LIB)"
.PHONY: targetmap
targetmap:
- touch $(TARGETMAP)
- ( sed '/$(TARGET)/d' <$(TARGETMAP); \
+ touch "$(TARGETMAP)"
+ ( sed '/$(TARGET)/d' <"$(TARGETMAP)"; \
echo '$(TARGET) $(TARGET_ARCH) $(TARGET_OS)' ) \
- >>$(TARGETMAP).tmp
- mv $(TARGETMAP).tmp $(TARGETMAP)
+ >>"$(TARGETMAP).tmp"
+ mv "$(TARGETMAP).tmp" "$(TARGETMAP)"
.PHONY: tools
tools:
- $(MAKE) -C $(LEX)
- $(MAKE) -C $(NLFFIGEN)
- $(MAKE) -C $(PROF)
- $(MAKE) -C $(YACC)
- $(CP) $(LEX)/$(LEX)$(EXE) \
- $(NLFFIGEN)/$(NLFFIGEN)$(EXE) \
- $(PROF)/$(PROF)$(EXE) \
- $(YACC)/$(YACC)$(EXE) \
- $(BIN)/
+ $(MAKE) -C "$(LEX)"
+ $(MAKE) -C "$(NLFFIGEN)"
+ $(MAKE) -C "$(PROF)"
+ $(MAKE) -C "$(YACC)"
+ $(CP) "$(LEX)/$(LEX)$(EXE)" \
+ "$(NLFFIGEN)/$(NLFFIGEN)$(EXE)" \
+ "$(PROF)/$(PROF)$(EXE)" \
+ "$(YACC)/$(YACC)$(EXE)" \
+ "$(BIN)/"
.PHONY: version
version:
@echo 'Instantiating version numbers.'
for f in \
package/debian/changelog \
- $(SPEC) \
+ "$(SPEC)" \
package/freebsd/Makefile \
mlton/control/control-flags.sml; \
do \
- sed "s/\(.*\)MLTONVERSION\(.*\)/\1$(VERSION)\2/" <$$f >z && \
- mv z $$f; \
+ sed "s/\(.*\)MLTONVERSION\(.*\)/\1$(VERSION)\2/" <"$$f" >z && \
+ mv z "$$f"; \
done
- sed <$(SPEC) >z "/^Release:/s;.*;Release: $(RELEASE);"
- mv z $(SPEC)
+ sed <"$(SPEC)" >z "/^Release:/s;.*;Release: $(RELEASE);"
+ mv z "$(SPEC)"
.PHONY: world-no-check
world-no-check:
@echo 'Making world.'
$(MAKE) basis-no-check
- $(LIB)/$(AOUT)$(EXE) @MLton -- $(LIB)/world
+ "$(LIB)/$(AOUT)$(EXE)" @MLton -- "$(LIB)/world"
.PHONY: world
world:
$(MAKE) world-no-check
@echo 'Type checking basis.'
- $(MLTON) -disable-ann deadCode \
+ "$(MLTON)" -disable-ann deadCode \
-stop tc \
'$$(SML_LIB)/basis/libs/all.mlb' \
>/dev/null
@@ -402,65 +404,65 @@
.PHONY: install-no-docs
install-no-docs:
- mkdir -p $(TLIB) $(TBIN) $(TMAN)
- $(CP) $(LIB)/. $(TLIB)/
- rm -f $(TLIB)/self/libmlton-gdb.a
+ mkdir -p "$(TLIB)" "$(TBIN)" "$(TMAN)"
+ $(CP) "$(LIB)/." "$(TLIB)/"
+ rm -f "$(TLIB)/self/libmlton-gdb.a"
sed "/^lib=/s;.*;lib='$(prefix)/$(ULIB)';" \
- <$(SRC)/bin/mlton-script >$(TBIN)/mlton
- chmod a+x $(TBIN)/mlton
- cd $(BIN) && $(CP) $(LEX)$(EXE) $(NLFFIGEN)$(EXE) \
- $(PROF)$(EXE) $(YACC)$(EXE) $(TBIN)/
- ( cd $(SRC)/man && tar cf - $(MAN_PAGES)) | \
- ( cd $(TMAN)/ && tar xf - )
+ <"$(SRC)/bin/mlton-script" >"$(TBIN)/mlton"
+ chmod a+x "$(TBIN)/mlton"
+ cd "$(BIN)" && $(CP) "$(LEX)$(EXE)" "$(NLFFIGEN)$(EXE)" \
+ "$(PROF)$(EXE)" "$(YACC)$(EXE)" "$(TBIN)/"
+ ( cd "$(SRC)/man" && tar cf - $(MAN_PAGES)) | \
+ ( cd "$(TMAN)/" && tar xf - )
if $(GZIP_MAN); then \
- cd $(TMAN) && $(GZIP) $(MAN_PAGES); \
+ cd "$(TMAN)" && $(GZIP) $(MAN_PAGES); \
fi
case "$(TARGET_OS)" in \
aix|cygwin|darwin|solaris) \
;; \
*) \
- for f in $(TLIB)/$(AOUT)$(EXE) $(TBIN)/$(LEX)$(EXE) \
- $(TBIN)/$(NLFFIGEN)$(EXE) $(TBIN)/$(PROF)$(EXE) \
- $(TBIN)/$(YACC)$(EXE); do \
+ for f in "$(TLIB)/$(AOUT)$(EXE)" "$(TBIN)/$(LEX)$(EXE)" \
+ "$(TBIN)/$(NLFFIGEN)$(EXE)" "$(TBIN)/$(PROF)$(EXE)" \
+ "$(TBIN)/$(YACC)$(EXE)"; do \
strip --remove-section=.comment \
- --remove-section=.note $$f; \
+ --remove-section=.note "$$f"; \
done \
esac
.PHONY: install-docs
install-docs:
- mkdir -p $(TDOC)
+ mkdir -p "$(TDOC)"
( \
- cd $(SRC)/doc && \
- $(CP) changelog examples guide license README $(TDOC)/ \
+ cd "$(SRC)/doc" && \
+ $(CP) changelog examples guide license README "$(TDOC)/" \
)
- mv $(TDOC)/guide/mlton-guide.pdf $(TDOC)/
+ mv "$(TDOC)/guide/mlton-guide.pdf" "$(TDOC)/"
( \
- cd $(SRC)/util && \
- $(CP) cmcat cm2mlb $(TDOC)/ \
+ cd "$(SRC)/util" && \
+ $(CP) cmcat cm2mlb "$(TDOC)/" \
)
for f in callcc command-line hello-world same-fringe signals \
size taut thread1 thread2 thread-switch timeout \
; do \
- $(CP) $(SRC)/regression/$$f.sml $(TEXM)/; \
+ $(CP) "$(SRC)/regression/$$f.sml" "$(TEXM)/"; \
done
$(CP) $(LEX)/$(LEX).pdf $(TDOC)
$(CP) $(YACC)/$(YACC).pdf $(TDOC)
- find $(TDOC)/ -name .svn -type d | xargs rm -rf
- find $(TDOC)/ -name .ignore -type f | xargs rm -rf
- find $(TEXM)/ -name .svn -type d | xargs rm -rf
- find $(TEXM)/ -name .ignore -type f | xargs rm -rf
+ find "$(TDOC)/" -name .svn -type d | xargs rm -rf
+ find "$(TDOC)/" -name .ignore -type f | xargs rm -rf
+ find "$(TEXM)/" -name .svn -type d | xargs rm -rf
+ find "$(TEXM)/" -name .ignore -type f | xargs rm -rf
TDOCBASE := $(DESTDIR)$(prefix)/share/doc-base
.PHONY: post-install-debian
post-install-debian:
- cd $(TDOC)/ && rm -rf license
- $(CP) $(SRC)/debian/copyright $(SRC)/debian/README.Debian $(TDOC)/
- $(CP) $(SRC)/debian/changelog $(TDOC)/changelog.Debian
+ cd "$(TDOC)/" && rm -rf license
+ $(CP) "$(SRC)/debian/copyright" "$(SRC)/debian/README.Debian" "$(TDOC)/"
+ $(CP) "$(SRC)/debian/changelog" "$(TDOC)/changelog.Debian"
mkdir -p $(TDOCBASE)
for f in mllex mlton mlyacc; do \
- $(CP) $(SRC)/debian/$$f.doc-base $(TDOCBASE)/$$f; \
+ $(CP) "$(SRC)/debian/$$f.doc-base" "$(TDOCBASE)/$$f"; \
done
- cd $(TDOC)/ && $(GZIP) changelog changelog.Debian
- chown -R root.root $(TDOC) $(TLIB)
+ cd "$(TDOC)/" && $(GZIP) changelog changelog.Debian
+ chown -R root.root "$(TDOC)" "$(TLIB)"
Modified: mlton/trunk/basis-library/Makefile
===================================================================
--- mlton/trunk/basis-library/Makefile 2006-12-02 17:15:22 UTC (rev 4897)
+++ mlton/trunk/basis-library/Makefile 2006-12-02 19:06:13 UTC (rev 4898)
@@ -6,9 +6,62 @@
# See the file MLton-LICENSE for details.
##
+SRC = $(shell cd .. && pwd)
+BUILD = $(SRC)/build
+BIN = $(BUILD)/bin
+MLTON = mlton
+PATH = $(BIN):$(shell echo $$PATH)
+
all:
.PHONY: clean
clean:
find . -type f | egrep '.(old|ast|core-ml)$$' | xargs rm -f
../bin/clean
+
+
+OBJPTR_MAPS = objptr-rep32.map objptr-rep64.map
+HEADER_MAPS = header-word32.map header-word64.map
+SEQINDEX_MAPS = seqindex-int32.map seqindex-int64.map
+TARGET_ARCH = amd64 hppa powerpc sparc x86
+TARGET_OS = cygwin darwin freebsd hpux linux mingw netbsd openbsd solaris
+DEFAULT_CHAR = char8
+DEFAULT_INT = int32 int64 intinf
+DEFAULT_REAL = real32 real64
+DEFAULT_WORD = word32 word64
+
+.PHONY: type-check-def
+type-check-def:
+ "$(MLTON)" -disable-ann deadCode -stop tc -show-types true \
+ libs/all.mlb;
+
+.PHONY: type-check-all
+type-check-all:
+ for objptrrep in $(OBJPTR_MAPS); do \
+ for header in $(HEADER_MAPS); do \
+ for seqindex in $(SEQINDEX_MAPS); do \
+ for defchar in $(DEFAULT_CHAR); do \
+ for defint in $(DEFAULT_INT); do \
+ for defreal in $(DEFAULT_REAL); do \
+ for defword in $(DEFAULT_WORD); do \
+ for targetarch in $(TARGET_ARCH); do \
+ for targetos in $(TARGET_OS); do \
+ if [ ! -r config/c/$$targetarch-$$targetos/c-types.sml ]; then \
+ continue; \
+ fi; \
+ echo "Type checking: $$objptrrep $$header $$seqindex $$targetarch $$targetos $$defchar $$defint $$defreal $$defword"; \
+ rm -f target.map; \
+ ( echo "TARGET_ARCH $$targetarch"; \
+ echo "TARGET_OS $$targetos"; ) > target.map; \
+ "$(MLTON)" -disable-ann deadCode -stop tc -show-types true \
+ -mlb-path-map "maps/$$objptrrep" \
+ -mlb-path-map "maps/$$header" \
+ -mlb-path-map "maps/$$seqindex" \
+ -mlb-path-map "target.map" \
+ -default-type "$$defchar" \
+ -default-type "$$defint" \
+ -default-type "$$defreal" \
+ -default-type "$$defword" \
+ libs/all.mlb; \
+ rm -f target.map; \
+ done; done; done; done; done; done; done; done; done
Modified: mlton/trunk/basis-library/README
===================================================================
--- mlton/trunk/basis-library/README 2006-12-02 17:15:22 UTC (rev 4897)
+++ mlton/trunk/basis-library/README 2006-12-02 19:06:13 UTC (rev 4898)
@@ -11,7 +11,7 @@
posix/primitve.sml
These are not Standard ML. They describe all of the primitives and
C routines used in the basis.
-
+
top-level/overloads.sml
Not Standard ML.
Uses the notation _overload <var> : <ty> as <var> (and <var>)*
@@ -30,6 +30,6 @@
declarations from the basis so that there are no free variables in the
user program (or basis). It has a special hack to include all
bindings of the form
-
+
val _ = ...
Modified: mlton/trunk/basis-library/arrays-and-vectors/array-slice.sig
===================================================================
--- mlton/trunk/basis-library/arrays-and-vectors/array-slice.sig 2006-12-02 17:15:22 UTC (rev 4897)
+++ mlton/trunk/basis-library/arrays-and-vectors/array-slice.sig 2006-12-02 19:06:13 UTC (rev 4898)
@@ -1,3 +1,8 @@
+structure Array =
+ struct
+ type 'a array = 'a array
+ end
+
signature ARRAY_SLICE_GLOBAL =
sig
end
@@ -43,8 +48,15 @@
val concat: 'a slice list -> 'a array
val toList: 'a slice -> 'a list
+ val slice': 'a array * SeqIndex.int * SeqIndex.int option -> 'a slice
+ val unsafeSlice': 'a array * SeqIndex.int * SeqIndex.int option -> 'a slice
val unsafeSlice: 'a array * int * int option -> 'a slice
+ val sub': 'a slice * SeqIndex.int -> 'a
+ val unsafeSub': 'a slice * SeqIndex.int -> 'a
val unsafeSub: 'a slice * int -> 'a
+ val unsafeSubslice': 'a slice * SeqIndex.int * SeqIndex.int option -> 'a slice
val unsafeSubslice: 'a slice * int * int option -> 'a slice
+ val update': 'a slice * SeqIndex.int * 'a -> unit
+ val unsafeUpdate': 'a slice * SeqIndex.int * 'a -> unit
val unsafeUpdate: 'a slice * int * 'a -> unit
end
Modified: mlton/trunk/basis-library/arrays-and-vectors/array.sig
===================================================================
--- mlton/trunk/basis-library/arrays-and-vectors/array.sig 2006-12-02 17:15:22 UTC (rev 4897)
+++ mlton/trunk/basis-library/arrays-and-vectors/array.sig 2006-12-02 19:06:13 UTC (rev 4898)
@@ -40,11 +40,16 @@
structure ArraySlice: ARRAY_SLICE_EXTRA
+ val arrayUninit': SeqIndex.int -> 'a array
+ val arrayUninit: int -> 'a array
+ val array': SeqIndex.int * 'a -> 'a array
+ val unsafeSub': 'a array * SeqIndex.int -> 'a
+ val unsafeSub: 'a array * int -> 'a
+ val unsafeUpdate': 'a array * SeqIndex.int * 'a -> unit
+ val unsafeUpdate: 'a array * int * 'a -> unit
+
val concat: 'a array list -> 'a array
val duplicate: 'a array -> 'a array
- val rawArray: int -> 'a array
val toList: 'a array -> 'a list
val unfoldi: int * 'b * (int * 'b -> 'a * 'b) -> 'a array * 'b
- val unsafeSub: 'a array * int -> 'a
- val unsafeUpdate: 'a array * int * 'a -> unit
end
Modified: mlton/trunk/basis-library/arrays-and-vectors/array.sml
===================================================================
--- mlton/trunk/basis-library/arrays-and-vectors/array.sml 2006-12-02 17:15:22 UTC (rev 4897)
+++ mlton/trunk/basis-library/arrays-and-vectors/array.sml 2006-12-02 19:06:13 UTC (rev 4898)
@@ -13,28 +13,43 @@
val fromArray = fn a => a
val isMutable = true
val length = Primitive.Array.length
- val sub = Primitive.Array.sub)
+ val subUnsafe = Primitive.Array.subUnsafe)
open A
- open Primitive.Int
+ val op +? = Int.+?
+ val op + = Int.+
+ val op -? = Int.-?
+ val op - = Int.-
+ val op < = Int.<
+ val op <= = Int.<=
+ val op > = Int.>
+ val op >= = Int.>=
+
+ fun wrap2 f = fn (i, x) => f (SeqIndex.toIntUnsafe i, x)
+
type 'a array = 'a array
type 'a vector = 'a Vector.vector
structure ArraySlice =
struct
open Slice
+ fun update' (arr, i, x) =
+ updateMk' Primitive.Array.updateUnsafe (arr, i, x)
fun update (arr, i, x) =
- update' Primitive.Array.update (arr, i, x)
+ updateMk Primitive.Array.updateUnsafe (arr, i, x)
+ fun unsafeUpdate' (arr, i, x) =
+ unsafeUpdateMk' Primitive.Array.updateUnsafe (arr, i, x)
fun unsafeUpdate (arr, i, x) =
- unsafeUpdate' Primitive.Array.update (arr, i, x)
- fun vector sl = create Vector.tabulate (fn x => x) sl
- fun modifyi f sl =
- appi (fn (i, x) => unsafeUpdate (sl, i, f (i, x))) sl
+ unsafeUpdateMk Primitive.Array.updateUnsafe (arr, i, x)
+ fun vector sl = create Vector.tabulate' (fn x => x) sl
+ fun modifyi' f sl =
+ appi' (fn (i, x) => unsafeUpdate' (sl, i, f (i, x))) sl
+ fun modifyi f sl = modifyi' (wrap2 f) sl
fun modify f sl = modifyi (f o #2) sl
local
- fun make (length, sub) {src, dst, di} =
- modifyi (fn (i, _) => sub (src, i))
- (slice (dst, di, SOME (length src)))
+ fun make (length, sub') {src, dst, di} =
+ modifyi' (fn (i, _) => sub' (src, i))
+ (slice (dst, di, SOME (length src)))
in
fun copy (arg as {src, dst, di}) =
let val (src', si', len') = base src
@@ -42,25 +57,23 @@
if src' = dst andalso si' < di andalso si' +? len' >= di
then let val sl = slice (dst, di, SOME (length src))
in
- foldri (fn (i, _, _) =>
- unsafeUpdate (sl, i, unsafeSub (src, i)))
+ foldri' (fn (i, _, _) =>
+ unsafeUpdate' (sl, i, unsafeSub' (src, i)))
() sl
end
- else make (length, unsafeSub) arg
+ else make (length, unsafeSub') arg
end
fun copyVec arg =
- make (Vector.VectorSlice.length, Vector.VectorSlice.unsafeSub) arg
+ make (Vector.VectorSlice.length, Vector.VectorSlice.unsafeSub') arg
end
end
- val rawArray = Primitive.Array.array
- val array = new
-
local
fun make f arr = f (ArraySlice.full arr)
in
fun vector arr = make (ArraySlice.vector) arr
+ fun modifyi' f = make (ArraySlice.modifyi' f)
fun modifyi f = make (ArraySlice.modifyi f)
fun modify f = make (ArraySlice.modify f)
fun copy {src, dst, di} = ArraySlice.copy {src = ArraySlice.full src,
@@ -69,9 +82,15 @@
dst = dst, di = di}
end
- val unsafeSub = Primitive.Array.sub
- fun update (arr, i, x) = update' Primitive.Array.update (arr, i, x)
- val unsafeUpdate = Primitive.Array.update
+ val arrayUninit' = newUninit'
+ val arrayUninit = newUninit
+ val array' = new'
+ val array = new
+
+ fun update' (arr, i, x) = updateMk' Primitive.Array.updateUnsafe (arr, i, x)
+ fun update (arr, i, x) = updateMk Primitive.Array.updateUnsafe (arr, i, x)
+ fun unsafeUpdate' (arr, i, x) = unsafeUpdateMk' Primitive.Array.updateUnsafe (arr, i, x)
+ fun unsafeUpdate (arr, i, x) = unsafeUpdateMk Primitive.Array.updateUnsafe (arr, i, x)
end
structure ArraySlice: ARRAY_SLICE_EXTRA = Array.ArraySlice
Modified: mlton/trunk/basis-library/arrays-and-vectors/array2.sml
===================================================================
--- mlton/trunk/basis-library/arrays-and-vectors/array2.sml 2006-12-02 17:15:22 UTC (rev 4897)
+++ mlton/trunk/basis-library/arrays-and-vectors/array2.sml 2006-12-02 19:06:13 UTC (rev 4898)
@@ -6,105 +6,203 @@
* See the file MLton-LICENSE for details.
*)
-structure Array2: ARRAY2 =
+structure Array2 (* : ARRAY2 *) =
struct
- open Primitive.Int
- (* I am careful to use a type here instead of a datatype so that
- * 'a array will be an equality type irrespective of whether 'a is.
- * This is probably just an NJ-ism, but I don't want to think about it.
- *)
- type 'a array = {rows: int,
- cols: int,
- array: 'a Array.array}
+ val op +? = SeqIndex.+?
+ val op + = SeqIndex.+
+ val op -? = SeqIndex.-?
+ val op - = SeqIndex.-
+ val op *? = SeqIndex.*?
+ val op * = SeqIndex.*
+ val op < = SeqIndex.<
+ val op <= = SeqIndex.<=
+ val op > = SeqIndex.>
+ val op >= = SeqIndex.>=
+ val ltu = SeqIndex.ltu
+ val leu = SeqIndex.leu
+ val gtu = SeqIndex.gtu
+ val geu = SeqIndex.geu
- fun dimensions ({rows, cols, ...}: 'a array) = (rows, cols)
- fun nRows ({rows, ...}: 'a array) = rows
- fun nCols ({cols, ...}: 'a array) = cols
+ type 'a array = {array: 'a Array.array,
+ rows: SeqIndex.int,
+ cols: SeqIndex.int}
+ fun dimensions' ({rows, cols, ...}: 'a array) = (rows, cols)
+ fun dimensions ({rows, cols, ...}: 'a array) =
+ (SeqIndex.toIntUnsafe rows, SeqIndex.toIntUnsafe cols)
+ fun nRows' ({rows, ...}: 'a array) = rows
+ fun nRows ({rows, ...}: 'a array) = SeqIndex.toIntUnsafe rows
+ fun nCols' ({cols, ...}: 'a array) = cols
+ fun nCols ({cols, ...}: 'a array) = SeqIndex.toIntUnsafe cols
+
type 'a region = {base: 'a array,
row: int,
col: int,
nrows: int option,
ncols: int option}
- fun checkSliceMax (start: int, num: int option, max: int): int =
- case num of
- NONE =>
- if Primitive.safe andalso (start < 0 orelse start > max) then
- raise Subscript
- else
- max
- | SOME num =>
- if Primitive.safe
- andalso (start < 0
- orelse num < 0
- orelse start > max -? num) then
- raise Subscript
- else
- start +? num
+ local
+ fun checkSliceMax' (start: int,
+ num: SeqIndex.int option,
+ max: SeqIndex.int): SeqIndex.int * SeqIndex.int =
+ case num of
+ NONE => if Primitive.Controls.safe
+ then let
+ val start =
+ (SeqIndex.fromInt start)
+ handle Overflow => raise Subscript
+ in
+ if gtu (start, max)
+ then raise Subscript
+ else (start, max)
+ end
+ else (SeqIndex.fromIntUnsafe start, max)
+ | SOME num => if Primitive.Controls.safe
+ then let
+ val start =
+ (SeqIndex.fromInt start)
+ handle Overflow => raise Subscript
+ in
+ if (start < 0 orelse num < 0
+ orelse start +? num > max)
+ then raise Subscript
+ else (start, start +? num)
+ end
+ else (SeqIndex.fromIntUnsafe start,
+ SeqIndex.fromIntUnsafe start +? num)
+ fun checkSliceMax (start: int,
+ num: int option,
+ max: SeqIndex.int): SeqIndex.int * SeqIndex.int =
+ if Primitive.Controls.safe
+ then (checkSliceMax' (start, Option.map SeqIndex.fromInt num, max))
+ handle Overflow => raise Subscript
+ else checkSliceMax' (start, Option.map SeqIndex.fromIntUnsafe num, max)
+ in
+ fun checkRegion' {base, row, col, nrows, ncols} =
+ let
+ val (rows, cols) = dimensions' base
+ val (startRow, stopRow) = checkSliceMax' (row, nrows, rows)
+ val (startCol, stopCol) = checkSliceMax' (col, ncols, cols)
+ in
+ {startRow = startRow, stopRow = stopRow,
+ startCol = startCol, stopCol = stopCol}
+ end
+ fun checkRegion {base, row, col, nrows, ncols} =
+ let
+ val (rows, cols) = dimensions' base
+ val (startRow, stopRow) = checkSliceMax (row, nrows, rows)
+ val (startCol, stopCol) = checkSliceMax (col, ncols, cols)
+ in
+ {startRow = startRow, stopRow = stopRow,
+ startCol = startCol, stopCol = stopCol}
+ end
+ end
- fun checkRegion {base, row, col, nrows, ncols} =
- let
- val (rows, cols) = dimensions base
- in
- {stopRow = checkSliceMax (row, nrows, rows),
- stopCol = checkSliceMax (col, ncols, cols)}
- end
-
- fun wholeRegion (a: 'a array): 'a region =
+ fun wholeRegion (a as {rows, cols, ...}: 'a array): 'a region =
{base = a, row = 0, col = 0, nrows = NONE, ncols = NONE}
datatype traversal = RowMajor | ColMajor
local
fun make (rows, cols, doit) =
- if Primitive.safe andalso (rows < 0 orelse cols < 0)
+ if Primitive.Controls.safe
+ andalso (rows < 0 orelse cols < 0)
then raise Size
- else {rows = rows,
- cols = cols,
- array = doit (rows * cols handle Overflow => raise Size)}
+ else {array = doit (rows * cols handle Overflow => raise Size),
+ rows = rows,
+ cols = cols}
in
+ fun arrayUninit' (rows, cols) =
+ make (rows, cols, Array.arrayUninit')
+ fun array' (rows, cols, init) =
+ make (rows, cols, fn size => Array.array' (size, init))
+ end
+ local
+ fun make (rows, cols, doit) =
+ if Primitive.Controls.safe
+ then let
+ val rows =
+ (SeqIndex.fromInt rows)
+ handle Overflow => raise Size
+ val cols =
+ (SeqIndex.fromInt cols)
+ handle Overflow => raise Size
+ in
+ doit (rows, cols)
+ end
+ else doit (SeqIndex.fromIntUnsafe rows,
+ SeqIndex.fromIntUnsafe cols)
+ in
fun arrayUninit (rows, cols) =
- make (rows, cols, Primitive.Array.array)
+ make (rows, cols, fn (rows, cols) => arrayUninit' (rows, cols))
fun array (rows, cols, init) =
- make (rows, cols, fn size => Array.array (size, init))
+ make (rows, cols, fn (rows, cols) => array' (rows, cols, init))
end
fun array0 (): 'a array =
- {rows = 0,
- cols = 0,
- array = Primitive.Array.array 0}
+ {array = Array.arrayUninit' 0,
+ rows = 0,
+ cols = 0}
- fun spot ({rows, cols, ...}: 'a array, r, c) =
- if Primitive.safe andalso (geu (r, rows) orelse geu (c, cols))
+ fun unsafeSpot' (a as {cols, ...}: 'a array, r, c) =
+ r *? cols +? c
+ fun spot' (a as {rows, cols, ...}: 'a array, r, c) =
+ if Primitive.Controls.safe
+ andalso (geu (r, rows) orelse geu (c, cols))
then raise Subscript
- else r *? cols +? c
-
- fun sub (a as {array, ...}: 'a array, r, c) =
- Primitive.Array.sub (array, spot (a, r, c))
+ else unsafeSpot' (a, r, c)
- fun update (a as {array, ...}: 'a array, r, c, x) =
- Primitive.Array.update (array, spot (a, r, c), x)
+ fun unsafeSub' (a as {array, ...}: 'a array, r, c) =
+ Array.unsafeSub' (array, unsafeSpot' (a, r, c))
+ fun sub' (a as {array, ...}: 'a array, r, c) =
+ Array.unsafeSub' (array, spot' (a, r, c))
+ fun unsafeUpdate' (a as {array, ...}: 'a array, r, c, x) =
+ Array.unsafeUpdate' (array, unsafeSpot' (a, r, c), x)
+ fun update' (a as {array, ...}: 'a array, r, c, x) =
+ Array.unsafeUpdate' (array, spot' (a, r, c), x)
+ local
+ fun make (r, c, doit) =
+ if Primitive.Controls.safe
+ then let
+ val r =
+ (SeqIndex.fromInt r)
+ handle Overflow => raise Subscript
+ val c =
+ (SeqIndex.fromInt c)
+ handle Overflow => raise Subscript
+ in
+ doit (r, c)
+ end
+ else doit (SeqIndex.fromIntUnsafe r,
+ SeqIndex.fromIntUnsafe c)
+ in
+ fun sub (a, r, c) =
+ make (r, c, fn (r, c) => sub' (a, r, c))
+ fun update (a, r, c, x) =
+ make (r, c, fn (r, c) => update' (a, r, c, x))
+ end
+
fun 'a fromList (rows: 'a list list): 'a array =
case rows of
[] => array0 ()
| row1 :: _ =>
let
val cols = length row1
- val a as {array, ...} = arrayUninit (length rows, cols)
+ val a as {array, rows = rows', cols = cols', ...} =
+ arrayUninit (length rows, cols)
val _ =
List.foldl
(fn (row: 'a list, i) =>
let
- val max = i +? cols
+ val max = i +? cols'
val i' =
List.foldl (fn (x: 'a, i) =>
(if i >= max
then raise Size
- else (Primitive.Array.update (array, i, x)
- ; i + 1)))
+ else (Array.unsafeUpdate' (array, i, x)
+ ; i +? 1)))
i row
in if i' = max
then i'
@@ -115,37 +213,77 @@
a
end
- fun row ({rows, cols, array}, r) =
- if Primitive.safe andalso geu (r, rows)
+ fun row' ({array, rows, cols}, r) =
+ if Primitive.Controls.safe andalso geu (r, rows)
then raise Subscript
else
- ArraySlice.vector (ArraySlice.slice (array, r *? cols, SOME cols))
-
- fun column (a as {rows, cols, ...}: 'a array, c) =
- if Primitive.safe andalso geu (c, cols)
+ ArraySlice.vector (ArraySlice.slice' (array, r *? cols, SOME cols))
+ fun row (a, r) =
+ if Primitive.Controls.safe
+ then let
+ val r =
+ (SeqIndex.fromInt r)
+ handle Overflow => raise Subscript
+ in
+ row' (a, r)
+ end
+ else row' (a, SeqIndex.fromIntUnsafe r)
+ fun column' (a as {rows, cols, ...}: 'a array, c) =
+ if Primitive.Controls.safe andalso geu (c, cols)
then raise Subscript
else
- Vector.tabulate (rows, fn r => sub(a, r, c))
+ Vector.tabulate' (rows, fn r => unsafeSub' (a, r, c))
+ fun column (a, c) =
+ if Primitive.Controls.safe
+ then let
+ val c =
+ (SeqIndex.fromInt c)
+ handle Overflow => raise Subscript
+ in
+ column' (a, c)
+ end
+ else column' (a, SeqIndex.fromIntUnsafe c)
- fun foldi trv f b (region as {base, row, col, ...}) =
+ fun foldi' trv f b (region as {base, row, col, ...}) =
let
- val {stopRow, stopCol} = checkRegion region
+ val {startRow, stopRow, startCol, stopCol} = checkRegion region
in
case trv of
RowMajor =>
- Util.naturalFoldStartStop
- (row, stopRow, b, fn (r, b) =>
- Util.naturalFoldStartStop
- (col, stopCol, b, fn (c, b) =>
- f (r, c, sub (base, r, c), b)))
+ let
+ fun loopRow (r, b) =
+ if r >= stopRow then b
+ else let
+ fun loopCol (c, b) =
+ if c >= stopCol then b
+ else loopCol (c +? 1, f (r, c, sub' (base, r, c), b))
+ in
+ loopRow (r +? 1, loopCol (startCol, b))
+ end
+ in
+ loopRow (startRow, b)
+ end
| ColMajor =>
- Util.naturalFoldStartStop
- (col, stopCol, b, fn (c, b) =>
- Util.naturalFoldStartStop
- (row, stopRow, b, fn (r, b) =>
- f (r, c, sub (base, r, c), b)))
+ let
+ fun loopCol (c, b) =
+ if c >= stopCol then b
+ else let
+ fun loopRow (r, b) =
+ if r >= stopRow then b
+ else loopRow (r +? 1, f (r, c, sub' (base, r, c), b))
+ in
+ loopCol (c +? 1, loopRow (startRow, b))
+ end
+ in
+ loopCol (startCol, b)
+ end
end
+ fun foldi trv f b a =
+ foldi' trv (fn (r, c, x, b) =>
+ f (SeqIndex.toIntUnsafe r,
+ SeqIndex.toIntUnsafe c,
+ x, b)) b a
fun fold trv f b a =
foldi trv (fn (_, _, x, b) => f (x, b)) b (wholeRegion a)
@@ -160,22 +298,24 @@
fun modify trv f a = modifyi trv (f o #3) (wholeRegion a)
fun tabulate trv (rows, cols, f) =
- let
+ let
val a = arrayUninit (rows, cols)
val () = modifyi trv (fn (r, c, _) => f (r, c)) (wholeRegion a)
- in
+ in
a
end
- fun copy {src = src as {base, row, col, ...}: 'a region,
+ fun copy {src = src as {base, ...}: 'a region,
dst, dst_row, dst_col} =
let
- val {stopRow, stopCol} = checkRegion src
- val nrows = stopRow -? row
- val ncols = stopCol -? col
- val _ = checkRegion {base = dst, row = dst_row, col = dst_col,
- nrows = SOME nrows, ncols = SOME ncols}
- fun for (start, stop, f: int -> unit) =
+ val {startRow, stopRow, startCol, stopCol} = checkRegion src
+ val nrows = stopRow -? startRow
+ val ncols = stopCol -? startCol
+ val {startRow = dst_row, startCol = dst_col, ...} =
+ checkRegion' {base = dst, row = dst_row, col = dst_col,
+ nrows = SOME nrows,
+ ncols = SOME ncols}
+ fun forUp (start, stop, f: SeqIndex.int -> unit) =
let
fun loop i =
if i >= stop
@@ -183,7 +323,7 @@
else (f i; loop (i + 1))
in loop start
end
- fun forDown (start, stop, f: int -> unit) =
+ fun forDown (start, stop, f: SeqIndex.int -> unit) =
let
fun loop i =
if i < start
@@ -191,11 +331,11 @@
else (f i; loop (i - 1))
in loop (stop -? 1)
end
- val forRows = if row <= dst_row then forDown else for
- val forCols = if col <= dst_col then for else forDown
+ val forRows = if startRow <= dst_row then forDown else forUp
+ val forCols = if startCol <= dst_col then forUp else forDown
in forRows (0, nrows, fn r =>
- forCols (0, ncols, fn c =>
- update (dst, dst_row +? r, dst_col +? c,
- sub (base, row +? r, col +? c))))
+ forCols (0, ncols, fn c =>
+ unsafeUpdate' (dst, dst_row +? r, dst_col +? c,
+ unsafeSub' (base, startRow +? r, startCol +? c))))
end
end
Modified: mlton/trunk/basis-library/arrays-and-vectors/mono-array-slice.sig
===================================================================
--- mlton/trunk/basis-library/arrays-and-vectors/mono-array-slice.sig 2006-12-02 17:15:22 UTC (rev 4897)
+++ mlton/trunk/basis-library/arrays-and-vectors/mono-array-slice.sig 2006-12-02 19:06:13 UTC (rev 4898)
@@ -5,7 +5,7 @@
type slice
type vector
type vector_slice
-
+
val length: slice -> int
val sub: slice * int -> elem
val update: slice * int * elem -> unit
Modified: mlton/trunk/basis-library/arrays-and-vectors/mono-array.sig
===================================================================
--- mlton/trunk/basis-library/arrays-and-vectors/mono-array.sig 2006-12-02 17:15:22 UTC (rev 4897)
+++ mlton/trunk/basis-library/arrays-and-vectors/mono-array.sig 2006-12-02 19:06:13 UTC (rev 4898)
@@ -39,10 +39,11 @@
and type vector = vector
and type vector_slice = vector_slice
+ val arrayUninit: int -> array
+
val concat: array list -> array
val duplicate: array -> array
val fromPoly: elem Array.array -> array
- val rawArray: int -> array
val toList: array -> elem list
val toPoly: array -> elem Array.array
val unfoldi: int * 'a * (int * 'a -> elem * 'a) -> array * 'a
Modified: mlton/trunk/basis-library/arrays-and-vectors/mono-array2.sig
===================================================================
--- mlton/trunk/basis-library/arrays-and-vectors/mono-array2.sig 2006-12-02 17:15:22 UTC (rev 4897)
+++ mlton/trunk/basis-library/arrays-and-vectors/mono-array2.sig 2006-12-02 19:06:13 UTC (rev 4898)
@@ -10,7 +10,7 @@
col: int,
nrows: int option,
ncols: int option}
-
+
datatype traversal = datatype Array2.traversal
val array: int * int * elem -> array
Modified: mlton/trunk/basis-library/arrays-and-vectors/mono-vector-slice.sig
===================================================================
--- mlton/trunk/basis-library/arrays-and-vectors/mono-vector-slice.sig 2006-12-02 17:15:22 UTC (rev 4897)
+++ mlton/trunk/basis-library/arrays-and-vectors/mono-vector-slice.sig 2006-12-02 19:06:13 UTC (rev 4898)
@@ -3,7 +3,7 @@
type elem
type slice
type vector
-
+
val all: (elem -> bool) -> slice -> bool
val app: (elem -> unit) -> slice -> unit
val appi: (int * elem -> unit) -> slice -> unit
Modified: mlton/trunk/basis-library/arrays-and-vectors/mono.sml
===================================================================
--- mlton/trunk/basis-library/arrays-and-vectors/mono.sml 2006-12-02 17:15:22 UTC (rev 4897)
+++ mlton/trunk/basis-library/arrays-and-vectors/mono.sml 2006-12-02 19:06:13 UTC (rev 4898)
@@ -44,7 +44,7 @@
end
local
- structure S = EqMono (type elem = Bool.bool)
+ structure S = EqMono (type elem = Primitive.Bool.bool)
open S
in
structure BoolVector = Vector
@@ -54,24 +54,9 @@
structure BoolArray2 = Array2
end
local
- structure S:>
- EQ_MONO
- where type Array.elem = char
- where type Vector.vector = string
- = EqMono (type elem = char)
+ structure S = EqMono (type elem = Primitive.Int8.int)
open S
in
- structure CharArray = Array
- structure CharArray2 = Array2
- structure CharArraySlice = ArraySlice
- structure CharVector = Vector
- structure CharVectorSlice = VectorSlice
- val _ = CharVector.fromArray: CharArray.array -> CharVector.vector
-end
-local
- structure S = EqMono (type elem = Int8.int)
- open S
-in
structure Int8Vector = Vector
structure Int8VectorSlice = VectorSlice
structure Int8Array = Array
@@ -79,7 +64,7 @@
structure Int8Array2 = Array2
end
local
- structure S = EqMono (type elem = Int16.int)
+ structure S = EqMono (type elem = Primitive.Int16.int)
open S
in
structure Int16Vector = Vector
@@ -89,7 +74,7 @@
structure Int16Array2 = Array2
end
local
- structure S = EqMono (type elem = Int32.int)
+ structure S = EqMono (type elem = Primitive.Int32.int)
open S
in
structure Int32Vector = Vector
@@ -99,7 +84,7 @@
structure Int32Array2 = Array2
end
local
- structure S = EqMono (type elem = Int64.int)
+ structure S = EqMono (type elem = Primitive.Int64.int)
open S
in
structure Int64Vector = Vector
@@ -109,7 +94,7 @@
structure Int64Array2 = Array2
end
local
- structure S = EqMono (type elem = IntInf.int)
+ structure S = EqMono (type elem = Primitive.IntInf.int)
open S
in
structure IntInfVector = Vector
@@ -119,7 +104,7 @@
structure IntInfArray2 = Array2
end
local
- structure S = Mono (type elem = Real32.real)
+ structure S = Mono (type elem = Primitive.Real32.real)
open S
in
structure Real32Vector = Vector
@@ -129,7 +114,7 @@
structure Real32Array2 = Array2
end
local
- structure S = Mono (type elem = Real64.real)
+ structure S = Mono (type elem = Primitive.Real64.real)
open S
in
structure Real64Vector = Vector
@@ -139,10 +124,7 @@
structure Real64Array2 = Array2
end
local
- structure S:>
- EQ_MONO
- where type Array.elem = Word8.word
- = EqMono (type elem = Word8.word)
+ structure S = EqMono (type elem = Primitive.Word8.word)
open S
in
structure Word8Vector = Vector
@@ -152,7 +134,7 @@
structure Word8Array2 = Array2
end
local
- structure S = EqMono (type elem = Word16.word)
+ structure S = EqMono (type elem = Primitive.Word16.word)
open S
in
structure Word16Vector = Vector
@@ -162,7 +144,7 @@
structure Word16Array2 = Array2
end
local
- structure S = EqMono (type elem = Word32.word)
+ structure S = EqMono (type elem = Primitive.Word32.word)
open S
in
structure Word32Vector = Vector
@@ -172,7 +154,7 @@
structure Word32Array2 = Array2
end
local
- structure S = EqMono (type elem = Word64.word)
+ structure S = EqMono (type elem = Primitive.Word64.word)
open S
in
structure Word64Vector = Vector
@@ -182,38 +164,74 @@
structure Word64Array2 = Array2
end
-structure IntVector = Int32Vector
-structure IntVectorSlice = Int32VectorSlice
-structure IntArray = Int32Array
-structure IntArraySlice = Int32ArraySlice
-structure IntArray2 = Int32Array2
-structure LargeIntVector = IntInfVector
-structure LargeIntVectorSlice = IntInfVectorSlice
-structure LargeIntArray = IntInfArray
-structure LargeIntArraySlice = IntInfArraySlice
-structure LargeIntArray2 = IntInfArray2
-
-structure RealVector = Real64Vector
-structure RealVectorSlice = Real64VectorSlice
-structure RealArray = Real64Array
-structure RealArraySlice = Real64ArraySlice
-structure RealArray2 = Real64Array2
-
-structure LargeRealVector = Real64Vector
-structure LargeRealVectorSlice = Real64VectorSlice
-structure LargeRealArray = Real64Array
-structure LargeRealArraySlice = Real64ArraySlice
-structure LargeRealArray2 = Real64Array2
-
-structure WordVector = Word32Vector
-structure WordVectorSlice = Word32VectorSlice
-structure WordArray = Word32Array
-structure WordArraySlice = Word32ArraySlice
-structure WordArray2 = Word32Array2
-
-structure LargeWordVector = Word64Vector
-structure LargeWordVectorSlice = Word64VectorSlice
-structure LargeWordArray = Word64Array
-structure LargeWordArraySlice = Word64ArraySlice
-structure LargeWordArray2 = Word64Array2
+local
+ structure S = EqMono (type elem = Char.char)
+ open S
+in
+ structure CharArray = Array
+ structure CharArray2 = Array2
+ structure CharArraySlice = ArraySlice
+ structure CharVector = Vector
+ structure CharVectorSlice = VectorSlice
+end
+local
+ structure S = EqMono (type elem = Int.int)
+ open S
+in
+ structure IntVector = Vector
+ structure IntVectorSlice = VectorSlice
+ structure IntArray = Array
+ structure IntArraySlice = ArraySlice
+ structure IntArray2 = Array2
+end
+local
+ structure S = EqMono (type elem = LargeInt.int)
+ open S
+in
+ structure LargeIntVector = Vector
+ structure LargeIntVectorSlice = VectorSlice
+ structure LargeIntArray = Array
+ structure LargeIntArraySlice = ArraySlice
+ structure LargeIntArray2 = Array2
+end
+local
+ structure S = Mono (type elem = Real.real)
+ open S
+in
+ structure RealVector = Vector
+ structure RealVectorSlice = VectorSlice
+ structure RealArray = Array
+ structure RealArraySlice = ArraySlice
+ structure RealArray2 = Array2
+end
+local
+ structure S = Mono (type elem = LargeReal.real)
+ open S
+in
+ structure LargeRealVector = Vector
+ structure LargeRealVectorSlice = VectorSlice
+ structure LargeRealArray = Array
+ structure LargeRealArraySlice = ArraySlice
+ structure LargeRealArray2 = Array2
+end
+local
+ structure S = EqMono (type elem = Word.word)
+ open S
+in
+ structure WordVector = Vector
+ structure WordVectorSlice = VectorSlice
+ structure WordArray = Array
+ structure WordArraySlice = ArraySlice
+ structure WordArray2 = Array2
+end
+local
+ structure S = EqMono (type elem = LargeWord.word)
+ open S
+in
+ structure LargeWordVector = Vector
+ structure LargeWordVectorSlice = VectorSlice
+ structure LargeWordArray = Array
+ structure LargeWordArraySlice = ArraySlice
+ structure LargeWordArray2 = Array2
+end
Modified: mlton/trunk/basis-library/arrays-and-vectors/sequence.fun
===================================================================
--- mlton/trunk/basis-library/arrays-and-vectors/sequence.fun 2006-12-02 17:15:22 UTC (rev 4897)
+++ mlton/trunk/basis-library/arrays-and-vectors/sequence.fun 2006-12-02 19:06:13 UTC (rev 4898)
@@ -6,171 +6,396 @@
* See the file MLton-LICENSE for details.
*)
+structure SeqIndex =
+ struct
+ open SeqIndex
+
+ val maxLen' = maxInt'
+ local
+ structure S =
+ Int_ChooseInt
+ (type 'a t = 'a -> int
+ val fInt8 = SeqIndex.sextdFromInt8
+ val fInt16 = SeqIndex.sextdFromInt16
+ val fInt32 = SeqIndex.sextdFromInt32
+ val fInt64 = SeqIndex.sextdFromInt64
+ val fIntInf = SeqIndex.sextdFromIntInf)
+ in
+ val fromIntUnsafe = S.f
+ end
+ local
+ structure S =
+ Int_ChooseInt
+ (type 'a t = 'a -> int
+ val fInt8 = SeqIndex.schckFromInt8
+ val fInt16 = SeqIndex.schckFromInt16
+ val fInt32 = SeqIndex.schckFromInt32
+ val fInt64 = SeqIndex.schckFromInt64
+ val fIntInf = SeqIndex.schckFromIntInf)
+ in
+ val fromInt = S.f
+ end
+ local
+ structure S =
+ Int_ChooseInt
+ (type 'a t = int -> 'a
+ val fInt8 = SeqIndex.sextdToInt8
+ val fInt16 = SeqIndex.sextdToInt16
+ val fInt32 = SeqIndex.sextdToInt32
+ val fInt64 = SeqIndex.sextdToInt64
+ val fIntInf = SeqIndex.sextdToIntInf)
+ in
+ val toIntUnsafe = S.f
+ end
+ local
+ structure S =
+ Int_ChooseInt
+ (type 'a t = int -> 'a
+ val fInt8 = SeqIndex.schckToInt8
+ val fInt16 = SeqIndex.schckToInt16
+ val fInt32 = SeqIndex.schckToInt32
+ val fInt64 = SeqIndex.schckToInt64
+ val fIntInf = SeqIndex.schckToIntInf)
+ in
+ val toInt = S.f
+ end
+ end
+
functor Sequence (S: sig
type 'a sequence
type 'a elt
(* fromArray should be constant time. *)
val fromArray: 'a elt array -> 'a sequence
val isMutable: bool
- val length: 'a sequence -> int
- val sub: 'a sequence * int -> 'a elt
+ val length: 'a sequence -> SeqIndex.int
+ val subUnsafe: 'a sequence * SeqIndex.int -> 'a elt
end
): SEQUENCE =
struct
- open S
-
structure Array = Primitive.Array
- open Primitive.Int
+ val op +? = SeqIndex.+?
+ val op + = SeqIndex.+
+ val op -? = SeqIndex.-?
+ val op - = SeqIndex.-
+ val op < = SeqIndex.<
+ val op <= = SeqIndex.<=
+ val op > = SeqIndex.>
+ val op >= = SeqIndex.>=
+ val ltu = SeqIndex.ltu
+ val leu = SeqIndex.leu
+ val gtu = SeqIndex.gtu
+ val geu = SeqIndex.geu
- val maxLen = Array.maxLen
+ fun wrap1 f = fn (i) => f (SeqIndex.toIntUnsafe i)
+ fun wrap2 f = fn (i, x) => f (SeqIndex.toIntUnsafe i, x)
+ fun wrap3 f = fn (i, x, y) => f (SeqIndex.toIntUnsafe i, x, y)
+ fun unwrap1 f = fn (i) => f (SeqIndex.fromIntUnsafe i)
+ fun unwrap2 f = fn (i, x) => f (SeqIndex.fromIntUnsafe i, x)
- fun array n =
- if not isMutable andalso n = 0
+ type 'a sequence = 'a S.sequence
+ type 'a elt = 'a S.elt
+
+ (*
+ * In general, *' values are in terms of SeqIndex.int,
+ * while * values are in terms of Int.int.
+ *)
+
+ local
+ fun doit (toInt, fromInt, maxInt') =
+ (SeqIndex.maxLen', toInt SeqIndex.maxLen')
+ handle Overflow => (fromInt maxInt', maxInt')
+ structure S =
+ Int_ChooseInt
+ (type 'a t = SeqIndex.int * 'a
+ val fInt8 = doit (SeqIndex.schckToInt8, SeqIndex.schckFromInt8,
+ Primitive.Int8.maxInt')
+ val fInt16 = doit (SeqIndex.schckToInt16, SeqIndex.schckFromInt16,
+ Primitive.Int16.maxInt')
+ val fInt32 = doit (SeqIndex.schckToInt32, SeqIndex.schckFromInt32,
+ Primitive.Int32.maxInt')
+ val fInt64 = doit (SeqIndex.schckToInt64, SeqIndex.schckFromInt64,
+ Primitive.Int64.maxInt')
+ val fIntInf = (SeqIndex.maxLen', SeqIndex.schckToIntInf SeqIndex.maxLen'))
+ in
+ val (maxLen', maxLen) = S.f
+ end
+
+ fun fromIntForLength n =
+ if Primitive.Controls.safe
+ then (SeqIndex.fromInt n) handle Overflow => raise Size
+ else SeqIndex.fromIntUnsafe n
+
+ fun length' s = S.length s
+ fun length s =
+ if Primitive.Controls.safe
+ then (SeqIndex.toInt (length' s))
+ handle Overflow => raise Fail "Sequence.length"
+ else SeqIndex.toIntUnsafe (length' s)
+
+ fun arrayUninit' n =
+ if not S.isMutable andalso n = 0
then Array.array0Const ()
- else Array.array n
+ else if Primitive.Controls.safe
+ andalso (n < 0 orelse n > maxLen')
+ then raise Size
+ else Array.arrayUnsafe n
+ fun arrayUninit n = arrayUninit' (fromIntForLength n)
- fun seq0 () = fromArray (array 0)
+ fun newUninit' n = S.fromArray (arrayUninit' n)
+ fun newUninit n = S.fromArray (arrayUninit n)
- (* unfoldi depends on the fact that the runtime system fills in the array
- * with reasonable bogus values.
- *)
- fun unfoldi (n, b, f) =
+ fun seq0 () = S.fromArray (arrayUninit' 0)
+
+ fun generate' n =
+ let
+ val a = arrayUninit' n
+ val subLim = ref 0
+ fun sub i =
+ if Primitive.Controls.safe andalso geu (i, !subLim) then
+ raise Subscript
+ else
+ Array.subUnsafe (a, i)
+ val updateLim = ref 0
+ fun update (i, x) =
+ if Primitive.Controls.safe andalso geu (i, !updateLim) then
+ if i = !updateLim andalso i < n then
+ (Array.updateUnsafe (a, i, x);
+ subLim := i + 1;
+ updateLim := i + 1)
+ else
+ raise Subscript
+ else
+ Array.updateUnsafe (a, i, x)
+ val gotIt = ref false
+ fun done () =
+ if !gotIt then
+ raise Fail "already got vector"
+ else
+ if n = !updateLim then
+ (gotIt := true;
+ updateLim := 0;
+ S.fromArray a)
+ else
+ raise Fail "vector not full"
+ in
+ {done = done,
+ sub = sub,
+ update = update}
+ end
+
+ fun generate n =
let
- val a = array n
+ val {done, sub, update} = generate' (fromIntForLength n)
+ in
+ {done = done,
+ sub = unwrap1 sub,
+ update = unwrap2 update}
+ end
+
+ fun unfoldi' (n, b, f) =
+ let
+ val a = arrayUninit' n
fun loop (i, b) =
- if i >= n then
- b
+ if i >= n
+ then b
else
let
val (x, b') = f (i, b)
- val () = Array.update (a, i, x)
+ val () = Array.updateUnsafe (a, i, x)
in
loop (i +? 1, b')
end
val b = loop (0, b)
in
- (fromArray a, b)
+ (S.fromArray a, b)
end
+ fun unfoldi (n, b, f) = unfoldi' (fromIntForLength n, b, wrap2 f)
+ fun unfold (n, b, f) = unfoldi (n, b, f o #2)
- fun tabulate (n, f) = #1 (unfoldi (n, (), fn (i, ()) => (f i, ())))
+ fun tabulate' (n, f) =
+ #1 (unfoldi' (n, (), fn (i, ()) => (f i, ())))
+ fun tabulate (n, f) =
+ #1 (unfoldi (n, (), fn (i, ()) => (f i, ())))
+ fun new' (n, x) = tabulate' (n, fn _ => x)
fun new (n, x) = tabulate (n, fn _ => x)
fun fromList l =
let
- val a = array (List.length l)
+ val a = arrayUninit (List.length l)
val _ =
- List.foldl (fn (c, i) => (Array.update (a, i, c) ; i +? 1)) 0 l
+ List.foldl (fn (x, i) => (Array.updateUnsafe (a, i, x) ; (i +? 1))) 0 l
in
- fromArray a
+ S.fromArray a
end
structure Slice =
struct
- type 'a sequence = 'a sequence
- type 'a elt = 'a elt
- datatype 'a t = T of {seq: 'a sequence, start: int, len: int}
+ type 'a sequence = 'a S.sequence
+ type 'a elt = 'a S.elt
+ datatype 'a t = T of {seq: 'a sequence,
+ start: SeqIndex.int, len: SeqIndex.int}
type 'a slice = 'a t
- fun length (T {len, ...}) = len
- fun unsafeSub (T {seq, start, ...}, i) =
- S.sub (seq, start +? i)
- fun sub (sl as T {len, ...}, i) =
- if Primitive.safe andalso Primitive.Int.geu (i, len)
+ fun length' (T {len, ...}) = len
+ fun length sl =
+ if Primitive.Controls.safe
+ then (SeqIndex.toInt (length' sl))
+ handle Overflow => raise Fail "Sequence.Slice.length"
+ else SeqIndex.toIntUnsafe (length' sl)
+ fun unsafeSub' (T {seq, start, ...}, i) =
+ S.subUnsafe (seq, start +? i)
+ fun unsafeSub (sl, i) =
+ unsafeSub' (sl, SeqIndex.fromIntUnsafe i)
+ fun sub' (sl as T {len, ...}, i) =
+ if Primitive.Controls.safe andalso geu (i, len)
then raise Subscript
- else unsafeSub (sl, i)
- fun unsafeUpdate' update (T {seq, start, ...}, i, x) =
- update (seq, start +? i, x)
- fun update' update (sl as T {len, ...}, i, x) =
- if Primitive.safe andalso Primitive.Int.geu (i, len)
+ else unsafeSub' (sl, i)
+ fun sub (sl, i) =
+ if Primitive.Controls.safe
+ then let
+ val i =
+ (SeqIndex.fromInt i)
+ handle Overflow => raise Subscript
+ in
+ sub' (sl, i)
+ end
+ else unsafeSub (sl, i)
+ fun unsafeUpdateMk' updateUnsafe (T {seq, start, ...}, i, x) =
+ updateUnsafe (seq, start +? i, x)
+ fun unsafeUpdateMk updateUnsafe (sl, i, x) =
+ unsafeUpdateMk' updateUnsafe (sl, SeqIndex.fromIntUnsafe i, x)
+ fun updateMk' updateUnsafe (sl as T {len, ...}, i, x) =
+ if Primitive.Controls.safe andalso geu (i, len)
then raise Subscript
- else unsafeUpdate' update (sl, i, x)
+ else unsafeUpdateMk' updateUnsafe (sl, i, x)
+ fun updateMk updateUnsafe (sl, i, x) =
+ if Primitive.Controls.safe
+ then let
+ val i =
+ (SeqIndex.fromInt i)
+ handle Overflow => raise Subscript
+
More information about the MLton-commit
mailing list