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