Lindsey Kuper
9d7fc21967
Consolidating expr_to_str functions.
2011-05-05 16:53:25 -07:00
Rafael Ávila de Espíndola
157f61f8c8
Change the setup so that rust_activate_glue returns to rust_exit_task_glue
...
and rust_exit_task_glue calls the rust main.
This is simpler since we only need to setup one frame. It also matches
what ld.so does, so gdb is happy and stops a backtrace at rust_exit_task_glue
instead of continuing past whatever function happened to be before
rust_exit_task_glue is the object file.
This is only the rustc changes and should be merged first.
2011-05-05 15:14:34 -07:00
Marijn Haverbeke
3d738e9e06
Return a fresh, unreachable context after ret, break, and cont
...
This ensures we don't get compile errors on unreachable code (see
test/run-pass/artificial-block.rs for an example of sane code that
wasn't compiling). In the future, we might want to warn about
non-trivial code appearing in an unreachable context, and/or avoid
generating unreachable code altogether (though I'm sure LLVM will weed
it out as well).
2011-05-05 20:19:43 +02:00
Patrick Walton
fea623211f
rustc: Add a Link module; move crate writing to it to slim down trans slightly
2011-05-05 10:48:02 -07:00
Marijn Haverbeke
898e089d7b
Fix and re-enable destructors
...
There was some confusion on whether the destructors took their
argument by pointer or direct value. They now take it directly, just
like other methods. You no longer get a segfault when a constructor
actually does something with its self value.
2011-05-05 02:16:49 +02:00
Graydon Hoare
cdb6822405
Add a structure for passing option flags around the compiler, put it in session, and use it.
2011-05-04 16:59:21 -07:00
Graydon Hoare
ce9468761c
Support new -g flag, only mangle glue names by type when it's passed.
2011-05-04 15:36:42 -07:00
Patrick Walton
ac8eb20224
rustc: Stub support for Rust intrinsics
2011-05-03 18:03:59 -07:00
Patrick Walton
e43729ccf2
rustc: Refactor metadata.Encode.* to not require a type abbreviation table if abbreviation isn't enabled
2011-05-03 14:41:05 -07:00
Patrick Walton
3f317ede41
rustc: Name type glue properly
2011-05-03 14:41:05 -07:00
Patrick Walton
ebc236e91c
rustc: Time the Rust translation and LLVM passes separately
2011-05-02 17:50:46 -07:00
Patrick Walton
147a2d655f
Un-revert "Use different syntax for checks that matter to typestate", fixing the problem.
...
This reverts commit d08b443fffb1181d8d45ae5d061412f202dd4118.
2011-05-02 17:50:46 -07:00
Graydon Hoare
d08b443fff
Revert "Use different syntax for checks that matter to typestate"
...
This reverts commit aa25f22f197682de3b18fc4c8ba068d1feda220f. It broke stage2, not sure why yet.
2011-05-02 17:35:33 -07:00
Patrick Walton
9d21cf3b61
rustc: Allocate tydescs on the stack when it's safe to do so. 60% compile speed increase.
2011-05-02 15:28:59 -07:00
Tim Chevalier
aa25f22f19
Use different syntax for checks that matter to typestate
...
This giant commit changes the syntax of Rust to use "assert" for
"check" expressions that didn't mean anything to the typestate
system, and continue using "check" for checks that are used as
part of typestate checking.
Most of the changes are just replacing "check" with "assert" in test
cases and rustc.
2011-05-02 12:16:29 -07:00
Patrick Walton
870435caf5
rustc: Add a "fat tydesc" LLVM type to trans
2011-05-02 12:05:21 -07:00
Patrick Walton
b101e26d92
rustc: Run scope cleanups in the implicit block created by log statements. Fixes a leak.
2011-04-29 19:19:54 -07:00
Patrick Walton
f6c472d816
rustc: Emit pure native glue; we don't call it yet
2011-04-29 16:40:30 -07:00
Patrick Walton
593fb195a4
rustc: Start threading a purity flag through upcalls
2011-04-29 15:39:48 -07:00
Graydon Hoare
b9babe47da
Temporarily disable dtors; they broke self-hosting.
2011-04-29 15:06:53 -07:00
Patrick Walton
1acf404361
rustc: First steps to determine whether tydescs escape
2011-04-29 15:01:07 -07:00
Graydon Hoare
7b95b5c033
Don't emit metadata unless compiling -shared.
2011-04-29 19:20:20 +00:00
Marijn Haverbeke
c39a95da90
Implement destructors in rustc
...
Unlike rustboot, rustc keeps it destructors in vtables. Entry 0 holds
either the destructor for the obj or a NULL pointer. The method
offsets start at 1.
2011-04-29 21:19:50 +02:00
Patrick Walton
adfacc5031
rustc: Add a --time-passes option
2011-04-29 11:55:20 -07:00
Patrick Walton
f0d24ff49e
rustc: Handle alias parameters in native functions properly
2011-04-29 11:54:41 -07:00
Graydon Hoare
a2f68b2d58
Intern metadata while writing, shrink stage1 from 12mb to 5.7mb.
2011-04-29 15:26:28 +00:00
Patrick Walton
6daf440037
rustc: Fix vec append glue for strings. Add a test case.
2011-04-28 20:16:32 -07:00
Patrick Walton
3e08609ed7
rustc: Add some value names to the vec append glue function. Un-XFAIL vec-growth.rs.
2011-04-28 18:45:56 -07:00
Graydon Hoare
1f44887761
More attempts at fixing broken vec-append glue.
2011-04-28 18:39:12 -07:00
Graydon Hoare
cd8cf44d1d
Make the no-growth path (previously never exercised) in rustc *work*.
2011-04-28 18:11:00 -07:00
Graydon Hoare
bcad52451c
Actually hit the no-growth path on vec-append.
2011-04-28 17:45:35 -07:00
Graydon Hoare
c9e601b31d
Drop args in native stubs too.
2011-04-28 14:35:12 -07:00
Tim Chevalier
844fe20720
Fix some nested patterns in rustc
...
In rustc, nested patterns were potentially matching when they shouldn't
match, because a loop index wasn't being incremented. Fixed it and added
one test case.
2011-04-28 13:26:19 -07:00
Graydon Hoare
6daca7ea8d
Actually perform take/drop on args (oh my!)
2011-04-28 11:24:29 -07:00
Graydon Hoare
12925505fb
Cache sha1 values of types, use seq-based mangling for glue as it's private anyways.
2011-04-27 13:36:23 -07:00
Graydon Hoare
031e86ca2d
Partly disable simplified-type glue optimization due to compile-time cost.
2011-04-27 16:03:45 +00:00
Patrick Walton
05587ebdff
rustc: Ignore the return value of native functions that return nil. stage1 can build libstd now, though it leaks.
2011-04-26 19:01:30 -07:00
Patrick Walton
532a65485d
rustc: Actually write the optimized bitcode when --save-temps is on
2011-04-26 19:01:24 -07:00
Graydon Hoare
e77f5b1561
Speed up calls to get_tydesc and kill cname-redundant glue generation.
2011-04-26 17:19:44 -07:00
Graydon Hoare
418b23a538
Various bits of trans lint, nothing major.
2011-04-26 20:39:25 +00:00
Patrick Walton
c4e13cd1fa
rustc: Use the abbreviated type names to avoid LLVM bitcode size explosion
2011-04-25 17:00:25 -07:00
Graydon Hoare
da328b1ba9
Kick ty_var and ty_local entries out of the type store. Pre-compute presence of var, local, param and bound_params in types.
2011-04-25 16:40:25 -07:00
Patrick Walton
e0479c902b
rustc: Add a -save-temps option to save bitcode and write output simultaneously; document command line switches
2011-04-25 14:08:12 -07:00
Patrick Walton
e102413aad
rustc: Pass a "type context" around instead of directly passing the type store; prep for removing type annotations
2011-04-25 12:15:55 -07:00
Graydon Hoare
1b9e6b3ad2
Bind tag members as aliases rather than new locals.
2011-04-25 04:12:40 +00:00
Graydon Hoare
912c1fc81c
Fix busted iter/put code. Un-XFAIL foreach-box-drop.rs.
2011-04-23 14:22:10 -07:00
Patrick Walton
e0eccaddb2
rustc: Thread the type store through everything that needs to access type structures
2011-04-22 17:00:46 -07:00
Patrick Walton
3d62c9adf3
rustc: Move the type serialization logic to an Encode module
2011-04-22 14:48:25 -07:00
Patrick Walton
c7473c8260
rustc: Switch @ty.t to ty.t so that we can change it to a uint
2011-04-22 12:27:52 -07:00
Patrick Walton
c1335510d5
rustc: Eliminate the direct use of ty.t.struct
2011-04-22 12:09:09 -07:00