Brian Anderson
a1b3e3ea10
rustc: Cache results of ty::tag_variants
2011-12-15 16:27:18 -08:00
Graydon Hoare
8f0c475562
Add an --out-dir option to rustc.
2011-12-15 13:52:43 -08:00
Brian Anderson
ce24ce1b5f
Merge pull request #1307 from elly/cargo
...
cargo: detect library installs properly
2011-12-15 13:53:24 -08:00
Niko Matsakis
aa3d58c8c0
restore old buggy behavior where n_obj_params is always 0 for fns
2011-12-15 13:44:06 -08:00
Niko Matsakis
1e3259e119
massive refactor of how closures work
2011-12-15 13:44:06 -08:00
Niko Matsakis
d381cc072a
resurrect tps_fn() and put it to use this time.
2011-12-15 13:44:06 -08:00
Graydon Hoare
7694689044
Fix bug in library output filename construction: /tmp/foo.rc was being linked as lib/tmp/foo-<hash>-<vers>.so not /tmp/foo-<hash>-<vers>.so
2011-12-15 11:33:57 -08:00
Elly Jones
a87d80f6e2
cargo: detect library installs properly
2011-12-15 10:11:01 -05:00
Marijn Haverbeke
1753607f6a
Suppress unused variable warnings in cargo
2011-12-15 13:46:27 +01:00
Marijn Haverbeke
f82d101511
Iterate over an array when creating the parser's reserved word table
2011-12-15 08:18:38 +01:00
Marijn Haverbeke
2cd3d1ff59
Don't try to look up crate modules in ext_map in resolve
...
Closes #1305
2011-12-15 08:17:13 +01:00
Graydon Hoare
dde5860380
Remove some duplicated unused parts of std now that they're present in core.
2011-12-14 18:04:45 -08:00
Niko Matsakis
f7540b165c
remove unused tps_fn(); comment out unused var
2011-12-14 15:41:41 -08:00
Stefan Plantikow
af8e471908
Fixed type resolution error in math tests
2011-12-14 14:54:16 -08:00
Stefan Plantikow
50db7ce906
Moved std::math to std::core
...
- merges math and float into core::float
- Splits core::ctypes into core::ctypes and core::mtypes
- cmath is not exported
- stdtest::math passes
2011-12-14 14:54:16 -08:00
Stefan Plantikow
6d0901cb4d
std: export math_f* as math::f* submods and use tailcalls in std::math
2011-12-14 14:54:16 -08:00
Niko Matsakis
6cdb69cccb
refactor trans into trans_closure; restore original closure repr
2011-12-14 14:32:28 -08:00
Niko Matsakis
5a5f33c779
treat native fns as shared closures
2011-12-14 14:32:27 -08:00
Niko Matsakis
d32d0f28d5
insert a field into the closure storing number of ty descs
2011-12-14 14:32:27 -08:00
Niko Matsakis
f7cce6b819
pull out the code from iter_structural_ty for handling functions,
...
as we will have to do very careful and non-generic things
2011-12-14 14:32:26 -08:00
Niko Matsakis
7c7cb26487
treat different kinds of closures differently
2011-12-14 14:32:25 -08:00
Niko Matsakis
35fe86dab7
export upcall_clone_type_desc
2011-12-14 14:32:25 -08:00
Niko Matsakis
1869306a7e
change syntax from lambda[send] to sendfn
2011-12-14 14:32:24 -08:00
Niko Matsakis
f512e67fb9
clone type desc into exchange heap
2011-12-14 14:32:24 -08:00
Niko Matsakis
85f381fb8a
restructure, temporarily working around what looks like an LLVM bug
2011-12-14 14:32:23 -08:00
Niko Matsakis
eaaa3c30bf
translate unique closure env better
2011-12-14 14:32:23 -08:00
Niko Matsakis
e51c29fab0
remove unused options
2011-12-14 14:32:22 -08:00
Niko Matsakis
6b744b284e
remove extra trailing semicolon
2011-12-14 14:32:21 -08:00
Niko Matsakis
ba6da950f1
restore old functionality for now
2011-12-14 14:32:21 -08:00
Niko Matsakis
6a8cb704d9
get basic code generation working, clone type descs for lambda[send]
2011-12-14 14:32:20 -08:00
Niko Matsakis
36177dd3e9
make fact that trans'ing lvar does not modify bcx explicit in type
2011-12-14 14:32:20 -08:00
Niko Matsakis
7fbca4e31c
sendable functions now "work", meaning pass through trans/typestate
...
but they do not generate correct code
2011-12-14 14:32:19 -08:00
Niko Matsakis
aa1cd61c84
push changes through to get things compiling, if not running.
2011-12-14 14:32:18 -08:00
Niko Matsakis
c28ada0368
first attempt, not happy with it
2011-12-14 14:32:18 -08:00
Niko Matsakis
941101a9cd
define ty and update parser for sendable lambdas
2011-12-14 14:32:17 -08:00
Brian Anderson
327ec89f69
Register snapshots
2011-12-14 14:11:53 -08:00
Brian Anderson
5b35c9caf5
rustc: Always write split stack prologues
2011-12-14 11:07:48 -08:00
Brian Anderson
f0254e1e0d
rt: Add a FIXME to 32-bit __morestack about trashing %eax
2011-12-13 19:13:17 -08:00
Brian Anderson
f332643e7f
rt: Use %ecx instead of %eax during the second half of __morestack
...
If Rust code made use of return values then using %eax here would clobber it
2011-12-13 18:26:56 -08:00
Brian Anderson
a195ab2dd9
Update LLVM. Fixes for segmented stacks with fastcc functions
2011-12-13 17:09:02 -08:00
Graydon Hoare
fa9ad984fb
Copy first batch of material from libstd to libcore.
2011-12-13 16:34:50 -08:00
Brian Anderson
32087f5c2a
rt: Don't clobber fastcc argument registers in __morestack
2011-12-13 15:54:14 -08:00
Patrick Walton
be3352939a
llvm: Fix LLVM submodule revision
2011-12-13 15:34:04 -08:00
Patrick Walton
cd0e57d2d4
stdlib: Fix spelling errors in documentation of libstd/str.rs
2011-12-13 14:53:14 -08:00
Graydon Hoare
202260f19e
Attempt to fix windows builder.
2011-12-13 12:32:00 -08:00
Graydon Hoare
31b9bd5b33
Merge branch 'master' of github.com:graydon/rust
2011-12-13 11:02:03 -08:00
Graydon Hoare
548fe0eda9
Register new snapshots and teach snapshot script to deal with extracting new-style versioned snapshots.
2011-12-13 10:54:48 -08:00
Marijn Haverbeke
7c3d78013a
Reorganize some code in typeck
...
This should cut down a lot on the amount of closures being allocated, and removes
some duplicated code.
2011-12-13 15:28:22 +01:00
Niko Matsakis
a98dec035f
fix track alloc code
2011-12-12 18:25:17 -08:00
Brian Anderson
1c1bc2f1cd
rt: Remove some duplicated code from 64-bit __morestack
2011-12-12 16:58:21 -08:00
Haitao Li
76f13c95a0
rustc: Work around a segmentation fault
...
On Linux/Mac, I got a segmentation fault:
(gdb) bt
#0 0x00000000007519af in glue_take584 ()
#1 0x00000000006d4bec in
back::rpath::get_rpath_flags::_3899df2ca513c603 ()
#2 0x00000000006c7655 in back:🔗 :link_binary::_7afde00a9791031c ()
#3 0x00000000007d3ff5 in driver::rustc::compile_input::thunk9212 ()
#4 0x0000000000710f24 in driver::rustc::time::_3e691b2a4ba58aee ()
#5 0x000000000071a79d in
driver::rustc::compile_input::_7b4a41b87c18e034 ()
#6 0x000000000072f0a9 in driver::rustc::main::_cd8b8c8185af3dee ()
#7 0x000000000072f1ed in _rust_main ()
#8 0x00007ffff7e6e146 in task_start_wrapper (a=<optimized out>) at
../src/rt/rust_task.cpp:176
The variable `output` or `out_filename` becomes (null) after the definition
of `fn unlib`. Move the function defintion to the beginning seems
prevent the crash on Linux.
2011-12-12 16:15:29 -08:00
Haitao Li
6c6f83f693
rustc: Refactor and get built on Windows
2011-12-12 16:15:29 -08:00
Haitao Li
ba0649cb41
rustc: Hash includes direct dependent crates
2011-12-12 16:15:29 -08:00
Haitao Li
f3c206c9f4
rustc: Encode crate hash into metadata
2011-12-12 16:15:29 -08:00
Haitao Li
2ba317ddb2
build: Temp hack to make transition to new snapshot
2011-12-12 16:15:29 -08:00
Haitao Li
03d1644acc
Update snapshot scripts to pick up the versioned libraries
2011-12-12 16:15:29 -08:00
Haitao Li
6dbd4c21e9
rustc: build versioned library with hash in its name
...
Also updated build to install versioned libraries and added a few
missing actions for `make clean`.
2011-12-12 16:15:29 -08:00
Haitao Li
b4f450a793
Using filename when finding libraries for linking
...
Revert #999 commit 16dad84f7b
2011-12-12 16:15:29 -08:00
Brian Anderson
887d970fee
rt: Make unwinding through __morestack work on mac
...
Had to bump the min stack size in some of the tests from 256 bytes
to 1024 bytes. Not sure why yet.
2011-12-12 16:15:29 -08:00
Brian Anderson
3e32f6623c
rt: Write CFI instructions that (might) work on mac in __morestack
...
The DW_CFA_val_offset_sf instruction doesn't seem to work on mac,
even after implementing it in the llvm-mc assembler, so now
I'm looking for a different way to communicate the stack pointer
adjustment to the unwinder.
2011-12-12 16:14:17 -08:00
Marijn Haverbeke
e47f8fc709
Handle external-crate case when printing full unresolved paths
...
Closes #1283
2011-12-12 13:36:29 +01:00
Brian Anderson
163c42baf8
Switch to the Rust fork of LLVM in preparation for enabling stack growth
2011-12-11 18:57:46 -08:00
Brian Anderson
7a8e73662d
rt: Make unwinding through __morestack work on mac
...
Had to bump the min stack size in some of the tests from 256 bytes
to 1024 bytes. Not sure why yet.
2011-12-11 18:49:04 -08:00
Brian Anderson
7bc34f63d8
rt: Write CFI instructions that (might) work on mac in __morestack
...
The DW_CFA_val_offset_sf instruction doesn't seem to work on mac,
even after implementing it in the llvm-mc assembler, so now
I'm looking for a different way to communicate the stack pointer
adjustment to the unwinder.
2011-12-11 16:32:36 -08:00
Brian Anderson
b73caec3ce
rt: Call upcall_fail on the C stack
2011-12-11 14:35:18 -08:00
Brian Anderson
5cd08586f6
rt: Add DWARF CFI info to asm_call_on_stack
...
This will allow the unwinder to unwind this function so we can call
upcall_fail on the C stack.
2011-12-11 14:35:09 -08:00
Brian Anderson
4699b6865f
build: Use llvm-mc as our assembler
...
LLVM's assembler understands .cfi pseudo-ops on the mac, which we need in
order to generate frames that can be DWARF-unwound
2011-12-10 18:51:21 -08:00
Elly Jones
f05eaa4a65
cargo: support github:<user>/<repo>
2011-12-09 14:21:21 -08:00
Elly Jones
0acf170c9f
cargo: support git:// URIs.
2011-12-09 14:21:21 -08:00
Elly Jones
b53e4e8463
cargo: don't stick an extra / in CARGO_ROOT
2011-12-09 14:21:21 -08:00
Elly Jones
7b0c73d8fa
cargo: refactor a bit
2011-12-09 14:21:21 -08:00
Elly Jones
7f945eeae9
cargo: support installing crates
...
Introduce the notion of CARGO_ROOT to override HOME if need be. Build packages
there instead of in /tmp. Install to CARGO_ROOT/bin and CARGO_ROOT/lib.
2011-12-09 14:21:21 -08:00
Erick Tryzelaar
e3a066bde8
Swap arg order for option::{may,maybe}
...
This lets us write the block syntax sugar:
option::may(x) { |y| … }
2011-12-09 10:22:24 -08:00
Marijn Haverbeke
44ffd8e3aa
Allow type annotations for blocks
...
I.e. {|foo: int| -> int foo + 2}
Issue #1275
2011-12-09 09:42:22 +01:00
Brian Anderson
54f72fbc10
rustc: Actually hook the crate_type attribute into session
2011-12-08 21:31:50 -08:00
Brian Anderson
4f17131855
Add crate_type attributes to rustc, std, core
2011-12-08 21:09:48 -08:00
Brian Anderson
9116a6d9b1
rustc: Support 'crate_type' attribute
...
[crate_type = "lib"] builds it as a library.
[crate_type = "bin"] builds it as an executable.
Executable is the default. --lib and --bin switches override.
2011-12-08 21:09:15 -08:00
Brian Anderson
6156295a4c
rustc: Move linking into compile_input
2011-12-08 20:33:31 -08:00
Brian Anderson
fd81fb6a24
rustc: Determine the crate type (lib/bin) in the session, not session opts
...
This is in preparation for adding a #[crate_type] attribute
2011-12-08 20:08:00 -08:00
Brian Anderson
9e6ff44d93
rt: Make __morestack work on win32
2011-12-08 16:47:33 -08:00
Marijn Haverbeke
0e74121ddb
Error when parsing the empty record type
...
Issue #1200
2011-12-08 13:29:43 +01:00
Marijn Haverbeke
9a269a3aa8
Allow binding of nested patterns
...
See src/test/run-pass/nested-patterns.rs for some examples. The syntax is
boundvar@subpattern
Which will match the subpattern as usual, but also bind boundvar to the
whole matched value.
Closes #838
2011-12-08 12:03:48 +01:00
Marijn Haverbeke
8c966b7b18
Stop passing around some unused information in typeck
2011-12-08 10:53:04 +01:00
Marijn Haverbeke
a7c6cb7385
Consider variant constructors pure functions for the purpose of purity checking
...
Closes #1269
2011-12-08 10:26:42 +01:00
Brian Anderson
94b0fee6f1
rt: Reorganize and add documentation for rust_upcall.cpp
2011-12-07 18:50:23 -08:00
Brian Anderson
31fe5d0bd8
rt: Run most upcalls on the C stack
2011-12-07 18:50:23 -08:00
Niko Matsakis
0fc4403442
use util::rational to work around bug w/ floats on win
2011-12-07 17:05:58 -08:00
Niko Matsakis
1ff8994fce
Purge old map impl: more collisions, not clear it is safe on 64bit
2011-12-07 17:05:58 -08:00
Niko Matsakis
4b704ac69b
improve comments
2011-12-07 17:05:58 -08:00
Niko Matsakis
ed0e13f1d8
fix old map impl, add logging
2011-12-07 17:05:58 -08:00
Niko Matsakis
30a2361e68
add some debugging logs
2011-12-07 17:05:58 -08:00
Niko Matsakis
13a3288f3f
dec size in remove
2011-12-07 17:05:58 -08:00
Niko Matsakis
ddfe82a466
make rehashing more efficient by not re-allocating entries
2011-12-07 17:05:58 -08:00
Niko Matsakis
729345cb97
implement a chained hashmap
2011-12-07 17:05:58 -08:00
Graydon Hoare
501c514e89
Register new snapshots (containing libcore auto-importing it now).
2011-12-07 16:36:56 -08:00
Graydon Hoare
3ccdd2a098
Mention new dirs in README.
2011-12-07 15:34:30 -08:00
Graydon Hoare
e4aa73c0f9
Change snapshot script to pick up host libcore as well.
2011-12-07 15:34:16 -08:00
Brian Anderson
81f932e7d7
rt: Fix alignment of stacks generated by __morestack
2011-12-07 14:06:46 -08:00
Graydon Hoare
e056ffa17d
Inject the view_items for core in the right place, add comment documenting why the wrong place was wrong.
2011-12-07 13:33:00 -08:00
Graydon Hoare
799690bea0
Remove stmt_crate_directive, it's vestigial and confusing.
2011-12-07 13:33:00 -08:00
Marijn Haverbeke
17e99ec57f
Fix test that used an oversized int literal
2011-12-07 22:10:56 +01:00
Marijn Haverbeke
7548a0d77a
Restore accidentally overwritten test
2011-12-07 22:02:38 +01:00
Marijn Haverbeke
3d0610b072
Check for literals that are out of range for their type
2011-12-07 21:53:05 +01:00
Marijn Haverbeke
e3eca9174b
Change literal representation to not truncate
...
Also shuffles around the organization of numeric literals and types,
separating by int/uint/float instead of machine-vs-non-machine types.
This simplifies some code.
Closes #974
Closes #1252
2011-12-07 21:08:28 +01:00
Graydon Hoare
6daa233a73
Register new snapshots.
2011-12-07 11:57:48 -08:00
Graydon Hoare
a3f48d3fe1
Merge branch 'master' of github.com:graydon/rust
2011-12-07 11:52:38 -08:00
Niko Matsakis
6c95e400d8
repair more hash functions
2011-12-07 07:35:25 -08:00
Marijn Haverbeke
03a6e54212
Disallow binding by-mut-ref and by-move arguments
...
Fix bug in bound by-copy arguments.
Closes #1261
2011-12-07 15:28:57 +01:00
Marijn Haverbeke
d28e0c0c0a
Make typestate properly descend pattern guards
...
Closes #1265
2011-12-07 14:09:45 +01:00
Brian Anderson
9656ceac60
rt: Put 16 guard bytes at the end of the stack
2011-12-06 22:35:42 -08:00
Brian Anderson
5d1a1dc420
rt: Rename stk_seg.limit to stk_seg.end
...
rust_task is using the word limit it two ways, so one has to change.
2011-12-06 21:45:53 -08:00
Brian Anderson
3d7b89bc4d
rt: Reorganize rust_upcall.cpp a bit
2011-12-06 21:44:19 -08:00
Brian Anderson
00636e3155
rt: Convert log_type and cmp_type upcalls to shim form
2011-12-06 21:44:19 -08:00
Brian Anderson
c11d0b0aa0
rt: Move upcall_cmp_type/upcall_log_type to rust_upcall.cpp
2011-12-06 21:44:18 -08:00
Niko Matsakis
9b7347dd96
modify upcalls to take structs as args
2011-12-06 21:44:18 -08:00
Niko Matsakis
8b608125ac
fix hash function: + binds tighter than <<
2011-12-06 21:34:50 -08:00
Niko Matsakis
66355607da
hack for now: map uint hashes into a u32, which helps x86_64 perf.
2011-12-06 19:55:46 -08:00
Niko Matsakis
aa99bfa170
do not stringify AST nodes unless emitting comments
2011-12-06 19:55:45 -08:00
Niko Matsakis
84bbc12444
Merge branch 'master' of github.com:graydon/rust
2011-12-06 19:55:20 -08:00
Graydon Hoare
1652b921fa
Fix condition in snapshot script. Argv is never 2 long, it can be 3 or 4.
2011-12-06 17:50:21 -08:00
Brian Anderson
9a738fd61d
rt: Various tweaks to make __morestack unwinding work on linux
...
When unwinding through __morestack the stack limit in the TLS is invalidated
and must be reset. Instead of actually landing at __morestack we're
just going to make all our Rust landing pads call upcall_reset_stack_limit,
which will find the stack segment that corresponds to the current stack
pointer and put the limit in the TLS.
Also massively expand the stack segment red zone to make more room for the
dynamic linker. Will fix in the future.
2011-12-06 16:32:41 -08:00
Niko Matsakis
28f9af6074
Merge branch 'master' of github.com:graydon/rust
2011-12-06 15:19:03 -08:00
Graydon Hoare
a1b215aea1
Add --no-core option and inject a use core/import core::* pair into crate unless it's given.
2011-12-06 14:40:30 -08:00
Graydon Hoare
03d4ec5415
Fix next-node-id "hackasaurus" in comp/front/test.rs.
2011-12-06 14:40:30 -08:00
Niko Matsakis
39b1657b2c
Merge branch 'master' of github.com:graydon/rust
2011-12-06 14:02:32 -08:00
Brian Anderson
89efb7d981
libstd: Update docs
2011-12-06 13:58:54 -08:00
Graydon Hoare
baf3de4733
Rename --noverify flag to --no-verify.
2011-12-06 13:02:59 -08:00
Graydon Hoare
447414f007
Establish 'core' library separate from 'std'.
2011-12-06 12:13:04 -08:00
Austin Seipp
b513a5a500
Make valgrind usage more consistent and less error prone.
...
I was still having issues with the build system somehow getting confused
as to which set of valgrind headers to use when compiling rt.
This commit moves all the valgrind headers into their own directory
under rt and makes the usage more consistent. The compiler is now passed
the -DNVALGRIND flag when valgrind is not installed, as opposed to
passing -DHAVE_VALGRIND.
We also pass -I src/rt to the compiler when building rt so you can more
easily import what you want. I also cleaned up some erroneous #includes
along the way.
It should be safe to always just import the local valgrind headers and use
them without question. NVALGRIND turns the operations to no-ops when it
is active, and the build and tests run cleanly with or without.
2011-12-06 01:15:29 -06:00
Brian Anderson
8d8148f1f7
test: More tests for unwinding + morestack
2011-12-05 19:21:46 -08:00
Brian Anderson
58844aee42
rt: Make stack unwinding work more correctly with stack growth
2011-12-05 17:42:58 -08:00
Brian Anderson
a731f165df
test: Test hitting the dynamic linker in the red zone
2011-12-05 17:20:59 -08:00
Brian Anderson
3b8bfaf534
rt: Use an out pointer for rust_new_stack
...
upcall_call_shim_on_c_stack does not handle return values
2011-12-05 17:11:35 -08:00
Niko Matsakis
7bf41392b6
correct the use of 'sed -i'
2011-12-05 15:12:36 -08:00
Brian Anderson
98cd96ce96
test: Add more tests for stack growth
2011-12-05 14:44:15 -08:00
Brian Anderson
1720bc2e81
rt: Unwind through __morestack on 32-bit linux
2011-12-05 12:10:55 -08:00
Brian Anderson
12e401cc7e
rustc: Remove whitespace
2011-12-05 11:21:44 -08:00
Haitao Li
47ea57fead
rustc: Add suffix ".rc" to LLVM module identifier
...
LLVM code generator emits the ".file filename" directive for ELF
backends. Value of the "filename" is set as the LLVM module identifier.
Due to a LLVM MC bug[1], LLVM crashes if the module identifer is same as
other symbols such as a function name in the module.
This patch adds a ".rc" suffix (means crates) to LLVM module identifier
to workaround the bug.
Fixes issue #1251 .
1. http://llvm.org/bugs/show_bug.cgi?id=11479
2011-12-05 17:21:20 +08:00
Brian Anderson
52d7dc5e0a
rt: Update 32-bit __morestack for recent LLVM changes
2011-12-04 20:40:34 -08:00
Stefan Plantikow
a69eab16ec
typeck: Fix for #932
2011-12-05 01:23:10 +01:00
Brian Anderson
a92218e630
Upgrade LLVM to svn revision 145779
...
This pulls in commits 145765 & 145766, which are required for split stacks.
2011-12-04 14:59:56 -08:00
Haitao Li
96b0881a68
rustc: Fix memory leak in do-while loop
...
Issue #1257
2011-12-05 00:38:38 +08:00
Brian Anderson
292663b8ef
rt: Implement 32-bit __morestack for mac
2011-12-02 17:44:23 -08:00
Brian Anderson
c254936f32
rt: Fix __morestack prologue on x86_64 mac
2011-12-02 15:32:51 -08:00
Stefan Plantikow
1b7f1415d6
build: added CFG_INSTALL_SNAP for automatically activating test snapshots
...
This is only guaranteed to work when building in the top-level dir
2011-12-02 12:23:50 -08:00
Stefan Plantikow
68a82e4468
const_check: trans: added support for trivial casts
...
Part of #1215
2011-12-02 11:58:35 -08:00
Stefan Plantikow
4ba3158e4f
parse: typeck: enabling trivial casts of tail-call return values
...
introduces ctypes::m_* machine type aliases for int, uint, float
depending on cfg(target_arch) that are used in tests
2011-12-02 11:38:24 -08:00
Stefan Plantikow
29f7cdffa4
ty: trans: added support for dropping trivial casts
2011-12-02 11:38:24 -08:00
Stefan Plantikow
d116a6f2d3
ty: added type comparison that subs prim types with targ_cfg machine types
2011-12-02 11:38:24 -08:00
Brian Anderson
236bf7a9b8
stdlib: Actually write the word 'fail' instead of just thinking it
2011-12-02 11:10:03 -08:00