[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