Patrick Walton
8bd019bdc8
rt: Remember the number of captured type descriptors for objects in the type descriptor crate cache
2011-08-25 14:21:05 -07:00
Patrick Walton
880fd788eb
rustc: Add an extra flag to object tydescs so that shapes know how to find the captured subtydescs
2011-08-25 12:01:10 -07:00
Marijn Haverbeke
fa97793139
Revert "Back out copy-glue"
...
This reverts commit 629ee94a0b360e2df1a1bbf7bf61ef346adf36ad.
2011-08-24 20:30:20 +02:00
Brian Anderson
60547f6500
Use memmove to load istr literals. Issue #855
2011-08-24 10:24:59 -07:00
Marijn Haverbeke
629ee94a0b
Back out copy-glue
...
This wasn't a good idea after all.
2011-08-24 17:05:53 +02:00
Marijn Haverbeke
15b540ded4
Use a single builder object throughout
...
This seems to be faster than creating separate ones for each block
context.
2011-08-24 16:57:33 +02:00
Marijn Haverbeke
b9112525ba
Move to a more lightweight builder system
...
You now do
bld::Ret(bcx, someval)
where you used to say
bcx.build.Ret(someval)
Two fewer boxes are allocated for each block context, and build calls
no longer go through a vtable.
2011-08-24 16:48:10 +02:00
Marijn Haverbeke
e58c48bdda
Optimize += [x] into a simple push operation
...
This is a preparation for making vectors always-on-the-heap again,
which would cause way too much malloc traffic for this idiom. I will
add an efficient std::vec::push in the future, and migrate += [x] to
that instead.
Reduces compiler code size by 3%
2011-08-24 13:57:27 +02:00
Marijn Haverbeke
bead045f27
Check for is_terminated after translating a block
...
Closes #861
2011-08-24 10:55:34 +02:00
Brian Anderson
c1f2394245
Zero locals with initializers that may break or terminate. Closes #787
2011-08-23 16:29:21 -07:00
Brian Anderson
a3c8d4a5a5
Recheck the while loop contition after continuing. Closes #825
2011-08-23 14:51:22 -07:00
Brian Anderson
0f1f5e67ea
Create correct drop glue for istrs. Issue #855
2011-08-22 14:34:55 -07:00
Brian Anderson
fd8ca2cf5d
Translate istr literals. Issue #855
2011-08-22 14:34:36 -07:00
Brian Anderson
309a7534d7
Move trans::ivec to middle::trans_ivec
2011-08-22 12:04:05 -07:00
Brian Anderson
179658e20f
Move trans_ivec into the ivec module
2011-08-22 11:23:46 -07:00
Brian Anderson
152cbaade7
Move functions from syntax::ast to syntax::ast_util
...
This leaves syntax::ast just defining the AST, which strikes me as somewhat
nicer
2011-08-22 10:44:04 -07:00
Marijn Haverbeke
1a45a84e73
Start using copy glue to copy bits that may contain ivecs
...
This is not currently necessary, but will be, when I land the new ivec
representation.
2011-08-22 14:17:27 +02:00
Marijn Haverbeke
42864377a4
Remove silly restriction on passing type params by alias
...
Since they are now passed by pointer, this is no longer a problem
2011-08-22 14:06:20 +02:00
Marijn Haverbeke
10269dfaeb
Replace &ty::t with ty::t throughout the compiler
...
Type handles are uints, passing them by reference only causes
unnecessary spilling.
2011-08-22 14:06:17 +02:00
Marijn Haverbeke
081caf5bb8
Do not check for self-assign unless dest is initialized
...
Also, give copy_val and move_val a more sane return type.
2011-08-22 14:05:56 +02:00
Marijn Haverbeke
c930af74d5
Write call_copy_glue
2011-08-22 14:05:54 +02:00
Marijn Haverbeke
cd5e4c21ee
Add skeleton of copy glue that actually copies
2011-08-22 11:41:49 +02:00
Marijn Haverbeke
7588a89553
Rename copy_glue back to take_glue
2011-08-22 10:42:56 +02:00
Marijn Haverbeke
b24f978011
Drop arguments on the caller side, not the callee
...
This makes it easier for the caller to optimize the take/drop away for
temporary values, and opens up new possibilities for alias handling.
Breaks tail calls.
2011-08-22 10:16:09 +02:00
Marijn Haverbeke
35c962e9a1
Pass structural types by pointer, not by value
...
If we lose tail calls, this is possible. It simplifies things a lot.
Direct motivation: We want ivecs with pointers pointing into
themselves. When copying those, the pointers have to be adjusted. It
is impossible to this when copying them with Load/Store.
2011-08-22 10:16:09 +02:00
Patrick Walton
25416bfae1
rustc: Introduce ABI versioning so we can change value representations without breaking the compiler
2011-08-20 14:22:09 -07:00
Brian Anderson
518dc52f85
Reformat
...
This changes the indexing syntax from .() to [], the vector syntax from ~[] to
[] and the extension syntax from #fmt() to #fmt[]
2011-08-20 11:04:00 -07:00
Michael Sullivan
a7e559ee2e
Fix polymorphic iterators. Closes #829 .
2011-08-19 11:54:46 -07:00
Marijn Haverbeke
bc998c6140
Use move semantics when returning a local var
...
(Since the variable won't be used after return anyway.)
2011-08-19 10:19:21 +02:00
Marijn Haverbeke
f6ae60a432
Temporary work-around for issue #843
2011-08-19 10:19:21 +02:00
Patrick Walton
031529e3fe
rustc: Only emit gc root intrinsic calls if the GC flag is on, to work around #836
2011-08-18 18:13:36 -07:00
Brian Anderson
1aa1f8c4b7
Rename various things from ivec to vec
2011-08-18 14:32:25 -07:00
Brian Anderson
4fc3618233
Change ast::ty_ivec, ty::ty_ivec to ty_vec
2011-08-18 14:11:06 -07:00
Brian Anderson
504ec8b00d
Rename some vec upcalls and trans functions from vec* to evec*
2011-08-18 13:09:50 -07:00
Brian Anderson
c2d2dad093
Remove ast::ty_vec
2011-08-18 13:09:50 -07:00
Brian Anderson
ec898244f7
Remove seq_kind from ast::expr_vec
2011-08-18 13:09:50 -07:00
Brian Anderson
0a8bffceb3
Simplify the _rust_main/rust_start interface
...
rust_start will always call _rust_main with the command line args, and it is
_rust_main's responsibility to free the args ivec heap. _rust_main will be
generated slightly differently depending on whether main takes an ivec or not:
if so then it's just passed through to main, otherwise it frees the ivec
directly.
2011-08-18 13:09:49 -07:00
Brian Anderson
c2d8a4df35
Continue transition to an ivec-only main
...
Only generate a single main function. Rename rust_start_ivec to rust_start,
leaving a transitional rust_start_ivec in place.
2011-08-18 13:09:49 -07:00
Marijn Haverbeke
cd440d338e
Remove or _-prefix all unused function arguments
...
This should make the compilation process a bit less noisy.
2011-08-18 10:02:13 +02:00
Patrick Walton
117d21d6c2
rustc: Stub stack map generation machinery
2011-08-17 19:18:44 -07:00
Patrick Walton
51af43f192
rustc: Use "rust" GC in Rust functions
2011-08-17 18:26:51 -07:00
Patrick Walton
f17edf9829
rustc: Use obstacks in lieu of dynamically-allocated frames only when the frame is actually dynamically-sized
2011-08-17 18:14:57 -07:00
Patrick Walton
0b7af40384
rustc: Use explicit return blocks
2011-08-17 17:49:54 -07:00
Patrick Walton
df51fe36f1
Revert "rt: Use obstacks in lieu of dynamically-sized frames"
...
This reverts commit cc5fcfce89312042e52401eb883160ebf289235f.
2011-08-17 17:27:31 -07:00
Patrick Walton
49397b5af6
rustc: Remove dead i2p function
2011-08-17 17:26:55 -07:00
Patrick Walton
cc5fcfce89
rt: Use obstacks in lieu of dynamically-sized frames
2011-08-17 17:24:57 -07:00
Graydon Hoare
5dd62b7d41
Trivial commit to test github AMQP hook
2011-08-17 16:06:33 -07:00
Graydon Hoare
b7bf1dd5b0
Trivial commit to test github AMQP hook
2011-08-17 15:59:26 -07:00
Patrick Walton
72b2f8207d
rustc: Add missing "bcx = "
2011-08-17 14:01:59 -07:00
Patrick Walton
702fe5cdac
rustc: Run obstack cleanups at the end of each function
2011-08-17 13:58:49 -07:00