about summary refs log tree commit diff
path: root/src/rt/rust_task.cpp
AgeCommit message (Collapse)AuthorLines
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.
2011-11-18rt: Add comments to rust_task::yieldBrian Anderson-0/+1
2011-11-18rt: rust_task::conclude_failure doesn't need to call unblockBrian Anderson-2/+0
2011-11-18rt: Add FIXMEs about races in rust_taskBrian Anderson-1/+8
2011-11-18rt: Remove task::on_wakeup. UnusedBrian Anderson-9/+0
2011-11-18rt: Remove some unnecessary setting of rust_task::killedBrian Anderson-2/+0
The value of this variable doesn't matter after the task fails.
2011-11-18rt: Remove rust_task::yield. UnusedBrian Anderson-5/+0
2011-11-18rt: Add some comments about methods that run on the Rust stackBrian Anderson-0/+2
2011-11-17Re-enable cycle coll. on x86_64, seems to work better now.Niko Matsakis-3/+0
2011-11-17rt: More work on morestackPatrick Walton-6/+23
2011-11-16Revert "rt: More work on morestack"Brian Anderson-23/+6
This reverts commit 68aff2ad6d55a051e9347aa38f945d114f282691.
2011-11-16rt: More work on morestackPatrick Walton-6/+23
2011-11-16rt: Remove an unnecessary check from rust_task::yieldBrian Anderson-3/+1
2011-11-16rt: Remove rust_task::notify_tasks_wating_to_joinBrian Anderson-15/+0
2011-11-16temp. disable cycle coll. on x86_64Niko Matsakis-0/+2
2011-11-14Revert "rt: More work on morestack"Patrick Walton-23/+6
This reverts commit ced0d4f15e11e2c74766d1055146946ded3fba51.
2011-11-14rt: More work on morestackPatrick Walton-6/+23
2011-11-13rt: Perform task notification before killing the parent taskBrian Anderson-18/+24
2011-11-11rt: Take the task lock when dropping port refcountsBrian Anderson-20/+15
Sucks, but otherwise there are races when one task drops the refcount to zero followed by another bumping it again
2011-11-11Fix run-fail/spawnfailBrian Anderson-2/+8
Catch the case where a parent is killed immediately before it terminates normally.
2011-11-11rt: Add locking invariants to rust_taskBrian Anderson-0/+8
2011-11-11rt: Remove rust_chanBrian Anderson-9/+10
2011-11-10rt: Move rust_chan::send to rust_port::sendBrian Anderson-2/+4