rust/src
Marijn Haverbeke 3bdbf74d47 Make moving of temporaries do the right thing, use it to optimize
This adds support for dropping cleanups for temporary values when they
are moved somewhere else. It then adds wraps most copy operations
(return, put in data structure, box, etc) in a way that will fall back
to a move when it is safe.

This saves a lot of taking/dropping, shaving over a megabyte off the
stage2/rustc binary size.

In some cases, most notably function returns, we could detect that the
returned value is a local variable, and can thus be safely moved even
though it is not a temporary. This will require putting some more
information in lvals.

I did not yet handle function arguments, since the logic for passing
them looked too convoluted to touch. I'll probably try that in the
near future, since it's bound to be a big win.
2011-07-07 15:54:01 +02:00
..
comp Make moving of temporaries do the right thing, use it to optimize 2011-07-07 15:54:01 +02:00
etc More fiddling with fast-check, now works on at least one windows machine. 2011-06-30 09:26:17 -07:00
fuzzer Link the fuzzer crate to librustc again 2011-07-04 15:30:36 -07:00
lib Make moving of temporaries do the right thing, use it to optimize 2011-07-07 15:54:01 +02:00
rt rt: Double stack size 2011-07-06 15:13:00 -07:00
rustllvm Update RustWrapper.cpp so that LLVM revision 134231 from June 30, 2011 at 22:15 GMT, works. 2011-07-01 00:56:49 -06:00
test Make moving of temporaries do the right thing, use it to optimize 2011-07-07 15:54:01 +02:00
README Update README files 2011-06-26 22:27:22 -07:00
snapshots.txt snap: Register new snapshots 2011-07-06 11:05:57 -07:00

This is preliminary version of the Rust compiler(s).

Source layout:

comp/              The self-hosted compiler

lib/               The standard library

rustllvm/          LLVM support code

rt/                The runtime system
rt/rust_*.cpp      - The majority of the runtime services
rt/isaac           - The PRNG used for pseudo-random choices in the runtime
rt/bigint          - The bigint library used for the 'big' type
rt/uthash          - Small hashtable-and-list library for C, used in runtime
rt/{sync,util}     - Small utility classes for the runtime.

test/              Testsuite
test/compile-fail  - Tests that should fail to compile
test/run-fail      - Tests that should compile, run and fail
test/run-pass      - Tests that should compile, run and succeed
test/bench         - Benchmarks and miscellanea

Please be gentle, it's a work in progress.