Commit graph

6462 commits

Author SHA1 Message Date
Erick Tryzelaar 9db3525e42 Fix a typo. 2011-12-19 07:27:16 -08:00
Marijn Haverbeke e4e2d6d1a1 Fix bug in type parameter handling for impl methods
The parameters of the impl weren't being combined in the right way
with the parameters of the methods. The test worked only by accident.

Issue #1227
2011-12-19 15:43:02 +01:00
Marijn Haverbeke 619d7c3f72 Associate names with types introduced by items
Issue #828

This is not a full solution yet. To really get sane error messages,
we'll also have to guess the name to apply to literals, which seems
non-trivial.
2011-12-19 13:52:58 +01:00
Marijn Haverbeke 60acae4df7 Add type argument field to expr_path
This way, you can explicitly provide type parameters when calling a
generic method.

Issue #1227
2011-12-19 10:43:23 +01:00
Marijn Haverbeke 4d524b957f Complain when multiple methods in the same scope match a call
Issue #1227
2011-12-19 10:13:42 +01:00
Marijn Haverbeke 7185ea35c3 Use quotes around tokens in parser error messages to make them more readable
Closes #1328
2011-12-19 09:59:51 +01:00
Josh Matthews 6637340c28 Properly calculate base working dir for compile units. 2011-12-19 03:42:58 -05:00
Josh Matthews 1d3d28bdf1 Long lines. 2011-12-19 02:52:21 -05:00
Josh Matthews 52dbe4cc1d Fix merge error and rebasing changes for debug information. 2011-12-19 01:36:37 -05:00
Josh Matthews df6052c4f8 Remove source line generation craziness. Ensure incorrect subprogram caches are not conflated. Generate ast_map entries for object members and resource constructors and destructors. 2011-12-18 23:53:44 -05:00
Josh Matthews c6f16ed2c4 Hide extended, unfinished debug information behind --xg compiler flag. 2011-12-18 23:48:04 -05:00
Josh Matthews 8597077b7a Clean up some names and factor out some common code. 2011-12-18 23:46:39 -05:00
Josh Matthews 61e8b44f20 Add support for vectors. 2011-12-18 23:46:39 -05:00
Josh Matthews 30d019d520 Add record debug information. 2011-12-18 23:46:39 -05:00
Josh Matthews f43ed8f1bd Fix up ast types after literal changes. 2011-12-18 23:44:21 -05:00
Josh Matthews 134585bb06 Add debug information for boxed and unique values. 2011-12-18 23:44:21 -05:00
Josh Matthews e25f6d03eb Remove rebase error. 2011-12-18 23:44:21 -05:00
Josh Matthews 064d757ece Handle inferred basic types when generating debug information for types. 2011-12-18 23:44:21 -05:00
Josh Matthews 6c26b892e4 Add argument metadata and aborted return value code. 2011-12-18 23:44:21 -05:00
Josh Matthews 0752252737 Use proper size and alignment of types for debuginfo. 2011-12-18 23:44:21 -05:00
Josh Matthews 1da4b3b987 Fix build error after rebasing. 2011-12-18 23:44:21 -05:00
Josh Matthews 0b303523bd Fix up local variable support so it actually works. 2011-12-18 23:44:21 -05:00
Josh Matthews e95c56f855 Fix up subprogram composite type nodes, and lexical block context nodes. 2011-12-18 23:44:21 -05:00
Josh Matthews 544bcfece2 Fix LLVM assertions when lowering log statements. 2011-12-18 23:44:21 -05:00
Josh Matthews fa6d871e11 Build fix. 2011-12-18 23:43:37 -05:00
Josh Matthews e383004985 Add debug info for local vars, basic fundamental types, and lexical blocks, along with source line information generation for individual instructions. 2011-12-18 23:41:03 -05:00
Josh Matthews 10030a37d5 Generate basic debug info for files, functions and compile units. 2011-12-18 23:39:54 -05:00
Stefan Plantikow fa27724a4b std: getopts now uses result::t (fixes #1289) 2011-12-18 18:55:39 -08:00
Stefan Plantikow e1a9668ab2 preparing for removing math from std 2011-12-19 03:19:37 +01:00
Brian Anderson bd6b80c972 rt: Get rid of the rethrow in upcall_fail
Throwing in upcall_fail ends up running lots of code in the red zone. To avoid
it we have the personality function figure out which stack it's on and switch
as needed.
2011-12-18 17:17:31 -08:00
Brian Anderson c73eb8ff51 rt: Create different stack-switching paths for upcalls and shims
Shims need to play with the stack limit, upcalls don't. Only one upcall,
upcall_fail is allowed to catch, and we need a find a way to get rid of that
catch as well because it results in _Unwind_Resume running off the end of the
Rust stack.
2011-12-18 16:17:55 -08:00
Brian Anderson f57fd8de1f rt: Run the cycle collector on the C stack 2011-12-18 15:23:44 -08:00
Brian Anderson 74d5faa86e rt: Give each platform its own red zone definition 2011-12-18 15:23:41 -08:00
Brian Anderson 762d7e43a6 rt: Trim the red zone to 20k on all platforms 2011-12-18 15:22:56 -08:00
Brian Anderson 12cde6ebee libcore: Remove task::set_min_stack
This existed to make up for the lack of stack growth, and wasn't generally
safe.
2011-12-18 14:10:41 -08:00
Brian Anderson 22ac628e8c test: Enable all morestack tests 2011-12-18 13:37:33 -08:00
Marijn Haverbeke f4acaf6934 Only look for a matching method when normal field access fails
We should probalby warn when defining a method foo on {foo: int} etc.

This should reduce the amount of useless typevars that are allocated.

Issue #1227
2011-12-18 19:41:44 +01:00
Marijn Haverbeke b36ade1367 Improve efficienty of impl cache in resolve
And fix a bug where importing anything from an external module would
import all impls in the module.

Issue #1227
2011-12-18 19:07:26 +01:00
Brian Anderson 3fa930f598 rt: Remove a bogus FIXME from ~rust_task 2011-12-18 02:09:41 -08:00
Brian Anderson 1a1fdf34b1 rt: Add lots of documentation to __morestack 2011-12-18 02:02:35 -08:00
Brian Anderson 7359fa422b Revert "rt: Turn on big stacks again. Unwinding still doesn't always succeed on mac"
This reverts commit 68f4849f0f.
2011-12-18 00:42:46 -08:00
Brian Anderson cb5f636ff1 rustc: Don't emit compact unwind info on mac
It's not compatible with the subtlety of __morestack
2011-12-18 00:42:37 -08:00
Brian Anderson 68f4849f0f rt: Turn on big stacks again. Unwinding still doesn't always succeed on mac 2011-12-17 17:54:43 -08:00
Brian Anderson 39c8f0cb4a libstd: Long lines 2011-12-17 17:02:07 -08:00
Brian Anderson 555006a304 rustc: Remove --stack-growth option 2011-12-17 16:58:26 -08:00
Brian Anderson fe683dfb80 rt: Get rid of the valgrind guard bytes at the end of the stack
Preventing us from writing beyond our allocations is _what valgrind does_,
so telling valgrind not to let us write to the end of the stack isn't
buying anything.
2011-12-17 16:46:50 -08:00
Brian Anderson 00be346089 libstd: Add 'xterm-256-color' to list of color-enabled terminals 2011-12-17 16:44:27 -08:00
Brian Anderson 471b4d6e58 rt: Use a DWARF CFI scheme that works on mac in __morestack 2011-12-17 14:10:44 -08:00
Brian Anderson 7da8ab8fab rt: Turn on stack alignment checks for mac 2011-12-17 14:10:40 -08:00
Brian Anderson 4ac345939c rt: Cache an extra stack segment to avoid bad behavior at stack boundaries 2011-12-17 13:45:38 -08:00
Brian Anderson 0ed5117a9d rt: Set the default stack size to 768 bytes. Double on each alloc 2011-12-17 13:45:38 -08:00
Elly Jones bb2c1f7613 cargo: complain if rustc fails 2011-12-16 20:40:10 -08:00
Brian Anderson f8d06a2a84 Merge pull request #1320 from elly/cargo
cargo: shorten a line
2011-12-16 20:16:13 -08:00
Elly Jones 648b69d692 cargo: shorten a line 2011-12-16 23:15:13 -05:00
Graydon Hoare bf4efa3a20 Merge pull request #1319 from elly/cargo
cargo: support distributed package indexes
2011-12-16 19:48:19 -08:00
Elly Jones c8427e4ffd cargo: fix lib detection logic 2011-12-16 22:39:33 -05:00
Graydon Hoare c758e11fd3 Install and snapshot cargo by default. 2011-12-16 19:37:27 -08:00
Elly Jones b7e30bc4c5 cargo: fix remaining warnings 2011-12-16 22:31:49 -05:00
Elly Jones 7bd003a1d0 cargo: remove obsolete rust-pkg-index lookup code 2011-12-16 22:27:47 -05:00
Elly Jones 9a0b89b534 cargo: fix some warnings 2011-12-16 22:27:04 -05:00
Elly Jones 327af5b9f3 cargo: flesh out usage 2011-12-16 22:24:01 -05:00
Elly Jones 8b7a41f23d cargo: Support distributed package indexes.
Indexes are listed in ~/.cargo/sources.json and ~/.cargo/local-sources.json, the
former of which is stored in the rust source tree in src/cargo. Each entry in
either of these files is a source, which is a dictionary with (currently) a
single key, "url". The supplied url should point to a json list, each element of
which should be a dictionary with four keys: "name", "uuid", "url", and
"method". The name and uuid serve to identify the package; the method describes
how to fetch the package; the url describes where to fetch it from. Currently
supported methods are "git", "http", and "file".

Signed-off-by: Elly Jones <elly@leptoquark.net>
2011-12-16 22:08:25 -05:00
Brian Anderson b5b2ac0ec4 rt: Make 32-bit morestack compatible with fastcc 2011-12-16 18:18:43 -08:00
Brian Anderson 7d51961b6f rt: Fix saved address of unwinding %rsp in __morestack
I haven't thought too deeply about this, but I think I was telling the
unwinder to use the stack pointer for the wrong frame when unwinding. Not sure
how that could have worked at all, but this results in the correct alignment
for cleanups.
2011-12-16 18:18:43 -08:00
Brian Anderson 9d70c1949e rt: Fix alignment of the call to upcall_del_stack in __morestack 2011-12-16 18:18:43 -08:00
Brian Anderson 23df4de86d rt: Fix alignment of new stack segments 2011-12-16 18:18:43 -08:00
Brian Anderson ab4f35c1f1 rt: Only call check_stack_alignment on linux 2011-12-16 18:18:43 -08:00
Brian Anderson 121c420184 rt: Insert stack alignment checks into upcalls 2011-12-16 18:18:43 -08:00
Elly Jones 10cf4a1b0a cargo: wip 2011-12-16 20:33:39 -05:00
Graydon Hoare 4f826b34cb Update build machinery to build and install librustc everywhere (including snapshots). 2011-12-16 17:21:28 -08:00
Brian Anderson 1477fb3f2b libstd: Temporarily use #[link_name = ""] 2011-12-16 15:29:59 -08:00
Graham Fawcett f14bc54b06 allow #[link_args] with #[nolink]. For now, fail if two modules link same lib, and second has link_args.
I think it should undefined to have multiple modules that link in the same
library, but provide different link arguments. Unfortunately we don't track
link_args by module -- they are just appended as discovered into the crate
store -- but for now, it should be an error to provide link_args on a module
that's already been included (with or without link_args).
2011-12-16 15:29:59 -08:00
Graham Fawcett 7ddd353ef6 implement #[nolink]; deprecate #[link_name = ""]; note in stdlib to remove empty link_name.
Can't remove them from stdlib until the snapshotted compiler supports #[nolink].
2011-12-16 15:29:59 -08:00
Elly Jones 89e880d613 std: file_is_dir -> path_is_dir, add path_exists 2011-12-16 17:37:21 -05:00
Marijn Haverbeke b11268780e Fix arg order for vec::map call 2011-12-16 22:29:01 +01:00
Marijn Haverbeke 58a81a68ed Finish resolving and calling of crate-external impls
Issue #1227
2011-12-16 22:18:38 +01:00
Marijn Haverbeke dd9693f211 Reserve node_id 0 for the crate top-level module
And define a const to refer to it.
2011-12-16 22:17:47 +01:00
Graydon Hoare dbfa1b5689 Merge pull request #1317 from boggle/fix1315
fix to #1315 + small additions to std::either and result
2011-12-16 13:01:47 -08:00
Graydon Hoare 1bf078f988 Remove hopefully-now-redundant chops of ./ at the beginning of filenames in cargo. 2011-12-16 12:28:39 -08:00
Graydon Hoare d1bca753b8 Switch fmt extension to reference extfmt that's in core. 2011-12-16 10:59:11 -08:00
Stefan Plantikow 7d786318a1 std: declared fns as pure where sensible 2011-12-16 18:18:34 +01:00
Stefan Plantikow bfbaadc694 core: marked fns as pure where possible 2011-12-16 17:41:07 +01:00
Niko Matsakis 88818334b7 update to not look at descs[], which is not necessarily valid
if the input is a statically allocated type_desc
2011-12-16 08:06:45 -08:00
Niko Matsakis 34283c6a78 add test that requires capturing generic descriptors 2011-12-16 08:06:45 -08:00
Niko Matsakis 4465c1ad02 first test of sendable fns (passes) 2011-12-16 08:06:45 -08:00
Niko Matsakis 21cc0c6e69 revoke cleanup of sendable closure once construction completes 2011-12-16 08:06:44 -08:00
Niko Matsakis 52f76400b5 extend with ty_send_type and ty_opaque_closure 2011-12-16 08:06:44 -08:00
Niko Matsakis b5e5043d5d reorder block() argument to bitv::process() 2011-12-16 08:01:05 -08:00
Stefan Plantikow 1fe4bd0f43 std: added either::flip, to_result and result::to_either 2011-12-16 16:31:42 +01:00
Niko Matsakis ac6aba016e rename iter2 to iteri to match typical convention 2011-12-16 07:17:29 -08:00
Niko Matsakis 2833ca478c reorder args to the various vec, option fns so blk comes last 2011-12-16 07:17:23 -08:00
Marijn Haverbeke 0a3626161d Write impl data to crate library files
(No one is actually reading it yet.)

Issue #1227
2011-12-16 14:17:52 +01:00
Marijn Haverbeke d529757515 Make polymorphic impl methods work
Something will still have to be done to the AST to make it possible to
say `x.foo::<int>()`, since currently field access never allows type
parameters.

Issue #1227
2011-12-16 13:47:48 +01:00
Marijn Haverbeke cff6bdd036 Change syntax for impl
Move the name of the bundle to the front, allow type parameters (not
handled yet), and add a 'for' keyword:

    impl utils for int {
        fn str() -> str { int::str(self) }
        fn times(f: block()) { ... }
    }
2011-12-16 11:46:57 +01:00
Marijn Haverbeke 4f826d81f6 Make 1.f parse as a field access on the integer 1
A dot is only considered part of a number when not followed by a letter

Closes #1306
2011-12-16 11:46:57 +01:00
Marijn Haverbeke 14fcb135a9 Improve resolution of impls
Issue #1227
2011-12-16 11:46:57 +01:00
Marijn Haverbeke 7efef98901 Make uses of self in impls compile
Get rid of expr_self_call, introduces def_self. `self` is now,
syntactically, simply a variable. A method implicitly brings a `self`
binding into scope.

Issue #1227
2011-12-16 11:46:57 +01:00
Marijn Haverbeke 1dd2f1ec03 Get very simple impl method calls to compile
Resolution is still dumb, and no self support yet.
2011-12-16 11:46:57 +01:00
Marijn Haverbeke 6a16f57c0a Get a very primitive form of typechecking/resolving to work for impls
No conflict resolution or polymorphism yet.

Issue #1227
2011-12-16 11:46:57 +01:00
Marijn Haverbeke 888bc80025 Parse and resolve implementations.
Issue #1227
2011-12-16 11:46:57 +01:00
Haitao Li 42fb9b2c5f cargo: Fix long lines 2011-12-16 17:17:24 +08:00
Haitao Li 9bb290c725 rustc: Implement non-renamed re-export across crates
First patch for issue #1115. Not yet ready for re-exported modules which
are renamed when importing them.
2011-12-16 17:16:00 +08:00
Brian Anderson 91249fed82 Merge pull request #1314 from elly/cargo
Cargo: install-by-name and install-by-uuid
2011-12-15 18:26:11 -08:00
Elly Jones 7953a5dcfc cargo: update to new rust-pkg-index API. 2011-12-15 21:22:42 -05:00
Patrick Walton fd1dd76977 stdlib: Add a str::split_str() to split on a delimiter string of any length 2011-12-15 17:39:53 -08:00
Elly Jones ce9fbf7517 cargo: support uuid:<uuid> and shortname package forms.
'cargo install rustcrypto' now works.
2011-12-15 20:27:55 -05:00
Brian Anderson 1f8f6054d2 rustc: Box tag variants to avoid copies 2011-12-15 17:25:58 -08:00
Brian Anderson 26db74c811 rustc: Box the vectors returned from ty::tag_variants 2011-12-15 17:14:58 -08:00
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