summary refs log tree commit diff
path: root/src/rt/rust_upcall.cpp
AgeCommit message (Collapse)AuthorLines
2012-02-17rt: Don't hit TLS on upcall_vec_push unless necessaryBrian Anderson-5/+3
2012-02-17rt: Don't log on entry to upcall_vec_push. Also slowBrian Anderson-2/+0
2012-02-17rt: Don't do the stack canary check in upcall_vec_push. Too slowBrian Anderson-4/+0
2012-02-17rt: Simplify upcall_vec_pushBrian Anderson-23/+11
2012-02-09rt: Inline everything on the C-stack-switching pathBrian Anderson-1/+0
2012-02-09rt: Add upcall_call_shim_on_rust_stackBrian Anderson-1/+26
2012-02-09rt: Add rust_task::call_on_c_stackBrian Anderson-5/+3
2012-02-09rt: Rename call_shim_on_c_stack to call_and_change_stacksBrian Anderson-2/+2
2012-02-09rt: Rename new_stack to next_stack, del_stack to prev_stackBrian Anderson-4/+4
2012-02-03rt: Rename rust_scheduler to rust_task_threadBrian Anderson-33/+33
2012-02-03Remove experimental GC codeMarijn Haverbeke-6/+3
It's been sitting unused long enough to have bitrotted completely.
2012-02-01make boxes self-describing (fixes #1493)" (take 2)Niko Matsakis-18/+42
this will be used to generate a new snapshot.
2012-02-01Revert "make boxes self-describing (fixes #1493)" until a newNiko Matsakis-42/+18
snapshot is prepared.
2012-02-01make boxes self-describing (fixes #1493)Niko Matsakis-18/+42
2012-01-17roll back commit 1c7a62Niko Matsakis-9/+0
2012-01-17Use a memset upcall to zero things without static alignmentMarijn Haverbeke-0/+9
This fixes issues #843 and #1546. The cost of an upcall is unfortunate, though. I assume there must be a way to simply manually compute the pointer or size, using something akin to the formula in `align_to` in `rust_util.h`. I could not get this to work, unfortunately.
2012-01-12add tydescs into shape, rewrite walk_fn_contents()Niko Matsakis-5/+7
2012-01-12free uniq data we encounter on the sweep, walk thru them otherwiseNiko Matsakis-1/+1
2012-01-07fix valgrind error: allocate enough space for all type descsNiko Matsakis-1/+1
2012-01-06plug leak: free shared type descrs recursively, as we ought toNiko Matsakis-1/+3
2012-01-06fix how we walk functions to match new closure fmtNiko Matsakis-0/+1
2012-01-06Make binding of fns with bounded type parameters workMarijn Haverbeke-0/+26
Interns non-static dicts to heap-allocated equivalents so that they no longer have stack scope. Closes #1436
2012-01-01freebsd supportUser Jyyou-1/+1
2011-12-20rt: Don't check the stack canary on most upcallsBrian Anderson-10/+1
2011-12-20rt: Do fewer stack canary checksBrian Anderson-3/+5
2011-12-20rt: Add a canary value to the end of every stackBrian Anderson-3/+12
Check it on upcall entry and exit, and on stack deletion
2011-12-19rt: Give upcall_new_stack the same convention as other upcallsBrian Anderson-10/+13
2011-12-19rt: Give upcall_del_stack the same convention as other upcallsBrian Anderson-2/+6
2011-12-18rt: Get rid of the rethrow in upcall_failBrian Anderson-7/+14
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-18rt: Create different stack-switching paths for upcalls and shimsBrian Anderson-22/+34
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-17rt: Turn on stack alignment checks for macBrian Anderson-2/+2
2011-12-16rt: Only call check_stack_alignment on linuxBrian Anderson-0/+5
2011-12-16rt: Insert stack alignment checks into upcallsBrian Anderson-0/+10
2011-12-16update to not look at descs[], which is not necessarily validNiko Matsakis-8/+10
if the input is a statically allocated type_desc
2011-12-15massive refactor of how closures workNiko Matsakis-38/+91
2011-12-14export upcall_clone_type_descNiko Matsakis-1/+1
2011-12-14clone type desc into exchange heapNiko Matsakis-1/+4
2011-12-14get basic code generation working, clone type descs for lambda[send]Niko Matsakis-0/+33
2011-12-11rt: Call upcall_fail on the C stackBrian Anderson-3/+1
2011-12-07rt: Reorganize and add documentation for rust_upcall.cppBrian Anderson-170/+163
2011-12-07rt: Run most upcalls on the C stackBrian Anderson-60/+66
2011-12-06rt: Reorganize rust_upcall.cpp a bitBrian Anderson-32/+36
2011-12-06rt: Convert log_type and cmp_type upcalls to shim formBrian Anderson-10/+39
2011-12-06rt: Move upcall_cmp_type/upcall_log_type to rust_upcall.cppBrian Anderson-0/+20
2011-12-06modify upcalls to take structs as argsNiko Matsakis-84/+252
2011-12-06rt: Various tweaks to make __morestack unwinding work on linuxBrian Anderson-0/+9
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-05rt: Make stack unwinding work more correctly with stack growthBrian Anderson-2/+2
2011-12-05test: Test hitting the dynamic linker in the red zoneBrian Anderson-3/+3
2011-12-05rt: Use an out pointer for rust_new_stackBrian Anderson-9/+21
upcall_call_shim_on_c_stack does not handle return values
2011-12-05test: Add more tests for stack growthBrian Anderson-3/+11