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
Marijn Haverbeke
007a736642
Improve handling of move and swap by alias checker
...
Closes issue #541 .
Closes issue #591
2011-07-07 10:37:19 +02:00
Lindsey Kuper
130006cdda
Tie the knot for self-calls inside extended objects. Closes #539 .
2011-07-06 18:39:01 -07:00
Brian Anderson
cf4c2ac0be
Generate a main fn for test running. Issue #428
2011-07-06 18:26:22 -07:00
Lindsey Kuper
6ca81b3407
Fix a pointer bug.
2011-07-06 17:16:54 -07:00
Lindsey Kuper
553beda96d
Add span information to create_vtbl and friends.
2011-07-06 17:16:53 -07:00
Lindsey Kuper
41f6a3d5e1
Comments and cleanup.
2011-07-06 17:16:53 -07:00
Patrick Walton
2f29f9931d
rustc: Make constraint args in the AST interior vectors
2011-07-06 16:19:19 -07:00
Patrick Walton
f164d7779a
rustc: Move AST constraints to interior vectors
2011-07-06 16:12:39 -07:00
Patrick Walton
c83782f500
rustc: Migrate core AST types to interior vectors
2011-07-06 16:01:47 -07:00
Patrick Walton
aad0bcc8d5
rustc: Make AST tuple types use interior vectors
2011-07-06 15:53:47 -07:00
Patrick Walton
401b6362d7
rustc: Make meta items into interior vectors
2011-07-06 15:46:03 -07:00
Patrick Walton
479ce4d783
rustc: Move crate directives over to interior vectors
2011-07-06 15:15:06 -07:00
Patrick Walton
0226f56115
rustc: Convert attribute in the AST to interior vectors
2011-07-06 15:15:00 -07:00
Patrick Walton
7714cb297b
rustc: Make AST paths use interior vectors
2011-07-06 15:14:52 -07:00
Patrick Walton
368f1f4ba8
rustc: Move middle::tstate::collect_locals over to interior vectors
2011-07-06 15:14:45 -07:00
Patrick Walton
b232ad94fd
rustc: Remove unused or seldom-used imports from middle::tstate::{bitvectors, ck}
2011-07-06 15:14:35 -07:00
Patrick Walton
5739e0be01
rustc: Remove some unused references to std::vec from tstate::ann and tstate::auxiliary
2011-07-06 15:14:29 -07:00
Patrick Walton
abab04635a
rustc: Move middle::tstate::auxiliary and middle::tstate::bitvectors over to interior vectors
2011-07-06 15:14:19 -07:00
Patrick Walton
6d1517cf3a
rustc: Move tstate::annotate over to interior vectors
2011-07-06 15:14:09 -07:00
Patrick Walton
35c1dbd492
rustc: Convert bind_params_in_type() to use interior vectors
2011-07-06 15:13:59 -07:00
Patrick Walton
1d57800236
rustc: Migrate tag variants to interior vectors
2011-07-06 15:13:54 -07:00
Patrick Walton
2e1aa04fcd
rustc: Make object methods into interior vectors
2011-07-06 15:13:47 -07:00
Patrick Walton
0391e14fc2
rt: Double stack size
2011-07-06 15:13:00 -07:00
Patrick Walton
91eb63eaee
rt: Add a stack check to upcall_get_type_desc
2011-07-06 15:07:04 -07:00
Brian Anderson
2f7bc90514
Add a stdtest crate to hold the standard library tests
...
This will link to std and compile with the --test flag. Eventually the
run-pass/lib* tests will move here.
We could also put the std tests directly into the library and compile both a
library version and a test version, but I think this way will make for faster
builds.
Issue #428
2011-07-06 14:39:40 -07:00
Brian Anderson
b06ccb45ab
Begin adding unit testing infrastructure to the compiler
...
Add a --test flag and a pass for transforming the AST to generate a test
harness.
Issue #428
2011-07-06 14:39:36 -07:00
Brian Anderson
0eac640fdd
Swap the expected/actual for typechecking fields of updated records
...
In 'rec(a = b with c)', if a exists in c then the expected type for b is the
type of c.
2011-07-06 14:04:52 -07:00
Patrick Walton
05954f37b7
rustc: Use an interior vector for ty::count_ty_params
2011-07-06 12:05:18 -07:00
Patrick Walton
e066bae56e
rustc: Move the interner over to interior vectors
2011-07-06 12:05:13 -07:00
Patrick Walton
717ac3df77
rustc: Make the various constraint-related types in middle::ty use interior vectors
2011-07-06 12:05:06 -07:00
Patrick Walton
2fd46b54fb
rustc: Make type parameter substitutions interior vectors
2011-07-06 12:04:59 -07:00
Patrick Walton
cb2018c6db
rustc: Change constraints in types to use interior vectors
2011-07-06 12:04:07 -07:00
Patrick Walton
13d920c10d
rustc: Switch tag type parameters to interior vectors
2011-07-06 12:03:55 -07:00
Patrick Walton
ede35f4c43
rustc: Use interior vectors for tag type parameters
2011-07-06 12:03:06 -07:00
Eric Holk
111989a626
Removed what seems to be the last of the calls to rand(). Closes #582 .
2011-07-06 11:50:25 -07:00
Brian Anderson
066bcc6c79
Make "cannot determine a type for this local variable" non-fatal
2011-07-06 11:44:42 -07:00
Brian Anderson
5c20a8aa9c
Make "cannot determine a type for this expression" non-fatal. Closes #621
2011-07-06 11:44:36 -07:00
Brian Anderson
c31472e845
Refactor the typeck::writeback AST walk
...
All visitors take a wb_ctxt now instead of some taking a fn_ctxt and some
taking an ignore flag.
2011-07-06 11:42:20 -07:00
Brian Anderson
0c9c4cb575
Remove unused method from typeck::writeback
2011-07-06 11:42:20 -07:00
Brian Anderson
c1136e4e05
Limit exports from typeck
2011-07-06 11:42:20 -07:00
Brian Anderson
97c1537374
Limit exports from typeck::writeback
2011-07-06 11:42:20 -07:00
Lindsey Kuper
e30d2c82ae
Simplify AST for expr_anon_obj.
2011-07-06 11:36:06 -07:00
Lindsey Kuper
23bae67f4c
Simplify arguments to trans_anon_obj and friends.
2011-07-06 11:36:06 -07:00
Eric Holk
bc5d6aefda
Added a task wakeup callback. Closes #599 .
...
The callback happens when a task moves from the "blocked" state to the
"running" state. The callback is also inherited by child tasks. There
is currently only a native API.
This code hasn't been heavily exercised yet.
2011-07-06 11:30:00 -07:00
Patrick Walton
bbdba21b1f
rustc: Revert the conversion to interior vectors due to heap corruption
2011-07-06 11:26:26 -07:00
Patrick Walton
ec890fff23
Temp commit on the way to making meta_item into an interior vector
2011-07-06 11:09:08 -07:00
Patrick Walton
3f6c9f8d84
rustc: Move crate directives over to interior vectors
2011-07-06 11:09:08 -07:00
Patrick Walton
c927d97fa0
rustc: Convert attribute in the AST to interior vectors
2011-07-06 11:09:08 -07:00
Patrick Walton
1591955adf
rustc: Make AST paths use interior vectors
2011-07-06 11:09:08 -07:00