Commit Graph

803 Commits

Author SHA1 Message Date
Brian Anderson
3b8bfaf534 rt: Use an out pointer for rust_new_stack
upcall_call_shim_on_c_stack does not handle return values
2011-12-05 17:11:35 -08:00
Brian Anderson
98cd96ce96 test: Add more tests for stack growth 2011-12-05 14:44:15 -08:00
Brian Anderson
1720bc2e81 rt: Unwind through __morestack on 32-bit linux 2011-12-05 12:10:55 -08:00
Brian Anderson
52d7dc5e0a rt: Update 32-bit __morestack for recent LLVM changes 2011-12-04 20:40:34 -08:00
Brian Anderson
292663b8ef rt: Implement 32-bit __morestack for mac 2011-12-02 17:44:23 -08:00
Brian Anderson
c254936f32 rt: Fix __morestack prologue on x86_64 mac 2011-12-02 15:32:51 -08:00
Brian Anderson
691b517fb9 rt: Fix 64-bit linux __morestack 2011-12-01 20:56:05 -08:00
Brian Anderson
3e5b314c0b rt: Implement __morestack for 64-bit mac. Doesn't unwind yet 2011-12-01 19:44:14 -08:00
Brian Anderson
8bf3d85b9d rt: Implement record_sp for 64-bit mac 2011-12-01 19:44:13 -08:00
Brian Anderson
1974cf9a81 rt: Move RED_ZONE_SIZE to rust_task.cpp 2011-12-01 15:50:00 -08:00
Brian Anderson
249f017bf2 rt: Add FIXME's about future changes to LLVM's __morestack impl 2011-12-01 15:33:15 -08:00
Brian Anderson
6da1a3fcd6 rt: Refactor record_sp into task::record_stack_limit 2011-12-01 15:26:42 -08:00
Brian Anderson
7476a39e47 stdlib: Implement some preliminary libuv bindings
std::uv is intended to be low-level, exactly mirroring the C API.
Difficult to continue the implementation now without scheduler
improvements.
2011-12-01 10:24:21 -08:00
Brian Anderson
f2de42c39a rt: Reorganize stack growth code 2011-11-30 20:31:33 -08:00
Brian Anderson
dd48a1af58 rt: Remove redundant defs of RUST_DEL_STACK 2011-11-30 20:31:33 -08:00
Brian Anderson
e6ef4d929c rt: Remove the stack pointer field of stk_seg 2011-11-30 20:31:33 -08:00
Brian Anderson
408d4ec0ef rt: Remove upcall_alloc_c_stack/call_c_stack, et. al.
We are using upcall_call_shim_on_c_stack now
2011-11-30 20:31:32 -08:00
Brian Anderson
037ca7f7cb rt: Rewrite 32-bit __morestack to use the shim upcall 2011-11-30 20:31:32 -08:00
Brian Anderson
777c3584b9 rt: Request the correct number of bytes on the C stack 2011-11-29 23:01:19 -08:00
Brian Anderson
06f4cb43f6 rt: Delete the entire stack chain on task destruction
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-29 22:22:49 -08:00
Brian Anderson
72baf70748 rt: Conditionalize out the 32-bit __morestack for everything but Linux
Currently broken everywhere else
2011-11-29 13:52:34 -08:00
Brian Anderson
8cbba79208 rt: Fix the name of the linux macro in x86_64/morestack.S 2011-11-29 13:50:34 -08:00
Brian Anderson
afb8f01741 rt: Fix calculation of stack args location in x86_64/morestack.S 2011-11-29 13:47:54 -08:00
Brian Anderson
9675343dc9 rt: Fix i386/morestack.S for static linking 2011-11-29 13:47:54 -08:00
Brian Anderson
a9967423f8 rt: Make 64-bit __morestack grow and shrink properly 2011-11-28 21:57:52 -08:00
Brian Anderson
5461c61af2 rt: Remove a FIXME frome x86_64/morestack.S 2011-11-28 20:14:12 -08:00
Brian Anderson
ef20afc36c rt: Get 64-bit Linux __morestack allocating new stacks 2011-11-28 18:39:18 -08:00
Brian Anderson
3a80d7b0e3 rt: Set hidden visibility on __morestack
Each crate will have its own copy of this function, which should not be
exported.
2011-11-28 18:01:39 -08:00
Brian Anderson
28745aa07f rt: Rename L$bail to .L$bail in i386/morestack.S 2011-11-28 17:10:00 -08:00
Brian Anderson
e075412a92 build: Stop linking morestack.S to rt
__morestack has to be linked statically. The odd calling convention on x86_64
results in the arguments to __morestack (r10 & r11) being clobbered by the
dynamic linker. gcc links all the __morestack functions statically.
2011-11-28 16:37:29 -08:00
Brian Anderson
cd75c9ce11 rt: Implement part of the 64-bit __morestack 2011-11-28 16:29:52 -08:00
Brian Anderson
020d8f12a0 rt: Implement record_sp for 64-bit linux 2011-11-27 19:00:26 -08:00
Brian Anderson
93e8783496 rt: Make __morestack build on win32 2011-11-22 18:02:13 -08:00
Brian Anderson
0580d4e77a rt: Add x86_64 record_sp stub 2011-11-22 18:02:12 -08:00
Brian Anderson
6bdf347418 rt: Make __morestack (without unwinding) work on 32-bit linux 2011-11-22 18:02:10 -08:00
Niko Matsakis
9fa44a41e6 get pure wrappers approach running 2011-11-18 16:32:19 -08:00
Brian Anderson
d6ab8ebb07 rt: Add more comments to rust_task_sleep 2011-11-18 16:02:48 -08:00
Brian Anderson
9aa67052e1 rt: Remove some stack-wasting macros from rust_task::yield 2011-11-18 15:59:10 -08:00
Brian Anderson
71bcba6815 intrinsics: Remove declaration of port_recv 2011-11-18 15:37:14 -08:00
Brian Anderson
1e58049da2 rt: Remove fail calls from rust_task::yield 2011-11-18 15:36:48 -08:00
Brian Anderson
792068d871 rt: Remove unblock call from rust_task::yield 2011-11-18 14:45:48 -08:00
Brian Anderson
0f339b481a rt: Remove a lock from task_start_wrapper that does nothing 2011-11-18 13:38:20 -08:00
Brian Anderson
3cfcdb4bb2 rt: Replace two uses of yield with ctx->swap
These uses aren't really doing a full yield. They are just giving up control
to the scheduler and will never return.
2011-11-18 13:38:18 -08:00
Brian Anderson
57b43b53f9 rt: Add comments to rust_task::yield 2011-11-18 13:28:12 -08:00
Brian Anderson
d1ef29ab37 rt: rust_task::conclude_failure doesn't need to call unblock 2011-11-18 13:23:27 -08:00
Brian Anderson
3a6320f71b intrinsics: Eliminate recv intrinsic
This intrinsic existed just to get ahold of the return pointer. I replaced it
with a call_with_retptr intrinsic that grabs the return pointer and passes it
to another Rust function, thereby eliminating the need to call C functions on
the Rust stack.
2011-11-18 12:48:54 -08:00
Brian Anderson
93931311ff rt: Add FIXMEs about races in rust_task 2011-11-18 10:32:27 -08:00
Brian Anderson
0dfa1410d3 rt: Remove task::on_wakeup. Unused 2011-11-18 10:32:27 -08:00
Brian Anderson
63d40b8ab6 rt: Remove some unnecessary setting of rust_task::killed
The value of this variable doesn't matter after the task fails.
2011-11-18 10:32:27 -08:00
Brian Anderson
d52888f0ba rt: Remove rust_task::yield. Unused 2011-11-18 10:32:27 -08:00