Commit Graph

5779 Commits

Author SHA1 Message Date
Niko Matsakis
29584cc5ac Extend the unchecked block stuff to allow unsafe blocks as well. 2011-10-12 14:26:47 -07:00
Niko Matsakis
58b8e88356 expand purity to include unsafe 2011-10-12 14:26:47 -07:00
Niko Matsakis
9476692b52 move ctags.rust into src/etc 2011-10-12 13:57:32 -07:00
Brian Anderson
99f876e3a8 Make build_environment and trans_bind_thunk GEP bound arguments the same
These functions both use GEP_tup_like to get at the arguments bound to the
environment, but they were starting from a different 'level' of the
environment-box structure. Frighteningly, this was leading to them having
different opinions of how the bound arguments were aligned in some cases.
2011-10-12 12:11:07 -07:00
Marijn Haverbeke
306f7fb25f Simplify copying of uniques
We can call take glue, rather than duplicating it inline.
2011-10-12 11:05:20 +02:00
David Rajchenbach-Teller
75bda422df [Tests] added float tests 2011-10-12 10:56:05 +02:00
David Rajchenbach-Teller
8c9dd54ded [Renaming] str_to_float is now float::from_str, float_to_str is now float::to_str 2011-10-12 10:56:05 +02:00
David Rajchenbach-Teller
7faed3d87c [Fix] float.rs: str_to_float reimplemented 2011-10-12 10:56:05 +02:00
David Rajchenbach-Teller
3219c40e18 [Optim] int.rs: reimplemented pow with fast exponentiation 2011-10-12 10:56:05 +02:00
Lindsey Kuper
0d43e90172 Revert "Merge pull request #1025 from elly/master"
This reverts commit e12e76e9ba, reversing
changes made to f480203fdd.
2011-10-11 22:23:47 -04:00
Lindsey Kuper
813c2eb369 Revert "Revert "Add a test case for #898. Closes #898.""
This reverts commit e305ab3851.

Oops again.  Reverting a mistaken revert.
2011-10-11 22:03:23 -04:00
Lindsey Kuper
e305ab3851 Revert "Add a test case for #898. Closes #898."
This reverts commit f480203fdd.

Oops.  This patch requires people to bump their LLVM version.
2011-10-11 22:00:17 -04:00
Elly Jones
19eae0bc38 Update LinkModules invocation to use new prototype
LLVM revision 141606 changes the prototype of llvm::Linker::LinkModules.

Signed-off-by: Elly Jones <elly@leptoquark.net>
2011-10-11 21:32:34 -04:00
Brian Anderson
f480203fdd Add a test case for #898. Closes #898.
Seems to have been fixed.
2011-10-11 16:50:50 -07:00
Brian Anderson
55379a97d4 Use the correct function type for external bare functions
Issue #1022
2011-10-11 15:12:49 -07:00
Brian Anderson
d8fb86d2e3 Register snapshots 2011-10-11 15:01:27 -07:00
Brian Anderson
cfa2346086 Use a non-ambiguous character for encoding bare functions
I was using 'R' and that was already used for records.

Issue #1022
2011-10-11 14:38:15 -07:00
Brian Anderson
8c77d063a9 Add a test for assignment of bare functions
Issue #1022
2011-10-11 13:40:31 -07:00
Brian Anderson
b04f84275a Add a test that bare functions are word-sized
Issue #1022
2011-10-11 13:40:28 -07:00
Brian Anderson
90c2402089 Add a test that uses a hypothetical bare-fn spawn signature
Issue #1022
2011-10-11 12:10:56 -07:00
Brian Anderson
1b0f1f0b79 Remove the environment argument from bare functions
Issue #1022
2011-10-11 10:51:10 -07:00
Brian Anderson
84e98f4f65 Add a test for higher-order bare functions
Issue #1022
2011-10-11 10:51:10 -07:00
Brian Anderson
145feb3298 Add a test for binding bare functions
Issue #1022
2011-10-11 10:51:10 -07:00
Brian Anderson
5b0f79b75a Don't allow bind to produce bare functions
Issue #1022
2011-10-11 10:51:10 -07:00
Brian Anderson
b277039325 Introduce ast::proto_bare
Issue #1022
2011-10-11 10:51:10 -07:00
Brian Anderson
9c46cc58cb Add a temporary syntax for bare functions
Bare functions will be represented as 'fn#' until they're implemented. Then
we'll switch it over to just 'fn'.

Issue #1022
2011-10-11 10:51:09 -07:00
David Rajchenbach-Teller
2ec85135e2 [Move] Moved str_to_float, float_to_str from compiler to lib 2011-10-11 16:41:34 +02:00
Marijn Haverbeke
33167f7dec Adjust function signatures to allow for vecs being immediate
Some code was relying on vectors being implicitly by-reference (as
non-immediate value). This adds the necessary &&-sigils.

Closes #1021
2011-10-10 16:01:51 +02:00
Marijn Haverbeke
b4bae8fea5 Make vectors and strings immediates again
There's no good reason to force them to be spilled anymore. Some
pieces of trans become more elegant this way, and less stack allocs
and load/stores are needed.

Issue #1021
2011-10-10 15:59:16 +02:00
Marijn Haverbeke
5c53959f20 Make bcx_tcx-style accessors return by reference 2011-10-10 12:25:58 +02:00
Marijn Haverbeke
00daeb485c Move type_is_immediate into ty.rs 2011-10-10 12:23:58 +02:00
Marijn Haverbeke
a35dbf3fd5 Don't spill immediates in order to drop them
Issue #1012
2011-10-10 12:20:28 +02:00
Marijn Haverbeke
fa1295343f Make free glue take a pointer to the heap part (box)
This way, it can be used to drop values without first spilling them.

Issue #1012
2011-10-10 10:25:32 +02:00
Brian Anderson
96f6a1861c Revert "Revert "Stop using (DY)LD_LIBRARY_PATH on Unix""
This reverts commit 941d5e737c.
2011-10-09 15:23:41 -07:00
Brian Anderson
ecfa37d336 Register snapshots 2011-10-09 15:23:34 -07:00
Brian Anderson
941d5e737c Revert "Stop using (DY)LD_LIBRARY_PATH on Unix"
This reverts commit 4b58071f96.
2011-10-09 15:05:12 -07:00
Marijn Haverbeke
aff536ec0e Fix bad float-type detection in trans
Closes #1017
2011-10-09 10:07:10 +02:00
Brian Anderson
79e9f7a015 Make windows package uninstallable 2011-10-07 14:09:29 -07:00
Brian Anderson
fed56b07ba Make windows packaging work again 2011-10-07 13:48:20 -07:00
Marijn Haverbeke
1efe5f0577 Fix up test for last commit 2011-10-07 16:58:27 +02:00
Marijn Haverbeke
f26e770745 Make 1-1 parse again
Issue #954

This is not a very elegant fix -- we should probably do something with
constant folding to handle negative-int alt patterns in the future.
2011-10-07 16:46:44 +02:00
Marijn Haverbeke
c7eee8fb05 Stop registering cleanups for types that don't need them 2011-10-07 14:46:23 +02:00
Marijn Haverbeke
31586339b1 Make it possible to have locals that don't live on the stack
Local values that are not mutated, don't need to be cleaned up, and
are immediate, don't need to be spilled. (All immediate args, and
non-pointer immediate let locals.)
2011-10-07 14:43:19 +02:00
Marijn Haverbeke
7586082bb0 Add tests for programs that are invalid by arg-passing-style
Closes #1008
2011-10-07 10:41:40 +02:00
Marijn Haverbeke
8db71530f5 Forbid passing dynamically-sized types by value
Issue #1008
2011-10-07 10:41:40 +02:00
Marijn Haverbeke
2ff89469d4 Actually pass parameters specified as by-val by value
Issue #1008
2011-10-07 10:41:40 +02:00
Marijn Haverbeke
41528dc543 Add pass-by-ref annotation to the tests to make them typecheck
Issue #1008
2011-10-07 10:41:39 +02:00
Marijn Haverbeke
fe916fb9f0 Give up on providing a by-value version of map, convert fold over to
passing pointers by ref

Issue #1008
2011-10-07 09:56:12 +02:00
Marijn Haverbeke
f9fbd86f52 Parse and typecheck by-value and by-ref arg specs
Add sprinkle && throughout the compiler to make it typecheck again.

