Commit Graph

152 Commits

Author SHA1 Message Date
Brian Anderson
ddbb31eb8e rustc: Remove the meta keyword
Issue #487
2011-06-18 20:23:05 -07:00
Brian Anderson
f58de2d687 Replace unexported meta tags with attributes
Issue #487
2011-06-18 20:23:05 -07:00
Brian Anderson
6e6bc5076c rustc: Support both meta tags and attributes for crate metadata
This is a transitional patch for converting from 'meta' to attributes.

Issue #487
2011-06-17 15:07:34 -07:00
Graydon Hoare
b84fffaa4e Reformat a bunch of recent churn. 2011-06-16 16:55:46 -07:00
Eric Holk
6ed6791df4 Removing dead upcall_join. Closes #509. 2011-06-16 12:23:13 -07:00
Michael Sullivan
bd8f6097a7 Get rid of old vec_append glue. 2011-06-16 11:58:29 -07:00
Patrick Walton
6c8e94f397 rustc: Change the default interior vector length to 4 per science 2011-06-15 14:14:33 -07:00
Lindsey Kuper
59a254ae32 Just some typo fixes. 2011-06-15 12:18:52 -07:00
Graydon Hoare
766d54df93 Fix a bunch of compile-command lines to use RBUILD 2011-06-15 12:01:19 -07:00
Graydon Hoare
ce72993488 Reformat source tree (minus a couple tests that are still grumpy). 2011-06-15 11:19:50 -07:00
Michael Sullivan
5378f48a03 Remove vec_append_glue from the compiler. 2011-06-14 16:09:17 -07:00
Michael Sullivan
95def699f1 Implement upcall_vec_append and use it for vector append. 2011-06-14 15:35:09 -07:00
Patrick Walton
bf5840d530 rustc: Do a dynamic alloca for generic interior vectors; fix data pointer calculation when spilling vectors 2011-06-14 14:03:38 -07:00
Patrick Walton
c3bf7d07e9 rustc: Implement simple interior vector append translation 2011-06-13 18:57:25 -07:00
Eric Holk
d1857d30fc This is the mega-ucontext commit. It replaces the task switching mechanism with a new one inspired by ucontext. It works under Linux, OS X and Windows, and is Valgrind clean on Linux and OS X (provided the runtime is built with gcc).
This commit also moves yield and join to the standard library, as requested in #42. Join is currently a no-op though.
2011-06-13 18:14:13 -07:00
Patrick Walton
913383d775 rustc: Preserve more type information for interior vectors at the LLVM level, allowing SROA to take place. log ~[ 2 ].(0) now optimizes to just log 2. 2011-06-12 00:44:43 -07:00
Patrick Walton
ac206068d9 rustc: Bump the default interior vector size up to 64 bytes 2011-06-11 19:42:48 -07:00
Patrick Walton
00eb3f5798 rustc: Sketch out translation of interior vector literals and take/drop glue 2011-06-10 19:36:33 -07:00
Graydon Hoare
52c4c9014f Encode meta tags in the crate and start sketching enhanced logic for resolving crate "use" directives.
Now with extra "works on OSX" kludging.
2011-06-10 12:57:29 -07:00
Patrick Walton
40e3a9fcbc Revert "Encode meta tags in the crate and start sketching enhanced logic for resolving crate "use" directives." due to tree bustage
This reverts commit ab3635eebe.
2011-06-09 18:15:13 -07:00
Graydon Hoare
ab3635eebe Encode meta tags in the crate and start sketching enhanced logic for resolving crate "use" directives. 2011-06-09 17:24:32 -07:00
Tim Chevalier
17ff2a0d79 Further support for predicate constraints
Changed function types to include a list of constraints. Added
code for parsing and pretty-printing constraints. This necessitated
splitting pprust into two files (pprust and ppaux) to break a
circulate dependency, as ty_to_str now needs to print out constraints,
which may include literals, but pprust depended on ty.
2011-06-09 11:37:52 -07:00
Marijn Haverbeke
77c1b9650f Some more workarounds to please the alias checker
Some of the vec utilities now only work on immutable vecs, since they
would have to be rewritten to do a lot more copying to be alias-safe.

