about summary refs log tree commit diff
path: root/src/rt/rust_task.cpp
AgeCommit message (Collapse)AuthorLines
2012-01-11rt: Add RUST_MAX_STACK env var with 8MB defaultBrian Anderson-13/+26
Closes #1489
2012-01-09add rust_task_is_unwinding predicate and do not kill if already unwindingNiko Matsakis-11/+16
2012-01-09rt: Set Linux red zone to 20K againBrian Anderson-2/+2
With runtime logging on it smashes the stack
2012-01-06fix how we walk functions to match new closure fmtNiko Matsakis-7/+8
2012-01-06rewrite task testsNiko Matsakis-24/+19
2012-01-06simplify task implNiko Matsakis-27/+21
2012-01-06Revert "rt: Reduce mac red zone to 6K"Brian Anderson-2/+2
This reverts commit d499e739a1eb67e887f5756f9dfef17199a6d041.
2012-01-06rt: Reduce mac red zone to 6KBrian Anderson-2/+2
2012-01-06rt: Fail the scheduler immediately on task failure in win32Brian Anderson-0/+2
2012-01-01freebsd supportUser Jyyou-0/+10
2011-12-20Revert "wip"Brian Anderson-12/+0
This reverts commit aeadc6269ef76f4425a49d892ceac7ea311ef5c1.
2011-12-20wipBrian Anderson-0/+12
2011-12-20rt: Remove rust_task::grow. ObsoleteBrian Anderson-10/+0
2011-12-20rt: Don't check the stack canary on most upcallsBrian Anderson-0/+3
2011-12-20Revert "rt: Reduce the mac red zone to 2K"Brian Anderson-2/+2
This reverts commit ba8f369f890f6c7241c616df552f0e2ebf1509c8.
2011-12-20rt: Reduce the mac red zone to 2KBrian Anderson-2/+2
2011-12-20rt: Reduce the linux red zone to 2KBrian Anderson-2/+2
2011-12-20rt: Parenthesize the red zone macrosBrian Anderson-5/+5
2011-12-20rt: Add a canary value to the end of every stackBrian Anderson-1/+27
Check it on upcall entry and exit, and on stack deletion
2011-12-20rt: Run yet more task_start_wrapper cleanup on the C stackBrian Anderson-17/+33
2011-12-19rt: Don't reuse stack segments when they are not big enoughBrian Anderson-2/+3
2011-12-18rt: Get rid of the rethrow in upcall_failBrian Anderson-5/+20
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: Run the cycle collector on the C stackBrian Anderson-1/+3
2011-12-18rt: Give each platform its own red zone definitionBrian Anderson-3/+26
2011-12-18rt: Trim the red zone to 20k on all platformsBrian Anderson-2/+2
2011-12-18rt: Remove a bogus FIXME from ~rust_taskBrian Anderson-3/+1
2011-12-17rt: Get rid of the valgrind guard bytes at the end of the stackBrian Anderson-17/+2
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-17rt: Cache an extra stack segment to avoid bad behavior at stack boundariesBrian Anderson-12/+79
2011-12-17rt: Set the default stack size to 768 bytes. Double on each allocBrian Anderson-7/+38
2011-12-16rt: Fix alignment of new stack segmentsBrian Anderson-4/+2
2011-12-07rt: Fix alignment of stacks generated by __morestackBrian Anderson-1/+0
2011-12-06rt: Put 16 guard bytes at the end of the stackBrian Anderson-2/+15
2011-12-06rt: Rename stk_seg.limit to stk_seg.endBrian Anderson-7/+7
rust_task is using the word limit it two ways, so one has to change.
2011-12-06rt: Various tweaks to make __morestack unwinding work on linuxBrian Anderson-2/+25
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-06Make valgrind usage more consistent and less error prone.Austin Seipp-2/+2
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-05rt: Make stack unwinding work more correctly with stack growthBrian Anderson-0/+3
2011-12-04rt: Update 32-bit __morestack for recent LLVM changesBrian Anderson-4/+11
2011-12-01rt: Move RED_ZONE_SIZE to rust_task.cppBrian Anderson-0/+10
2011-12-01rt: Add FIXME's about future changes to LLVM's __morestack implBrian Anderson-0/+3
2011-12-01rt: Refactor record_sp into task::record_stack_limitBrian Anderson-2/+6
2011-11-30rt: Reorganize stack growth codeBrian Anderson-48/+25
2011-11-30rt: Remove the stack pointer field of stk_segBrian Anderson-12/+2
2011-11-29rt: Delete the entire stack chain on task destructionBrian Anderson-1/+4
Unwinding through __morestack on 64-bit Linux seems to be no big deal, and all we have to do is free the stacks to make unwinding work with split stacks.
2011-11-28rt: Implement part of the 64-bit __morestackBrian Anderson-0/+15
2011-11-22rt: Make __morestack (without unwinding) work on 32-bit linuxBrian Anderson-11/+21
2011-11-18rt: Remove some stack-wasting macros from rust_task::yieldBrian Anderson-4/+0
2011-11-18rt: Remove fail calls from rust_task::yieldBrian Anderson-5/+5
2011-11-18rt: Remove unblock call from rust_task::yieldBrian Anderson-5/+1
2011-11-18rt: Remove a lock from task_start_wrapper that does nothingBrian Anderson-3/+0
2011-11-18rt: Replace two uses of yield with ctx->swapBrian Anderson-3/+2
These uses aren't really doing a full yield. They are just giving up control to the scheduler and will never return.