Issue #1008
2011-10-07 09:09:50 +02:00
Brian Anderson
ed5a962d6f Hopefully make test_prefix_rpath_abs work on win32 2011-10-06 16:39:34 -07:00
Brian Anderson
831d861d84 Mac uses @executable_path instead of $ORIGIN 2011-10-06 16:26:32 -07:00
Brian Anderson
5cd6dbd5b9 Always use an absolute path for the backup install prefix rpath 2011-10-06 16:12:45 -07:00
Brian Anderson
04e89af6db Add std::str::contains 2011-10-06 16:08:44 -07:00
Brian Anderson
4b58071f96 Stop using (DY)LD_LIBRARY_PATH on Unix 2011-10-06 15:23:20 -07:00
Brian Anderson
a1e4ab3e38 Register snapshots 2011-10-06 15:11:30 -07:00
Brian Anderson
e4068f6715 Mac doesn't seem to support rpath $ORIGIN 2011-10-06 14:29:03 -07:00
Brian Anderson
06087e67e1 Configure out rpath tests when not testing 2011-10-06 13:29:36 -07:00
Brian Anderson
4b9e572044 Remove an unnecessary linking flag. Add comments about linking 2011-10-06 13:16:16 -07:00
Brian Anderson
062ba22d99 rpathing is based on the target, not host OS 2011-10-06 13:12:11 -07:00
Brian Anderson
d8a85f0758 Make rpath work on mac 2011-10-06 13:09:00 -07:00
Marijn Haverbeke
9c037d2194 Revert "rustc: Add a workaround for a segfault with --time-passes (issue #1005)."
This reverts commit 100e0264b2.
2011-10-06 16:12:47 +02:00
Marijn Haverbeke
8ee017add4 Register new snapshot 2011-10-06 10:56:07 +02:00
Marijn Haverbeke
6a4270523e Ignore && and + before argument names.
Issue #1008
2011-10-06 10:16:52 +02:00
Marijn Haverbeke
39b468e17a Fix problem with polymorphic return value being instantiated as nil
Closes #1005
2011-10-06 09:40:56 +02:00
Brian Anderson
e6d7b0cff3 Register snapshots 2011-10-05 18:15:45 -07:00
Patrick Walton
8d8b48a901 rt: Make C stack switching Valgrind-clean by warning Valgrind when we're about to write to the C stack from the Rust stack 2011-10-05 16:33:17 -07:00
Patrick Walton
cf3e7f2f0b stdlib: Add a void type 2011-10-05 16:33:17 -07:00
Brian Anderson
00a81a22a8 Add more valgrind suppressions for __libc_freeres
Somehow these started showing up on the tinderbox
2011-10-05 16:21:56 -07:00
Brian Anderson
8215ffc822 rpath all the things! 2011-10-05 16:21:56 -07:00
Brian Anderson
ee8e058004 Add a FIXME about test exports to rustc:🔙:rpath 2011-10-05 16:21:56 -07:00
Brian Anderson
2f340a4d3d rpath the path to the runtime
We don't currently rpath native libs, but we do know where rustrt is
located and everything needs to link to it.
2011-10-05 16:21:55 -07:00
Brian Anderson
3d5471f6ab Fix some remaining rpath bugs 2011-10-05 16:21:55 -07:00
Brian Anderson
82ef8519c3 Fix some path handling in std::fs on win32 2011-10-05 16:21:55 -07:00
Brian Anderson
8b4601e08e Figure out the relative path from output to each crate 2011-10-05 16:21:55 -07:00
Brian Anderson
19ba9b4d8d Begin work on rpath 2011-10-05 16:21:55 -07:00
Niko Matsakis
61c9c46d94 remove pthread_exit() from rust_start()
It was causing OS X Lion to hang and (according to Apple) is undefined
in any case
2011-10-05 16:10:36 -07:00
Patrick Walton
100e0264b2 rustc: Add a workaround for a segfault with --time-passes (issue #1005). 2011-10-05 14:35:30 -07:00
Marijn Haverbeke
142f63fe78 Tie up the last ends in destination-passing-conversion
Closes #667
2011-10-05 12:23:18 +02:00
Marijn Haverbeke
3bc3f96138 Make trans_lval lval-only
Call trans_temp_lval if you want the old fallback-to-temporary behaviour.

Issue #667
2011-10-05 11:51:41 +02:00
Marijn Haverbeke
2cc0008ec0 Add trans_temp_expr for what used to be trans_expr, rename t_e_dps to trans_expr
Issue #667
2011-10-05 11:26:27 +02:00
Marijn Haverbeke
975ac55b3d Lose the by_ref destination style
It's not needed.

Issue #667
2011-10-05 10:41:30 +02:00
Marijn Haverbeke
babd1ff3c7 Revert "Revert "Reorganize translation of expr_field""
This reverts commit 11e407aaa9.
2011-10-05 10:21:57 +02:00
Marijn Haverbeke
c33e61e75c Revert "Revert "Get rid of 'overwrite' destination kind""
This reverts commit ce9e0fc94f.
2011-10-05 10:21:48 +02:00
Marijn Haverbeke
062aa3272c Revert "Revert "Move trans_call to destination_passing style""
This reverts commit 276dfc6133.
2011-10-05 10:21:40 +02:00
Brian Anderson
1f2e999262 Use std::os::get_exe_path to determine sysroot 2011-10-04 21:35:06 -07:00
Brian Anderson
1391154b14 Use util::filesearch to locate intrinsics.bc and main.o 2011-10-04 21:35:06 -07:00
Brian Anderson
ebcc76d68d Move the library search into util::filesearch 2011-10-04 21:35:06 -07:00
Brian Anderson
b25e78524c Fix some comment drift 2011-10-04 21:35:06 -07:00
Brian Anderson
33ee73102d Remove some redundancy in metadata::creader 2011-10-04 21:35:06 -07:00
Brian Anderson
d91b7b61ef Encapsulate current sysroot and lib path handling into util::filesearch 2011-10-04 21:35:06 -07:00
Brian Anderson
a8ce543dc9 Add std::os::get_exe_path
Need this to correctly determine sysroot in rustc
2011-10-04 21:35:06 -07:00
Brian Anderson
a0a4d34e14 Add std::ctypes 2011-10-04 21:35:06 -07:00
Brian Anderson
2124839cd7 Hide unused variable warnings in stdtest::treemap 2011-10-04 21:35:06 -07:00
Brian Anderson
6f5a0c7500 Add std::fs::normalize 2011-10-04 21:22:03 -07:00
Brian Anderson
51ae30287b Add std::fs::split 2011-10-04 20:18:04 -07:00
Patrick Walton
0e5ea4d64f Revert "stdlib: Migrate rust_file_is_dir() over to the C stack, and add a void type" due to build bustage on Windows
This reverts commit 9698ef89a0.
2011-10-04 18:24:30 -07:00
Patrick Walton
9698ef89a0 stdlib: Migrate rust_file_is_dir() over to the C stack, and add a void type 2011-10-04 18:20:22 -07:00
Patrick Walton
990233eb3d rustc: Allow calling native functions on the C stack that take generic arguments. They get turned into i8 pointers. 2011-10-04 17:41:57 -07:00
Patrick Walton
276dfc6133 Revert "Move trans_call to destination_passing style"
This reverts commit 6e56ec0066.
2011-10-04 17:05:35 -07:00
Patrick Walton
ce9e0fc94f Revert "Get rid of 'overwrite' destination kind"
This reverts commit 6e652588bf.
2011-10-04 17:05:27 -07:00
Patrick Walton
11e407aaa9 Revert "Reorganize translation of expr_field"
This reverts commit 007ec666ad.
2011-10-04 17:05:16 -07:00
Patrick Walton
af60cf407c rt: Switch the AIO stuff to the C stack 2011-10-04 12:08:06 -07:00
Marijn Haverbeke
007ec666ad Reorganize translation of expr_field
Issue #667
2011-10-04 17:52:23 +02:00
Marijn Haverbeke
6e652588bf Get rid of 'overwrite' destination kind
It wasn't safe (computing the rval might invalidate the lval addr), and needlessly
complicating things (code was already building up intermediary results to work
around other unsafeties).

Issue #667
2011-10-04 17:52:23 +02:00
Marijn Haverbeke
6e56ec0066 Move trans_call to destination_passing style
Issue #667

The retptr passed to a function will now often be the actual
destination of the returned value (as in `{field1: func1()}`).
2011-10-04 17:41:34 +02:00
Patrick Walton
53c9b9a5dd rt: Switch the libuv bindings over to not using explicit task pointers 2011-10-03 18:23:30 -07:00
Patrick Walton
3ad4fa00ac rt: Fix comment typo in rust_uv.cpp 2011-10-03 18:23:30 -07:00
Patrick Walton
a7b44e847a rt: Make the builtins no longer take an explicit task parameter 2011-10-03 18:23:30 -07:00
Brian Anderson
b5bb42acfb XFAIL run-fail/linked-failure4. Deadlocks on mac 2011-10-03 14:46:52 -07:00
Patrick Walton
968b66ad40 rustc: Implement C stack stdcall 2011-10-03 13:59:38 -07:00
Brian Anderson
3a6f3cf275 Move compiletest to src/ and cleanup build rules 2011-10-02 17:28:59 -07:00
Haitao Li
e50371060b rustc: Fix link error on Ubuntu Oneiric. Issue #903 2011-10-02 21:29:16 +08:00
Patrick Walton
42287d0fd3 rustc: Call LLVM on the C stack 2011-09-30 18:50:07 -07:00
Patrick Walton
4793a02376 rt: Omit leading underscore on symbol names on Linux 2011-09-30 18:50:05 -07:00
Patrick Walton
e9287e55cc rustc: Stub a --stack-growth option; it's behind a flag for now because it requires patches to LLVM. 2011-09-30 18:21:39 -07:00
Brian Anderson
f525f6e94c Register new snapshots 2011-09-30 18:03:54 -07:00
Brian Anderson
821dd6c02c Change the directory for target libs
This pushes them down from stageN/lib/rustc/$(target) to
stageN/lib/rustc/$(target)/lib in order to make room for a target bin dir
2011-09-30 17:19:24 -07:00
Patrick Walton
c065280a0b rustc: Remove some debug code 2011-09-30 14:26:06 -07:00
Patrick Walton
7ab0897ac6 rustc: Track link_args attributes on C stack cdecl natives as well 2011-09-30 14:25:10 -07:00
Patrick Walton
dcf0e807fb trans: Use inttoptr as appropriate when casting return values of C stack functions 2011-09-30 12:07:50 -07:00
Brian Anderson
de6d07abf9 Register snapshots and finish filesystem reorg 2011-09-29 23:33:44 -07:00
Brian Anderson
80829af872 Remove legacy library search paths 2011-09-29 23:12:31 -07:00
Brian Anderson
b569e9c657 Update snapshot scripts for the new regime 2011-09-29 22:58:34 -07:00
Brian Anderson
196cc6de2e Teach compiletest to construct the PATH variable correctly on win32 2011-09-29 22:58:34 -07:00
Brian Anderson
ab8338fb5a Make rustc's host triple agree with the build system's 2011-09-29 22:58:33 -07:00
Brian Anderson
0148daa058 Reorganize structure of build directory
Each stage is organized more according to Unix standards and to
accommodate multiple target architectures.

stageN/
  bin - rustc lives here
  lib - libraries that rustc needs
  lib/rustc/$(target_triple/ - target libraries
2011-09-29 22:58:33 -07:00
Patrick Walton
79e4961c7f rustc: Remove some debug code 2011-09-29 18:53:00 -07:00
Patrick Walton
f9e3a604a6 rustc: Make the generic C stack function signature include a usable return value 2011-09-29 18:52:23 -07:00
Patrick Walton
5b6dbcb030 stdlib: Un-export str::buf; add a comment 2011-09-29 18:36:27 -07:00
Patrick Walton
3be6cf7ab2 vim: Add pure to the list of keywords 2011-09-29 18:18:37 -07:00
Patrick Walton
dd7ff8dee4 stdlib: Export str::buf 2011-09-29 17:58:51 -07:00
Patrick Walton
a5b422fe6b rustc: Translate calls on the C stack 2011-09-29 17:34:49 -07:00
Patrick Walton
f22601321f rustc: Fix call signature for call_c_stack 2011-09-29 17:34:49 -07:00
Patrick Walton
e31849fb79 rt: Fix assembler for C calls to work more like a regular function call 2011-09-29 17:34:49 -07:00
Patrick Walton
6dece91ed3 stdlib: Add vec::eachi to the standard library 2011-09-29 17:34:49 -07:00
Patrick Walton
c04efec87f rustc: Add upcall stubs for the new C stack upcalls 2011-09-29 17:34:49 -07:00
Patrick Walton
41ab324539 rustc: Generate types in trans for the C-stack native ABI 2011-09-29 17:34:49 -07:00
Marijn Haverbeke
e4436c3a5d Don't build up results for ignored expressions.
Issue #667
2011-09-29 12:02:37 +02:00
Marijn Haverbeke
d74a7a83d7 Fail with an informative error when trying to bind a method
Issue #435
2011-09-29 11:55:29 +02:00
Marijn Haverbeke
d243ea57f5 Move last remaining expression types out of trans_expr
Issue #667
2011-09-29 11:41:45 +02:00
Marijn Haverbeke
f089f533e8 Move expr_cast and expr_copy to DPS style
Issue #667
2011-09-29 10:46:49 +02:00
Marijn Haverbeke
d946e09a72 Move closure construction over to DPS style
Issue #667
2011-09-29 10:36:40 +02:00
Marijn Haverbeke
508c48ce10 Reduce move ops to a construct-in-place when possible 2011-09-29 10:36:40 +02:00
Brian Anderson
15e34deba3 Eliminate glue.o. Closes #990 2011-09-28 15:35:21 -07:00
Brian Anderson
e1ba559c03 Test cases for #985
Other restrictions on pinned kinds happened to fix this

Closes #985
2011-09-28 15:35:21 -07:00
Brian Anderson
cb4e99b688 Don't allow vectors of pinned kinds
Vectors of pinned kinds can't be safe because most interesting uses of vector
perform copies
2011-09-28 15:35:21 -07:00
Brian Anderson
14bac217b0 Make error patterns in some kind tests more specific 2011-09-28 15:35:21 -07:00
Patrick Walton
f7d0c1cec3 rustc: Add a new "C stack cdecl" native ABI 2011-09-28 12:58:33 -07:00
Brian Anderson
657e3ffaf5 xfail-fast run-pass/alt-range.rs 2011-09-28 12:46:29 -07:00
Brian Anderson
381205b747 Revert "Revert "Implement pattern ranges for all numeric types.""
This reverts commit a034f87146.

Conflicts:

	src/comp/middle/check_alt.rs
	src/comp/middle/trans_alt.rs
	src/comp/syntax/ast.rs
	src/comp/syntax/ast_util.rs
	src/comp/syntax/fold.rs
	src/comp/syntax/print/pprust.rs

Conflicts:

	src/comp/middle/trans_alt.rs
2011-09-28 12:46:29 -07:00
Patrick Walton
5fac684af8 vim: const is a keyword 2011-09-28 12:40:34 -07:00
Patrick Walton
d8a80cb31f rt: Add a call stub that switches to the C stack, untested as of yet 2011-09-28 12:26:36 -07:00
Patrick Walton
1eaaae860f rt: Add an upcall to allocate space on the C stack. This will be used for native calls on the C stack. 2011-09-28 11:31:44 -07:00
Patrick Walton
e8757ea01f rt: Expose the C stack inside the Rust scheduler so that C calls can switch to it 2011-09-28 10:22:02 -07:00
Patrick Walton
dbf472b0df rustc: Switch to cdecl for all calls. This is needed to make stack growth efficient, as I need to use eax and ecx in the function prologue and can't afford to stomp on incoming arguments. 2011-09-28 10:22:02 -07:00
Marijn Haverbeke
512cfb4b83 Remove a few kludges that worked around issue #913 2011-09-28 12:59:44 +02:00
Marijn Haverbeke
c94159652a Register new snapshot
It had been a while. I mostly wanted a fix for #913 in stage0.
2011-09-28 12:56:54 +02:00
Marijn Haverbeke
a3a27374bd Don't descend into functions from relax_precond_block
Closes #913
2011-09-28 12:37:28 +02:00
Marijn Haverbeke
759fc101fb Get rid of might_not_init kludge in init_local.
Initializing something is now safe wrt to cleanups (so the cleanup for the
local is only registered after the initialization.)
2011-09-28 11:12:35 +02:00
Marijn Haverbeke
16d5aaa962 Wait with registering cleanups for locals until after the init code ran
Fixes a double-cleanup that was breaking unwind-tup.rs under valgrind.
2011-09-28 10:41:19 +02:00
Marijn Haverbeke
e3626c9405 Use DPS for assignment and local initialization
Issue #667
2011-09-28 09:42:04 +02:00
Wade Mealing
f375391cb6 Patch to error instead of crashing when parsing unmatched double quotes
Patch to error and fail instead of using all available memory
then crashing to detect the error condition of an unmatched
double quote before the end of a file.

I couldn't get it to show nice error messages, so this may not be
the ideal fix.

A test case for this situation has also been added.
2011-09-27 23:20:31 -07:00
Brian Anderson
a96b16e8c3 Make it again possible to initialize resource locals via assignment
Some special cases allow both 'let a <- my_resource(x)' and
'let a = my_resource(x)' to work as expected despite ostensibly being
copies and moves.
2011-09-27 23:20:27 -07:00
Brian Anderson
459353e107 Prevent copies of resources into various things 2011-09-27 21:50:07 -07:00
Patrick Walton
9ba86178ef rt: Store the task in TLS 2011-09-27 18:12:03 -07:00
Brian Anderson
888e22aacc Add more comments about kind checking on local move initializers 2011-09-27 16:03:10 -07:00
Brian Anderson
8217e4bd38 Add xfailed tests that resources can't be copied into various things 2011-09-27 16:03:10 -07:00
Brian Anderson
b8bb663df7 Don't ever raise unique kinds of pinned kinds to shared (again)
So *resource, ~resource, [resource] are all pinned. This is counter to the
design of the kind system, but this way is a much clearer path to type safety.
Once we've established a good baseline with lots of tests, then we can try to
make raising pinned kinds work.
2011-09-27 16:03:10 -07:00
Brian Anderson
e50580aa66 Revert "Use DPS for assignment and local initialization"
This reverts commit b1b202d302.
2011-09-27 16:03:09 -07:00
Brian Anderson
1097463d96 Add an xfailed test for bogus deep copying of things containing resources 2011-09-27 14:28:20 -07:00
Brian Anderson
4bffa5e13a Add an xfailed test for bogus vector addition of typarams 2011-09-27 14:24:28 -07:00
Marijn Haverbeke
04f062f9d4 Fix lurking bug in matching of nil
Which was somehow made visible by the DPS changes.
2011-09-27 22:49:33 +02:00
Marijn Haverbeke
b1b202d302 Use DPS for assignment and local initialization
Issue #667
2011-09-27 20:33:09 +02:00
Marijn Haverbeke
e42f3b8481 Safeguard against self-assignment for unique types 2011-09-27 20:33:09 +02:00
Jesse Ruderman
923aa4744e Test for #924 2011-09-27 11:05:16 -07:00
Marijn Haverbeke
94db38a530 Move expr_unary to DPS style
Issue #667
2011-09-27 17:31:15 +02:00
Marijn Haverbeke
92d63ffa65 Make trans_rec and trans_tup understand overwrite dests
Issue #667
2011-09-27 17:31:15 +02:00
Marijn Haverbeke
8282f7fe80 Move expr_binary into trans_expr_dps
Issue #667
2011-09-27 17:30:54 +02:00
Marijn Haverbeke
806e74fbf5 Move expr_lit and expr_vec into trans_expr_dps
Issue #667
2011-09-27 17:30:45 +02:00
Marijn Haverbeke
8ea72fae99 Move more non-value-returning things to trans_expr_dps.
Issue #667
2011-09-27 17:30:45 +02:00
Brian Anderson
b49f4689f5 Add two xfailed tests for invalid copies into vectors 2011-09-26 23:45:51 -07:00
Brian Anderson
1796abc3ef xfail-win32 -> xfail-fast 2011-09-26 23:34:54 -07:00
Brian Anderson
4f2a0117c7 Try to appease windows by xfail-win32'ing a random test 2011-09-26 23:34:12 -07:00
Brian Anderson
df19b7a13a Test for issue #980 2011-09-26 23:24:53 -07:00
Brian Anderson
6b42ad5ea0 Enforce copy restrictions on let initializers 2011-09-26 22:00:15 -07:00
Brian Anderson
07e13fe447 Make some nocopy tests a bit more futureproof
Turn the let assignment initializers into move initializers since
that assignment is going to become illegal
2011-09-26 22:00:15 -07:00
Jesse Ruderman
20c2d2a999 Distinguish #924 2011-09-26 20:44:57 -07:00
Jesse Ruderman
4ff46a1502 Add a cycle-collection fuzzer 2011-09-26 20:34:07 -07:00
Brian Anderson
3778b6c6a8 Prevent copying of uncopyable things via the copy op 2011-09-26 20:03:30 -07:00
Brian Anderson
755001725a Prevent copying of uncopyable things via compound assignment ops 2011-09-26 20:03:24 -07:00
Brian Anderson
99cbea51a1 Don't allow vectors of pinned kinds to be copied 2011-09-26 19:57:00 -07:00
Brian Anderson
4bee452221 Don't allow copying of unique boxes of pinned kinds
Issue #409
2011-09-26 18:43:49 -07:00
Brian Anderson
2d5e085eb9 Add a test that unique boxes in vectors are copied when the vector is
Issue #409
2011-09-26 17:59:58 -07:00
Patrick Walton
a88d9effbc rt: Don't run arbitrary destructors on cycle collection; that's just broken. 2011-09-26 17:41:22 -07:00
Patrick Walton
5c973142df rt: Turn on cycle collection at task death; add a test case 2011-09-26 16:59:15 -07:00
Patrick Walton
ad19ab4c6f rt: Make the logic that moves environments between tasks update the GC alloc chain correctly 2011-09-26 16:59:15 -07:00
Patrick Walton
47e5ab093a stdlib: Fix typos in comments in lib/test.rs 2011-09-26 16:59:15 -07:00
Brian Anderson
389852b5c0 Fix tags of unique boxes
Issue #409
2011-09-26 14:44:08 -07:00
Brian Anderson
223f5be166 Unique vectors and boxes of pinned are unique kinds. Closes #977 2011-09-26 13:38:46 -07:00
Marijn Haverbeke
8c0918ac18 Construct records and tuples in-place
Issue #667

Now, {a: {b: 10, c: 20}, d: @30} will simply write the values in the right
places, rather than creating intermediary records and then memmoving them.
Cuts about a megabyte off the unoptimized compiler size.
2011-09-26 22:13:08 +02:00
Marijn Haverbeke
5837975f95 Convert more expression types to use DPS
expr_rec, expr_tup, most of the exprs that don't return anything. Make
trans_ret almost trivial by using destination adaptors (trans_save_in,
trans_by_ref).

Issue #667
2011-09-26 21:34:10 +02:00
Marijn Haverbeke
345b5a47bd Add a workaround hack for issue #913
I can't figure out what the real cause of this bug is, but I want
to be able to use blocks inside loops again.
2011-09-26 21:34:10 +02:00
Patrick Walton
37cf7b92c8 test: Fix more typos in weird-exprs.rs. 2011-09-26 10:26:30 -07:00
Patrick Walton
2348858995 test: wierd-exprs -> weird-exprs 2011-09-26 10:24:46 -07:00
Patrick Walton
81f1863de7 rt: Remove obsolete comment 2011-09-26 10:24:21 -07:00
Graydon Hoare
93f0e9bac3 Refine notes in kind.rs some more. Add a fixme to ty.rs.
Kinds are still pretty wobbly. See thread starting at
https://mail.mozilla.org/pipermail/rust-dev/2011-September/000807.html
2011-09-25 21:20:17 -07:00
Jesse Ruderman
798b3531a6 Enable hammertime 2011-09-25 21:13:52 -07:00
Jesse Ruderman
73898351d2 Test for #973 2011-09-25 21:01:50 -07:00
Jesse Ruderman
60ec49b121 Test for #942 2011-09-25 20:57:44 -07:00
Jesse Ruderman
56410b2fb6 Remove FIXME test that's covered by run-pass/unreachable-code.rs 2011-09-25 20:56:19 -07:00
Marijn Haverbeke
8911aef798 Make return-by-ref function headers pretty-print safely
Closes #972
2011-09-26 04:11:35 +02:00
Marijn Haverbeke
1e988f228d Don't call trans_bind_thunk in an unreachable context
Closes #973
2011-09-26 04:08:45 +02:00
Marijn Haverbeke
4c5e42a139 Make 'fail fail;' compile.
Closes #972
2011-09-26 03:57:08 +02:00
Marijn Haverbeke
6164b72402 Fix bug in mutability-checking pass
It wasn't properly handling function arguments.
2011-09-26 03:56:39 +02:00
Jesse Ruderman
203bc16e7b Fuzzer: stop ignoring fixed bugs 2011-09-25 12:24:42 -07:00
Brian Anderson
98db2febd3 Handle ~fail. Closes #968 2011-09-24 23:52:22 -07:00
Brian Anderson
895674b6eb Add a test for assignment of unique boxes of generics
Closes #976

Issue #409
2011-09-24 21:31:28 -07:00
Brian Anderson
4f7ecce7d1 Support non-immediates in trans_uniq::copy_val
Issue #409
2011-09-24 21:28:58 -07:00
Jesse Ruderman
2b15aefffe Fuzzer: ignore more bugs 2011-09-24 21:01:39 -07:00
Lindsey Kuper
822ed2c6d3 Small refactors.
Factor out some shared code from the start of process_fwding_mthd and
process_bkwding_mthd; get rid of unneeded temp variable.
2011-09-24 23:38:47 -04:00
Jesse Ruderman
3b5b29c7ec Reduce and clarify abuse of 'pure' in interner 2011-09-24 16:33:26 -07:00
Jesse Ruderman
0125532106 Don't iloop (future-proof test against improved reachability computations) 2011-09-24 16:13:32 -07:00
Jesse Ruderman
c29f1af17e Remove irrelevant parts of test 2011-09-24 16:11:50 -07:00
Jesse Ruderman
064f52fa96 Mark some fns as pure so type_is_unique_box doesn't need to be unchecked 2011-09-24 15:36:09 -07:00
Jesse Ruderman
48c2c9b3a7 Mark vec::len as pure 2011-09-24 15:10:03 -07:00
Brian Anderson
9029416e28 Tweak random thing to make windows build succeed. Awesome.
So, a recent commit made syntax-extension-fmt fail under check-fast.
This commit disables lots-a-fail under check-fast and voila! *grumble*
2011-09-24 14:44:42 -07:00
Brian Anderson
e804352de4 Move a previous run-pass test for kind-lowered unique boxes to compile-fail
This test tries to swap unique boxes containing resources, which is not
allowed.

Issue #409
2011-09-24 12:36:51 -07:00
Brian Anderson
c5877450e6 Tweak the type allocated for unique pointers
Seems to be more correctish...

Issue #409
2011-09-24 12:36:51 -07:00
Brian Anderson
777a536313 Support non-immediates in unique-box type glue
Issue #409
2011-09-24 12:36:51 -07:00
Brian Anderson
856acbf66d Vectors containing pinned kinds become pinned
Otherwise they could be copied
2011-09-24 12:36:51 -07:00
Brian Anderson
e5d5682065 Unique pointers containing pinned kinds become pinned
Issue #409
2011-09-24 12:36:51 -07:00
Brian Anderson
97629727b1 Add tests for swapping unique boxes
Issue #409
2011-09-24 12:36:50 -07:00
Jesse Ruderman
fbe00fc236 Add rand_util.rs 2011-09-23 23:24:43 -07:00
Jesse Ruderman
3bac3378ae Fuzzer: use different exclusions when testing pretty-printer than when testing compiler 2011-09-23 23:23:04 -07:00
Jesse Ruderman
3a7a2943dd Add vec::filter 2011-09-23 19:10:48 -07:00
Patrick Walton
7979bbbf51 rt: Sweep in cycle collection 2011-09-23 17:57:25 -07:00
Patrick Walton
41082c6b83 rt: Whitespace police 2011-09-23 17:57:25 -07:00
Patrick Walton
b995028c47 rt: Turn off some debug code 2011-09-23 17:57:25 -07:00
Patrick Walton
0c4e0fdfae rt: Get rid of the hack that looks for captured type descriptors adjacent to the root one for functions and objects 2011-09-23 17:57:25 -07:00
Erick Tryzelaar
6164de90e2 Add libuv upgrade instructions to src/etc/gyp-uv 2011-09-23 16:53:07 -07:00
Erick Tryzelaar
5f066e06b9 Update to libuv commit 3ca382.
This patch changes libuv's gyp build system to
make it's own makefiles. To generate them for rust,
run these commands. They requires python 2.x to
work:

$ mkdir -p src/rt/libuv/build
$ svn co http://gyp.googlecode.com/svn src/rt/libuv/build/gyp
$ ./etc/src/gyp_uv
2011-09-23 16:53:06 -07:00
Brian Anderson
d8f6e9f237 Add let destructuring for unique boxes
Issue #409
2011-09-23 16:12:04 -07:00
Brian Anderson
122f714fde Add missing case for pat_uniq to syntax::visit
Issue #409
2011-09-23 16:03:35 -07:00
Brian Anderson
27972a6def Add two tests for sending unique boxes across channels
Issue #409
2011-09-23 15:32:31 -07:00
Brian Anderson
68512f2d9d Actually use unique boxes in run-fail/unwind-unique 2011-09-23 15:23:44 -07:00
Brian Anderson
18b01d5cfe Create a bunch of test cases for unique boxes by copying box tests
XFAIL the ones that don't work

Issue #409
2011-09-23 15:15:30 -07:00
Brian Anderson
2082f67765 Begin to support pattern matching on unique boxes
Issue #409
2011-09-23 15:15:30 -07:00
Patrick Walton
87700adb2f rt: Add missing <stdint.h> in rust_abi.h 2011-09-23 15:14:44 -07:00
Patrick Walton
e036c9d8d2 rt: Add missing const on the Windows path 2011-09-23 15:08:37 -07:00
Patrick Walton
557d641175 rt: Get RUST_TRACK_ORIGINS working. You can now call 'debug::dump_origin' in gdb and get a backtrace saying where a box came from. 2011-09-23 15:06:28 -07:00
Jesse Ruderman
7b1a3bb8e6 Add more unreachable-code tests. Closes #935 2011-09-23 15:01:19 -07:00
Marijn Haverbeke
2c7f21c524 Properly mark unreachable alt bodies as unreachable 2011-09-23 23:37:15 +02:00
Marijn Haverbeke
572a4b71d5 Make AddIncomingToPhi take single values rather than arrays 2011-09-23 23:20:19 +02:00
Marijn Haverbeke
64c69aa7b8 Start on a piecemeal conversion to DPS
Issue #667

Wires in a basic framework for destination-passing style, with
backwards-compatibility to the old approach, so that expression types
can be moved over to it one at a time (by moving them from trans_expr
to trans_expr_dps).
2011-09-23 22:49:37 +02:00
Marijn Haverbeke
d114dedf9a Don't return unused values from zero_alloca and trans_stmt 2011-09-23 22:28:05 +02:00
Marijn Haverbeke
abf002ad60 Fix bug where the type of a function's top-level block wasn't fixed up 2011-09-23 22:28:05 +02:00
Patrick Walton
aabff480c9 rt: Factor out stack walking into rust_abi.cpp 2011-09-23 12:49:20 -07:00
Brian Anderson
d10d23f0ad xfail-win32 linked-failure and send-iloop 2011-09-23 12:30:36 -07:00
Patrick Walton
82935c2d17 rt: Fix message formatting issues in rust_debug 2011-09-23 12:27:13 -07:00
Patrick Walton
03f0932a6d rt: ifdef out backtrace() on Windows 2011-09-23 12:26:41 -07:00
Patrick Walton
9226ac9ec5 rt: Fix build bustage due to gcc's format string warnings 2011-09-23 12:09:52 -07:00
Patrick Walton
61afef29a1 rt: Add a RUST_TRACK_ORIGINS debug flag to help track down memory corruption 2011-09-23 11:42:20 -07:00
Patrick Walton
dbdeff659f rt: Factor out the logic that handles the various magic debug environment variables 2011-09-23 11:04:14 -07:00
Patrick Walton
f8007b5535 rt: Remove the problematic min()/max()/align()/abs() macros from isaac/standard.h, as they're unused 2011-09-23 11:04:14 -07:00
Graydon Hoare
18c6cc6371 More steps to arch-specific target libs (#474) 2011-09-23 10:50:16 -07:00
Marijn Haverbeke
5310cf4f30 xfail-pretty unreachable-code.rs 2011-09-23 11:33:27 +02:00
Marijn Haverbeke
348cd86d87 Properly check types of do-while condition expr
Closes #956
2011-09-23 11:19:15 +02:00
Marijn Haverbeke
0bbde048a4 Make sure no dynamic allocas are used before they are allocated
Closes #965
2011-09-23 11:11:37 +02:00
Marijn Haverbeke
49813cffb1 Use a slightly nicer hack to get zero-length strings in trans_build
Wrapping calls in str::by_ref(, ...) heap-allocated an empty string
every time (and looked really bad).
2011-09-23 11:11:37 +02:00
Marijn Haverbeke
420484579d Better handling of unreachable code in trans
The builder functions in trans_build now look at an 'unreachable' flag
in the block context and don't generate code (returning undefined
placeholder values) when this flag is set. Threading the unreachable
flag through context still requires some care, but this seems a more
sane approach than re-checking for terminated blocks throughout the
compiler.

When creating a block, if you use its closest dominator as parent, the
flag will be automatically passed through. If you can't do that,
because the dominator is a scope block that you're trying to get out
of, you'll have to do something like this to explicitly pass on the
flag:

    if bcx.unreachable { Unreachable(next_cx); }

Closes #949. Closes #946. Closes #942. Closes #895. Closes #894.
Closes #892. Closes #957. Closes #958.
2011-09-23 11:09:57 +02:00
Marijn Haverbeke
b029789f02 Remove backward-compatible support for 'mutable' before type.
Closes #966
2011-09-23 09:58:51 +02:00
Brian Anderson
93b9574d32 Remove deprecated mutable type constructor from run-pass/issue-511
This was triggering a warning that was making the pretty-print test fail
2011-09-22 23:08:59 -07:00
Brian Anderson
cee7b4caee Add test for issue #511. Closes #511 2011-09-22 22:50:12 -07:00
Brian Anderson
dbd2ee015a Remove is_stateful flag from tydesc. Closes #136 2011-09-22 22:15:25 -07:00
Brian Anderson
33dd7cc854 Add a test for negative constants. Closes #358 2011-09-22 21:59:09 -07:00
Brian Anderson
0e5f76a718 Fix ty_uniq case in maybe_auto_unbox
Closes #961
Issue #409
2011-09-22 18:14:18 -07:00
Brian Anderson
1a48023a79 Add take glue for unique boxes
Closes #962
Issue #409
2011-09-22 18:05:36 -07:00
Brian Anderson
77fcab043e Remove nonsensical load and store from trans_uniq::copy_val
Issue #409
2011-09-22 17:50:27 -07:00
Brian Anderson
f628003da6 Adda test for returning unique boxes
Issue #409
2011-09-22 17:00:53 -07:00
Brian Anderson
7a76323459 Allow vectors to contain unique boxes. Closes #952
Issue #409
2011-09-22 17:00:53 -07:00
Patrick Walton
e372f943e2 rustc: Write raw type parameters instead of linearized type parameters in object body shapes 2011-09-22 16:13:03 -07:00
Brian Anderson
dfa5bd1114 XFAIL task-comm 2011-09-22 16:09:10 -07:00
Brian Anderson
30a4eab380 Autoderef indexes and fields of unique boxes
Issue #409
2011-09-22 16:06:25 -07:00
Brian Anderson
dff4986f9e Add tests for moving unique boxes
Issue #409
2011-09-22 15:43:08 -07:00
Brian Anderson
d174d917e2 Calculate the correct kind for unique boxes
Issue #409
2011-09-22 15:28:49 -07:00
Brian Anderson
61a14f3df0 Add a test for mutable references to unique boxes as function arguments
Issue #409
2011-09-22 15:03:44 -07:00
Brian Anderson
1367f2b63e Add a test for unique boxes as fn args
Issue #409
2011-09-22 14:55:08 -07:00
Brian Anderson
3bb7035914 Add a test for unique boxes containing shared boxes
Issue #409
2011-09-22 14:39:57 -07:00
Brian Anderson
3f41563cc9 Drop the previous value when copying one unique box local to another
Issue #409
2011-09-22 13:53:34 -07:00
Brian Anderson
7c4fe10f02 Add a test that assignment of unique boxes to locals does a copy
Issue #409
2011-09-22 13:53:34 -07:00
Brian Anderson
67bac873e0 Add assignment to unique box locals
Issue #409
2011-09-22 13:53:33 -07:00
Brian Anderson
268a9fe5fb Initialize unique box locals from other locals
Issue #409
2011-09-22 13:53:33 -07:00
Brian Anderson
5d5136df9f Convert trans_uniq asserts to preconditions
Issue #409
2011-09-22 13:53:33 -07:00
Brian Anderson
c4f02a7925 Sprinkle some asserts through trans_uniq 2011-09-22 13:53:33 -07:00
Brian Anderson
8492eed137 Move uniq trans code to trans_uniq module
Issue #409
2011-09-22 13:53:30 -07:00
Brian Anderson
0f0ba33d82 Factor alloc_uniq from trans_uniq
Issue #409
2011-09-22 13:52:30 -07:00
Brian Anderson
f6ab12a3b1 Don't unify unique boxes with different mutability
Issue #409
2011-09-22 11:10:48 -07:00
Brian Anderson
5ab0840353 XFAIL spawnfail and task-comm-15 2011-09-22 11:06:26 -07:00
Brian Anderson
ea67099234 Add support for mutable unique boxes
Issue #409
2011-09-22 10:26:34 -07:00
Brian Anderson
1b3023e4d0 Convert ty::ty_uniq to contain a mutable type
Issue #409
2011-09-22 10:26:34 -07:00
Brian Anderson
4d088bd528 Call drop glue on the thing in a unique box
Issue #409
2011-09-22 10:26:34 -07:00
Marijn Haverbeke
aad1342e13 Fix long line 2011-09-22 09:23:07 +02:00
Marijn Haverbeke
5e3d0e304f Fix missing cast in do_cc
Apparently not needed on Mac (clang?), but breaking the win and linux boxes.
2011-09-22 09:17:26 +02:00
Patrick Walton
8c02adc630 rustc: Port the fn and obj traversal logic over from the GC branch. Doesn't actually do anything yet due to lack of support in trans. 2011-09-21 19:08:26 -07:00
Patrick Walton
ad3b9c41b4 rt: Implement cycle collection marking. Simple cycles can now be detected. 2011-09-21 18:14:23 -07:00
Brian Anderson
a993621e43 Log and compare unique boxes
Issue #409
2011-09-21 17:08:40 -07:00
Brian Anderson
42fd2a9d89 Remove unused arg from revoke_clean 2011-09-21 15:39:46 -07:00
Brian Anderson
92af552956 Add an unwind test for failure during unique box construction 2011-09-21 14:45:08 -07:00
Brian Anderson
2cc01e2ca2 Add ability to deref unique boxes. Make unique boxes immediates.
Issue #409
2011-09-21 14:40:55 -07:00
Brian Anderson
956bc69330 Add more unwind tests for failure during construction of allocated things 2011-09-21 14:14:17 -07:00
Marijn Haverbeke
80778f642f Revert "rustc: Make bottom types immediates. Add a |log ret| testcase. Closes #935."
This reverts commit f19ab1ff3c.
2011-09-21 21:39:31 +02:00
Patrick Walton
f19ab1ff3c rustc: Make bottom types immediates. Add a |log ret| testcase. Closes #935. 2011-09-21 10:55:28 -07:00
Patrick Walton
fcd17731cf rustc: Don't try to spill bottom types, since we can't make any assumptions about the type of the ValueRef 2011-09-21 10:55:27 -07:00
Marijn Haverbeke
a034f87146 Revert "Implement pattern ranges for all numeric types."
This reverts commit ce0f054f9d.
2011-09-21 18:42:09 +02:00
Marijn Haverbeke
410f73fdb2 Don't write to retptr when returning nil, pass undef for unused params 2011-09-21 17:57:19 +02:00
Graydon Hoare
68d50b5928 Add target_triple to session::options. Use host triple by default, accept --target on command line. 2011-09-21 08:46:44 -07:00
Marijn Haverbeke
07eb29dbce Revert "rustc: Make bottom types immediates. Add a |log ret| testcase. Closes #935."
This reverts commit e6a84f252a.
2011-09-21 11:05:54 +02:00
Josh Matthews
ce0f054f9d Implement pattern ranges for all numeric types. 2011-09-21 09:36:12 +02:00
Patrick Walton
e6a84f252a rustc: Make bottom types immediates. Add a |log ret| testcase. Closes #935. 2011-09-20 22:52:26 -07:00
Jesse Ruderman
f7b67944cd Add another testcase for #910 2011-09-20 20:00:34 -07:00
Jesse Ruderman
01ea880196 Re-wrap long line 2011-09-20 19:40:47 -07:00
Patrick Walton
eafb70072a rt: Zero out allocations so that the CC won't die if it happens to run while a box is being constructed.
This is kind of unfortunate.
2011-09-20 19:15:46 -07:00
Patrick Walton
a63cc03a07 rt: Add some debug code (ifdef'd out) for diagnosing marking problems 2011-09-20 19:15:13 -07:00
Patrick Walton
ab76305cb9 rt: Skip over the reference count properly before walking the contents of the box when determining internal reference counts 2011-09-20 19:14:58 -07:00
Patrick Walton
74194df7dd rt: Remove obsolete comment 2011-09-20 19:14:18 -07:00
Patrick Walton
b39c7c4c45 rt: Increase the tolerance of the vector range sanity check 2011-09-20 19:13:45 -07:00
Patrick Walton
e27279d7db rt: Clean up debugging print statements in rust_obstack.cpp 2011-09-20 18:26:09 -07:00
Brian Anderson
f809e22697 Represent unique creation as a unop in the AST instead of its own expr
Like the box unop.

Issue #409
2011-09-20 18:06:47 -07:00
Brian Anderson
7ae251789c Make creation of unique boxes work again
Issue #409
2011-09-20 17:51:17 -07:00
Brian Anderson
865dcb663d Parse unique box types
Issue #409
2011-09-20 17:51:17 -07:00
Patrick Walton
be1feaa918 rt: First stab at computing internal reference counts 2011-09-20 17:49:49 -07:00
Graydon Hoare
aa7d624c15 Revert trivial commit. 2011-09-20 17:20:14 -07:00
Graydon Hoare
ff6f444de2 Another trivial commit. 2011-09-20 17:19:51 -07:00
Graydon Hoare
936e0311b0 Trivial commit to test reporting to IRC. 2011-09-20 17:18:43 -07:00
Patrick Walton
e26b1883dd rt: Stub code for the cycle collector 2011-09-20 16:49:31 -07:00
Patrick Walton
c61691110a rt: Make rust_shape.h able to be included in more contexts 2011-09-20 16:49:31 -07:00
Jesse Ruderman
35016d3147 Ignore #949 2011-09-20 16:42:58 -07:00
Jesse Ruderman
571ff0c84a Add @true to common_exprs and fix some exclusions 2011-09-20 16:32:27 -07:00
Patrick Walton
77f0101edb rt: Add an on-the-side GC chain 2011-09-20 15:35:14 -07:00
Patrick Walton
5209b19255 rt: Rename rand() to isaac_rand() since the former prevents lots of standard headers from being included 2011-09-20 15:34:47 -07:00
Patrick Walton
307957710c rt: Remove the GC alloc chain 2011-09-20 14:20:16 -07:00
Patrick Walton
45086b7bfd rt: Remove #include "rust_box.h" 2011-09-20 14:07:10 -07:00
Patrick Walton
9a8b4a1be6 Revert "rt: Rename rust_box to rust_box_legacy, as they're about to become self-describing"
This reverts commit f6871e832c.
2011-09-20 13:57:04 -07:00
Patrick Walton
d73a8606c9 rt: Remove rust_box.h; I'm going to switch to an external map. 2011-09-20 13:55:23 -07:00
Patrick Walton
e981abdb01 rt: Remove upcall_malloc_box and upcall_free_box; I don't think they'll be necessary after all 2011-09-20 13:50:15 -07:00
Patrick Walton
d607316b2f rustc: Pass actual tydescs to upcall_malloc 2011-09-20 13:48:22 -07:00
Patrick Walton
78147452b8 rustc: Remove trans_raw_malloc, as it's only called from one place 2011-09-20 13:38:54 -07:00
Jesse Ruderman
d882f8ee2f Fuzzer: add common_exprs, but comment out its use for now. Update lists of known bugs. 2011-09-20 12:04:12 -07:00
Brian Anderson
13f57dfbea Remove bogus comments from run-pass/task-comm-3 2011-09-20 12:01:48 -07:00
Brian Anderson
a609da7c15 Rehabilitate run-fail/trivial-message2 2011-09-20 11:59:51 -07:00
Jesse Ruderman
58d812f0f8 Fix syntax error 2011-09-20 11:58:33 -07:00
Brian Anderson
12d7363469 Remove a bogus comment from run-fail/spawnfail 2011-09-20 11:51:15 -07:00
Brian Anderson
e3b1397097 Actually un-xfail task-comm-14 2011-09-20 11:49:13 -07:00
Brian Anderson
c6d460d4e3 Rehabilitate task-comm-14 2011-09-20 11:47:22 -07:00
Brian Anderson
564bdacece Add an assert to run-fail/unwind-alt
Jesse reported not being able to reproduce this without the assert. May have
to do with optimtizations.
2011-09-20 11:26:01 -07:00
Brian Anderson
de1b394c32 Move linker invocation from driver::rustc to back::link 2011-09-20 11:10:03 -07:00
Brian Anderson
870117f44e Zero locals that are inited via alt expressions. Closes #945 2011-09-20 10:28:16 -07:00
Marijn Haverbeke
e33f116598 Remove some obsolete 'copy' operators from trans 2011-09-20 17:35:40 +02:00
Marijn Haverbeke
1eaddb772e Properly handle 'put;' in trans
Closes #947
2011-09-20 17:34:32 +02:00
Marijn Haverbeke
8c85745452 Remove some bogus white-space from llvm.rs 2011-09-20 17:14:50 +02:00
Jesse Ruderman
35873a95d4 Fuzzer: add ability to run the generated programs 2011-09-19 21:57:43 -07:00
Brian Anderson
107f1292eb Add tests for moving nullary functions
I believe this was fixed by marijn recently.

Closes #922
2011-09-19 19:04:33 -07:00
Brian Anderson
91d8e69621 Un-xfail various tests 2011-09-19 18:55:26 -07:00
Brian Anderson
f4a19f800e Un-xfail-fast run-pass/send-iloop 2011-09-19 18:36:31 -07:00
Brian Anderson
a528614af5 Remove a spurious error pattern from run-pass/linked-failure 2011-09-19 18:25:32 -07:00
Brian Anderson
9371a1ad12 Un-xfail two tests under check-fast
Closes #937. Fixed by majick.
2011-09-19 18:23:34 -07:00
Brian Anderson
7e046edebb Revert "xfail some tests that hang (instead of segfaulting) since eafb6789a2"
This reverts commit 5f44a1356e.

Issue #936
2011-09-19 18:00:41 -07:00
Brian Anderson
facc7fd2ef Check for the correct exit code on cfail tests. Closes #938 2011-09-19 18:00:17 -07:00
Brian Anderson
7c6630a367 Build tuples in two phases to avoid cleaning up partial tuples 2011-09-19 17:59:53 -07:00
Brian Anderson
9626e2f71f Register tuple cleanups after the tuple is built
Issue #936
2011-09-19 17:59:47 -07:00
Brian Anderson
a18986c1a1 Revert "Revert "xfail some tests that hang (instead of segfaulting) since eafb6789a2""
This reverts commit 6eabe6f3f4.
2011-09-19 16:08:17 -07:00
Brian Anderson
7bc282a561 Revert "Check for the correct exit code on cfail tests. Closes #938"
This reverts commit c42401ebbc.
2011-09-19 16:08:06 -07:00
Brian Anderson
6eabe6f3f4 Revert "xfail some tests that hang (instead of segfaulting) since eafb6789a2"
This reverts commit 5f44a1356e.

Issue #936
2011-09-19 15:45:39 -07:00
Brian Anderson
c42401ebbc Check for the correct exit code on cfail tests. Closes #938 2011-09-19 15:33:14 -07:00
Brian Anderson
b1bf9ef5ae Break fold's circular reference during unwinding
This converts the AST fold into a resource that breaks it's own circular
reference (just a temporary workaround until GC), so that failure during fold
will unwind correctly.

Issue #936
2011-09-19 15:32:56 -07:00
Brian Anderson
dd1cf63515 Build records in two phases to avoid cleanups on partial records 2011-09-19 14:28:04 -07:00
Brian Anderson
432e931a2a Don't register record cleanups until the record is built 2011-09-19 14:28:04 -07:00
Patrick Walton
3632629acc rt: Introduce a self-describing box representation and functions to create and free them 2011-09-19 11:40:41 -07:00
Marijn Haverbeke
5f44a1356e xfail some tests that hang (instead of segfaulting) since eafb6789a2
See issue #936
2011-09-18 22:13:54 +02:00
Marijn Haverbeke
eafb6789a2 Stop creating function pairs for static functions
These are now called directly. When taking their value, a null pointer is added
to create a pair.
2011-09-18 22:05:58 +02:00
Tim Chevalier
8640e67e3f Add a precondition to GEP_tup_like 2011-09-17 10:18:30 -07:00
Tim Chevalier
2b98eccfee Add a type_is_tup_like predicate that takes a block ctxt, and make some fns pure 2011-09-17 10:18:11 -07:00
Tim Chevalier
8613f28a16 In trans, replace another impossible case with a precondition 2011-09-17 09:13:05 -07:00
Brian Anderson
1002623201 Make move-mode arguments unwind correctly. Closes #939 2011-09-16 14:38:04 -07:00
Tim Chevalier
99236d64d0 Dead code elim 2011-09-16 13:32:44 -07:00
Tim Chevalier
fa74df033d Add a constraint on trans::type_of_fn_from_ty
And change callers appropriately.
2011-09-16 13:07:08 -07:00
Tim Chevalier
0d4b51d10d Add a returns_non_ty_var predicate
which just calls non_ty_var on the return type of t, assuming t is
a function type.
2011-09-16 13:06:31 -07:00
Tim Chevalier
1b2c5c4c9b Make ty_fn_ret pure and get rid of a duplicate function 2011-09-16 13:06:31 -07:00
Marijn Haverbeke
43b219dbec Work around an apparent compiler bug to make my patch run
Without this, it would fail when optimization is turned on. The result of
the Load(bcx, llclosure) call would end up in llenv in a corrupted form.
2011-09-16 21:31:36 +02:00
Marijn Haverbeke
575aae407b Saner approach to lvalues and callable values in trans
LValues no longer carry information about generics and objs, instead
there's an extended form of lvalue, lval_maybe_callee, only used by
call and bind, which holds this info.

This makes it possible to take the value of a method and get a working
closure, and will (with some more work) allow us to call statically
known functions without loading from their pair.

Closes #435
Closes #758
2011-09-16 21:31:36 +02:00
Patrick Walton
d9c664e3fa Revert "Revert "Make option::get return the option contents by reference" due to memory corruption"
This reverts commit d1c27ba9e0.
2011-09-16 12:20:06 -07:00
Brian Anderson
679c2d25a1 Un-xfail some task-comm tests 2011-09-16 11:29:40 -07:00
Brian Anderson
4028a099f5 Yield after send 2011-09-16 11:08:01 -07:00
Tim Chevalier
172df2e3a2 Add non_ty_var precondition for type_of_fn, plus minor cleanup 2011-09-16 10:58:02 -07:00
Patrick Walton
469853d5ff rt: Add a new rust_box structure to the runtime that describes a self-describing box 2011-09-16 10:51:59 -07:00
Patrick Walton
f6871e832c rt: Rename rust_box to rust_box_legacy, as they're about to become self-describing 2011-09-16 10:51:58 -07:00
Jesse Ruderman
72317dee0d Fuzzer: update lists of known bugs 2011-09-16 10:44:58 -07:00
Brian Anderson
25394950ae Handle the case where a child task tries to kill a parent while it is dying
Still looks pretty racy
2011-09-16 10:05:12 -07:00
Marijn Haverbeke
ad470d741e Revert "Saner approach to lvalues and callable values in trans"
This reverts commit 66153436c9.
2011-09-16 18:37:46 +02:00
Marijn Haverbeke
133d36f452 Require body of else-less if expressions to be a value-less block
For consistency with other constructs that could not possibly return a
value (say, loops).
2011-09-16 18:21:06 +02:00
Marijn Haverbeke
66153436c9 Saner approach to lvalues and callable values in trans
LValues no longer carry information about generics and objs, instead
there's an extended form of lvalue, lval_maybe_callee, only used by
call and bind, which holds this info.

This makes it possible to take the value of a method and get a working
closure, and will (with some more work) allow us to call statically
known functions without loading from their pair.

Closes #435
Closes #758
2011-09-16 18:21:05 +02:00
Marijn Haverbeke
639d88a693 Move expr_uniq case in trans to a saner place
Note that unique pointers are still broken in more ways than I can count.
2011-09-16 15:03:03 +02:00
Marijn Haverbeke
f8a35234ad Remove autoderef for calls
We were only using it in a single place, and there for no discernable reason
(probably as part of the bare-fn-vals-are-not-copyable plan). It seems more
surprising than useful.
2011-09-16 14:39:30 +02:00
Marijn Haverbeke
c04490d97b Remove unused method_ty field from lval_result 2011-09-16 14:18:49 +02:00
Marijn Haverbeke
fb42d839a0 Clean up (and optimize) root-mutability analysis in alias.rs 2011-09-16 13:46:03 +02:00
Marijn Haverbeke
d7587c1eda Change convention for specifying referenced argument
It is now 1-based, rather than 0 based. (Seems more natural, and allows 0 to
be used to refer to self and maybe to closure.)

Also allows non-referenced args to be implicitly copied again.

Issue #918
2011-09-16 12:42:18 +02:00
Tim Chevalier
059b31f7a3 Actually call unreachable() in impossible case in type_of_inner 2011-09-15 23:22:12 -07:00
Tim Chevalier
57ede5f281 Added non_ty_var precondition to trans::type_of_inner
This allows us to legitimately call unreachable() in the ty_var case.
2011-09-15 23:22:12 -07:00
Jesse Ruderman
ce1877dc8e Add parens, as needed, around else-if conditions. 2011-09-15 21:24:24 -07:00
Tim Chevalier
2c6eba00dd Added an extra check in trans_alt
Gratuitous right now, but I'm going to change the type of trans::type_of
2011-09-15 20:32:01 -07:00
Tim Chevalier
f41f75fe53 Added more predicates in trans
Added the non_ty_var predicate (soon to be used)
Added a check in get_res_dtor (will be necessary for a future change
to type_of_fn)
Removed a gratuitous ret
2011-09-15 20:23:06 -07:00
Tim Chevalier
059952da5b Change a few span_fatals to span_err 2011-09-15 19:51:27 -07:00
Tim Chevalier
994beca00d Add unreachable() fn, also nitpicking 2011-09-15 19:51:27 -07:00
Graydon Hoare
1e3e7d4bc5 Update README slightly. 2011-09-15 16:31:33 -07:00
Graydon Hoare
c94e612ade Begin sketching an ICU binding. Doesn't work yet. 2011-09-15 15:49:17 -07:00
Patrick Walton
18cf4d904c rt: Add libunwind.h support on Mac OS X 2011-09-15 12:52:50 -07:00
Patrick Walton
d1c27ba9e0 Revert "Make option::get return the option contents by reference" due to memory corruption
This reverts commit fc0bf12516.
2011-09-15 12:52:09 -07:00
Marijn Haverbeke
fc0bf12516 Make option::get return the option contents by reference
I can't believe this actually works!
2011-09-15 17:49:29 +02:00
Brian Anderson
906f1fc425 Add regression tests for previously ambiguous syntactic forms 2011-09-15 08:47:23 -07:00
Marijn Haverbeke
7364a8c2b0 Prevent binary expressions from parsing when lhs is non-value block 2011-09-15 17:37:10 +02:00
Marijn Haverbeke
93ba85a0f1 Register new snapshot 2011-09-15 17:33:35 +02:00
Marijn Haverbeke
b843cf2117 Generalize expression roots in alias analysis
This allows calls-returning-a-reference to count as expression roots,
making it possible to return the result of such a call by reference.

Issue #918
2011-09-15 17:01:35 +02:00
Marijn Haverbeke
29177864c3 Add tests for returning by reference
Issue #918
2011-09-15 16:37:37 +02:00
Marijn Haverbeke
3abe3671bd Require the parameter that will be referenced to be noted
Issue #918
2011-09-15 16:15:17 +02:00
Marijn Haverbeke
75eee8b194 Overhaul alias-checking of blocks
The set of active bindings has to be updated as by-reference locals are
encountered.

Issue #918
2011-09-15 15:43:15 +02:00
Marijn Haverbeke
87fa38910e Make storing returned references in a by-reference local work
fn f(a: {x: str}) -> &str {
        ret a.x;
    }

    fn main() {
        let x = {x: "hi"};
        let &y = f(x); // Look ma, no copy!
        log_err y;
    }

Issue #918.
2011-09-15 15:17:14 +02:00
Marijn Haverbeke
25787bd2b8 Forbid assignment to by-reference bindings
Issue #918
2011-09-15 14:08:54 +02:00
Marijn Haverbeke
d7a1d6a1cb Make trans understand by-ref bindings
Issue #918
2011-09-15 14:00:58 +02:00
Marijn Haverbeke
8aad16112b Implement basic checking of by-reference bindings
Issue #918
2011-09-15 13:40:28 +02:00
Marijn Haverbeke
44c6370e6a Move local numbering into ast_map.rs
This further simplifies the alias pass, which is sorely needed.
2011-09-15 13:18:32 +02:00
Marijn Haverbeke
1cda74deee Add representation for by-ref let bindings
Issue #918
2011-09-15 11:42:56 +02:00
Marijn Haverbeke
197f360e30 Ensure parens are wrapped around composite exprs in call/index/field pos
This is needed to fix the second example in issue #919
2011-09-15 11:15:14 +02:00
Marijn Haverbeke
8c83ea564b More thorough check for (.. 10).x in pretty-printer
Closes #919
2011-09-15 10:59:06 +02:00
Marijn Haverbeke
63ecc84562 Also handle fail and put in print_maybe_parens_discrim
Closes #920
2011-09-15 10:14:52 +02:00
Marijn Haverbeke
3798b6f780 Remove maybe_protect_block kludge from pretty-printer
It is no longer needed.
2011-09-15 10:14:52 +02:00
Marijn Haverbeke
0b34e0e60b Introduce new semicolon rules
- Loop bodies and resource constructors aren't allowed to have
  trailing expressions anymore.

- An expression that ends* in a block without trailing expression can
  can not be called, indexed, or subscripted.

- Only expression-statements that end* in a block without trailing
  expression can omit their semicolon.

*) 'Ending in a trailing expression' is defined as being a block or
   construct-ending-in-a-block (if, alt) that either ends in an
   expression itself, or ends in another block-like expression that
   has a trailing expression (by these same rules).
2011-09-15 09:49:00 +02:00
Marijn Haverbeke
7298b8f4ba Insert omitted semicolons for statements 2011-09-15 09:49:00 +02:00
Brian Anderson
2bed548d1b xfail-fast run-pass/linked-failure.rs. Not sure what the problem is. 2011-09-14 17:47:48 -07:00
Brian Anderson
a0ad9a42cd Unsupervise tasks before the scheduler kills them. Unblock before yield->fail 2011-09-14 17:05:35 -07:00
Brian Anderson
69eda46af8 Add a run-pass test for linked failure 2011-09-14 15:51:46 -07:00
Brian Anderson
103197bc42 Make failure propagation to dead parents work
The failure will basically go 'through' the dead parent and continue
propagating the failure (as if the child was reparented).
2011-09-14 15:48:14 -07:00
Brian Anderson
9505d70513 Make linked task failure work again 2011-09-14 14:20:41 -07:00
Brian Anderson
ad2bdbee08 Add another XFAILed test for failing destructors 2011-09-14 10:59:17 -07:00
Brian Anderson
ca0d3cae5c Add another unwind test
This makes sure that cleanups added after the first invoke in a scope are
actually run on unwind
2011-09-14 09:21:28 -07:00
Brian Anderson
31d4fe37f6 Revert "Try a little harder to avoid creating new landing pads"
This reverts commit b8e31ac469.

Conflicts:

	src/comp/middle/trans.rs
2011-09-14 09:19:31 -07:00
Marijn Haverbeke
93de2f0b74 Add syntax and representation for return-by-mutably-rooted-ref
This will be used in the near future to decide what can safely
be done with the returned reference.

Issue #918
2011-09-14 17:30:38 +02:00
Marijn Haverbeke
1cabe37155 Prevent memory errors when returning references to temp args.
Issue #918
2011-09-14 16:46:54 +02:00
Marijn Haverbeke
c6619f9ce0 Accept returning refs rooted in an arg from a by-ref funtion
Issue #918
2011-09-14 16:19:15 +02:00
Marijn Haverbeke
a3c449df74 Make ast_map.rs index function args, switch it over to simple_visitor 2011-09-14 15:30:59 +02:00
Marijn Haverbeke
cd0e7fc041 Remove some extra white-space introduced by the pretty-printer 2011-09-14 15:20:22 +02:00