about summary refs log tree commit diff
path: root/src/rt
AgeCommit message (Collapse)AuthorLines
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-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-18rt: Add lots of documentation to __morestackBrian Anderson-42/+139
2011-12-18Revert "rt: Turn on big stacks again. Unwinding still doesn't always succeed ↵Brian Anderson-1/+1
on mac" This reverts commit 68f4849f0f52bc37fc24a36fb7e14002bdb2cd61.
2011-12-17rt: Turn on big stacks again. Unwinding still doesn't always succeed on macBrian Anderson-1/+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: Use a DWARF CFI scheme that works on mac in __morestackBrian Anderson-24/+6
2011-12-17rt: Turn on stack alignment checks for macBrian Anderson-2/+2
2011-12-17rt: Cache an extra stack segment to avoid bad behavior at stack boundariesBrian Anderson-12/+80
2011-12-17rt: Set the default stack size to 768 bytes. Double on each allocBrian Anderson-11/+39
2011-12-16rt: Make 32-bit morestack compatible with fastccBrian Anderson-9/+18
2011-12-16rt: Fix saved address of unwinding %rsp in __morestackBrian Anderson-1/+1
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-16rt: Fix alignment of the call to upcall_del_stack in __morestackBrian Anderson-2/+7
2011-12-16rt: Fix alignment of new stack segmentsBrian Anderson-4/+2
2011-12-16rt: Only call check_stack_alignment on linuxBrian Anderson-0/+5
2011-12-16rt: Insert stack alignment checks into upcallsBrian Anderson-1/+31
2011-12-16std: file_is_dir -> path_is_dir, add path_existsElly Jones-3/+13
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-48/+101
2011-12-14export upcall_clone_type_descNiko Matsakis-2/+3
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/+35
2011-12-13rt: Add a FIXME to 32-bit __morestack about trashing %eaxBrian Anderson-1/+2
2011-12-13rt: Use %ecx instead of %eax during the second half of __morestackBrian Anderson-3/+5
If Rust code made use of return values then using %eax here would clobber it
2011-12-13rt: Don't clobber fastcc argument registers in __morestackBrian Anderson-12/+15
2011-12-12fix track alloc codeNiko Matsakis-6/+9
2011-12-12rt: Remove some duplicated code from 64-bit __morestackBrian Anderson-12/+0
2011-12-12rt: Make unwinding through __morestack work on macBrian Anderson-3/+1
Had to bump the min stack size in some of the tests from 256 bytes to 1024 bytes. Not sure why yet.
2011-12-12rt: Write CFI instructions that (might) work on mac in __morestackBrian Anderson-0/+14
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-11rt: Make unwinding through __morestack work on macBrian Anderson-18/+6
Had to bump the min stack size in some of the tests from 256 bytes to 1024 bytes. Not sure why yet.
2011-12-11rt: Write CFI instructions that (might) work on mac in __morestackBrian Anderson-11/+35
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-11rt: Call upcall_fail on the C stackBrian Anderson-3/+1
2011-12-11rt: Add DWARF CFI info to asm_call_on_stackBrian Anderson-16/+57
This will allow the unwinder to unwind this function so we can call upcall_fail on the C stack.
2011-12-10build: Use llvm-mc as our assemblerBrian Anderson-4/+8
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-08rt: Make __morestack work on win32Brian Anderson-10/+9
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-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-9/+8
rust_task is using the word limit it two ways, so one has to change.
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-4/+24
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-2/+54
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-11/+5
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-2/+5