Some forced copying was added to map.rs, showing a weakness in the
alias checker (or maybe the alias system): when fn args are passed
into a function, calling them must assume all aliases that are not
immutably rooted (directly connected to a local or temporary without
any mutable edges) become invalid. This will be a drag on functional
programming in Rust.

Work around alias issues in the stdlib
2011-06-09 13:08:39 +02:00
Rafael Ávila de Espíndola
698022d351 Update rust to build with newer llvm versions. 2011-06-08 14:08:24 -04:00
Graydon Hoare
721c5bbee8 More work on proper linkage name-mangling. Almost right, aside from version numbers. 2011-06-07 18:08:17 -07:00
Paul Stansifer
9f5dddf08c Now imports are not re-exported unless 'export' is explicitly used. 2011-05-31 18:43:26 -07:00
Eric Holk
d49998f0ed Switching over to wrappers for spawning functions of multiple arguments. Doesn't quite work yet. 2011-05-27 15:20:58 -07:00
Graydon Hoare
79c9e13073 More delicious dead code removal from runtime, upcalls. 2011-05-26 18:21:02 -07:00
Tim Chevalier
79693fab1f Fix typo in error message 2011-05-26 18:00:54 -07:00
Graydon Hoare
8e945dcd81 Remove native glues. All calls to C are direct now. 2011-05-26 16:45:01 -07:00
Rafael Ávila de Espíndola
ac836dd79c There is only one yield glue. 2011-05-24 18:29:08 -04:00
Rafael Ávila de Espíndola
0fc91b6ecc There is only one activate function now. 2011-05-24 17:00:45 -04:00
Brian Anderson
2505a2312e rustc: Run the llvm verifier pass before optimization. Closes #376
The optimization passes were hiding some codegen errors so now we run the
verifier both before and after optimization.
2011-05-23 19:52:57 -04:00
Lindsey Kuper
c3410bf927 More work on anonymous objects. 2011-05-20 17:59:56 -07:00
Eric Holk
3dd2877975 Using the right mode... 2011-05-20 16:51:09 -07:00
Eric Holk
0de27ce8bd Translated start_task, but it fails on spp == align_down(spp) 2011-05-20 16:51:09 -07:00
Eric Holk
d01948cd07 Called the new_task upcall. There are refcount issues though. 2011-05-20 16:51:08 -07:00
Graydon Hoare
31d65453d4 OptLevel changes. Accepts levels 0 to 3 only. '-O' is synonym for --OptLevel=2. 2011-05-19 12:46:10 -07:00
Patrick Walton
c88fc06b40 rustc: Fix output name of optimized glue when --save-temps is on 2011-05-18 18:48:41 -07:00
Rafael Ávila de Espíndola
bb7d4e15a8 Remove dead code. 2011-05-18 16:33:22 -04:00
Rafael Ávila de Espíndola
a795d0e5b2 And yet more dead code. 2011-05-18 14:28:08 -04:00
Marijn Haverbeke
09d8ef8d51 Finally rename std::_xxx to std::xxx
Except for _task, which is still a keyword.
2011-05-17 20:41:41 +02:00
Graydon Hoare
fbbc1a77d2 Rewrite everything to use [] instead of vec() in value position. 2011-05-16 18:21:22 -07:00
Kelly Wilson
b91ef944c8 Replace --bitcode with the canonical --emit-llvm 2011-05-16 14:07:43 -07:00
Kelly Wilson
196351aa44 Add automatic exe generation capabilities. Add --bitcode flag to generate only an LLVM bitcode file. 2011-05-16 14:07:43 -07:00
Brian Anderson
aaf41815b1 rustc: Dispose intrinsics memory buffer 2011-05-14 00:29:24 -04:00
Brian Anderson
371dbf9834 rustc: Dispose the intrinsics LLVMModuleRef 2011-05-14 00:22:44 -04:00
Brian Anderson
2f440b1452 rustc: lowercase the link and link::write modules 2011-05-13 16:55:37 -04:00
Marijn Haverbeke
3816e57fd2 Downcase std modules again, move to :: for module dereferencing
This should be a snapshot transition.
2011-05-12 21:30:44 +02:00
Graydon Hoare
d6f1fcff6b Add --time-llvm-passes. 2011-05-10 16:10:08 -07:00
Patrick Walton
2849103f24 rustc: Get rid of native Rust glue for all upcalls except the exit task glue 2011-05-10 14:04:34 -07:00
Patrick Walton
cfcc8678e5 rustc: Give our upcall definitions the right values 2011-05-09 16:59:18 -07:00
Patrick Walton
071ed380fb rustc: Declare upcalls with real signatures; preparation for killing rust_native_rust_* stubs 2011-05-09 15:33:02 -07:00
Patrick Walton
bc879a4e1e rustc: Replace our homebrew list of passes with the standard function and module passes, along with the TargetData passes. 2011-05-09 11:44:47 -07:00
Patrick Walton
a71fda40b8 rustc: Make llvm_err() conform to Postel's law a little better 2011-05-06 18:19:42 -07:00
Marijn Haverbeke
a3ec0b1f64 Rename std modules to be camelcased
(Have fun mergining your stuff with this.)
2011-05-06 22:51:19 +02:00
Patrick Walton
ab437253d3 rustc: Bump the number of native glues to 8 2011-05-06 12:50:48 -07:00
Graydon Hoare
9e3b096d98 Fix x86.rs triple for linux. 2011-05-05 17:20:27 -07:00
Rafael Ávila de Espíndola
4445d6771d Use symbolic register names so that we get the correct encoding on OS X. 2011-05-05 19:00:42 -04:00
Patrick Walton
a74feaf159 rustc: Link with intrinsics.bc; change intrinsics linkage to linkonce_odr 2011-05-05 12:46:22 -07:00
Patrick Walton
5fb6e6364b rustc: Add a binding to LLVM's bitcode parser 2011-05-05 11:34:45 -07: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
Patrick Walton
f6c472d816 rustc: Emit pure native glue; we don't call it yet 2011-04-29 16:40:30 -07: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
Rafael Ávila de Espíndola
b0980b7d79 Add a very minimal set of .cfi_* statements to get part of backtraces
working (on hello world at least):

~/inst/gdb/bin/gdb --args ./foo
(gdb) b write
...
(gdb) r
...
Breakpoint 1, 0xf7f04270 in write () from /lib32/libc.so.6
(gdb) bt
0  0xf7f04270 in write () from /lib32/libc.so.6
1  0x0804931a in rust_native_cdecl_3 ()
2  0x080487d7 in _rust_wrapper3_ ()
3  0x0804890a in _rust_fn5_main ()
4  0x08049440 in rust_native_cdecl_7 ()
2011-04-28 16:19:20 -04:00
Patrick Walton
5f2cfa7351 rustc: Add an operation field to compare glue with ==, <=, and < modes 2011-04-18 12:57:00 -07:00
Patrick Walton
abd78f2f04 rustc: Create stub glue for structural comparison 2011-04-18 11:14:38 -07:00
Graydon Hoare
35573144c5 Remove silly legacy glue-offset encoding, predicate runtime adjustments by ABI. LLVM should inline most glue now. 2011-04-09 00:54:46 +00:00
Graydon Hoare
8e9c5b96fb Change rust_vec to have a 16-byte header, to 16-byte-align vec-body data. Major perf win. 2011-04-02 19:05:12 -07:00
Graydon Hoare
661f1c541e Trans nomenclature tidy-up: upcall vs. native vs. extern. 2011-03-25 15:48:00 -07:00
Graydon Hoare
b2427509e2 Another go at changing compile-command, this time using RBUILD env var. 2011-03-25 15:07:27 -07:00
Graydon Hoare
91c2b82b09 Revert "Bulk-edit compile commands in emacs chatter to point to assumed build/ dir off src root."
This reverts commit 846f2e2ba9.
2011-03-25 14:05:38 -07:00
Graydon Hoare
846f2e2ba9 Bulk-edit compile commands in emacs chatter to point to assumed build/ dir off src root. 2011-03-25 13:48:37 -07:00
Rafael Ávila de Espíndola
933c01bd15 Every upcall needs a task pointer to find the C stack. It is just that when
handling cdecl call they should skip it when calling the final function.

There is some cleanup to be done on the generated IL, but this gets us
running Hello World for real.
2011-03-21 17:53:11 -04:00
Rafael Ávila de Espíndola
9dc3f3f183 Fixed version of my previous patch to rename the upcall functions. This time also update the inline assembly. 2011-03-16 18:09:12 -04:00
Patrick Walton
9b3db0ed44 rustc: Add some stub metadata to each crate 2011-03-11 15:35:50 -08:00
Rafael Ávila de Espíndola
10d8b4e861 Fix access to the rust stack. 2011-03-09 15:05:22 -05:00
Rafael Ávila de Espíndola
aeca138944 swap taskptr and callee in preparation for making taskptr optional. 2011-03-09 14:16:11 -05:00
Graydon Hoare
652cb48475 Assortment of additional work on vec-append. Not done yet. 2011-03-03 18:18:59 -08:00
Graydon Hoare
dddeba19d3 Sketch out some more pieces of vec-append. 2011-03-02 16:42:19 -08:00
Graydon Hoare
af4d6ae76b Add ABI tagging to crates, adjust rustc output and runtime stack-frame setup so access to argv works. 2011-02-22 16:37:27 -08:00
Graydon Hoare
467a628ffa Add the single instruction required in activate glue to fix burning darwin tinderbox. And transplant 100 lines of comments from the ML code. 2011-02-08 18:09:50 -08:00
Graydon Hoare
be97a77be8 Capture typarams into obj, independent of body tydesc. 2011-02-03 14:40:57 -08:00
Graydon Hoare
e92298187b Add bzero glue and preliminary code for dynamic size/align calculations. 2011-01-18 15:38:35 -08:00
Graydon Hoare
bc21965c98 Use homebrew memcpy, not llvm intrinsic. Can't run the latter on a rust stack. 2011-01-17 17:24:33 -08:00
Graydon Hoare
62c79fb216 Sketch closure-forming logic for nontrivial bindings. 2011-01-05 18:57:28 -08:00
Graydon Hoare
86188da348 Mop up cases of s/copy/take/, remove 'binding' terminology, whitespace police, and make obj/fn structural. 2010-12-20 16:26:38 -08:00
Patrick Walton
a7e9984999 rustc: Build tydescs for types, and make all take and drop operations go through the tydescs for simplicity (LLVM inlines them). 2010-12-20 10:23:37 -08:00
Graydon Hoare
62d62ce4da Remove calltup fields from ABI, add binding fields. 2010-12-16 23:26:07 -08:00
Patrick Walton
f371dc613a rustc: Set data layout and target triple 2010-12-03 13:52:54 -08:00
Graydon Hoare
44b051f34a Fix typo in x86 backend glue that was, by luck, only crashing on OSX. 2010-11-15 12:45:26 -08:00
Graydon Hoare
a352efadad Switch upcall glues to fastcall as well. 2010-11-14 13:41:10 -08:00
Graydon Hoare
4cbef9d8a1 Remove outptr from module-internal calls; use standard ABI returns. 2010-11-14 13:04:01 -08:00
Graydon Hoare
a404e54261 Teach rustc about const tag value, begin work on trans_copy_ty, make uint's to_str routine less clever and thereby resist overflow. 2010-11-09 17:50:31 -08:00
Graydon Hoare
ffb3861c70 Move symbol prefix logic into separate function, add underscore prefix for windows. 2010-11-05 18:31:23 -07:00
Graydon Hoare
e5229b97d7 Don't use string == in x86.rs, doesn't work. 2010-10-22 17:27:22 -07:00
Patrick Walton
05a3c5c0f3 rustc: Add an "_" prefix to assembler-generated symbols on Mac 2010-10-22 16:16:02 -07:00
Graydon Hoare
f5787ed80c Translate exit-task glue such that rustc's output programs exit properly. 2010-09-27 15:38:34 -07:00
Graydon Hoare
a2f4d9089a Fix indexing bug in rustc's indirect-upcall arg-copying loops. 2010-09-27 14:42:58 -07:00
Graydon Hoare
4cfc4250bf More work on trans, almost getting to the point of emitting an upcall. 2010-09-24 14:56:04 -07:00