diff options
| author | Brian Anderson <banderson@mozilla.com> | 2011-11-30 17:54:11 -0800 |
|---|---|---|
| committer | Brian Anderson <banderson@mozilla.com> | 2011-11-30 20:31:33 -0800 |
| commit | f2de42c39ac5e2ff3bc916b4bbff1db91181d9fa (patch) | |
| tree | 249765cf6b484ce6d3575fac9160b07d0632ba15 /src/rt/rust_upcall.cpp | |
| parent | dd48a1af58260eb68d87a08cc6dd1b0a589a0eae (diff) | |
| download | rust-f2de42c39ac5e2ff3bc916b4bbff1db91181d9fa.tar.gz rust-f2de42c39ac5e2ff3bc916b4bbff1db91181d9fa.zip | |
rt: Reorganize stack growth code
Diffstat (limited to 'src/rt/rust_upcall.cpp')
| -rw-r--r-- | src/rt/rust_upcall.cpp | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/src/rt/rust_upcall.cpp b/src/rt/rust_upcall.cpp index 839a9231f45..a8f39cf91da 100644 --- a/src/rt/rust_upcall.cpp +++ b/src/rt/rust_upcall.cpp @@ -219,6 +219,26 @@ upcall_call_shim_on_c_stack(void *args, void *fn_ptr) { sched->c_context.call_shim_on_c_stack(args, fn_ptr); } +struct rust_new_stack2_args { + size_t stk_sz; + void *args_addr; + size_t args_sz; +}; + +// A new stack function suitable for calling through +// upcall_call_shim_on_c_stack +extern "C" CDECL void * +upcall_new_stack(struct rust_new_stack2_args *args) { + rust_task *task = rust_scheduler::get_task(); + return task->new_stack(args->stk_sz, args->args_addr, args->args_sz); +} + +extern "C" CDECL void +upcall_del_stack() { + rust_task *task = rust_scheduler::get_task(); + task->del_stack(); +} + extern "C" _Unwind_Reason_Code __gxx_personality_v0(int version, _Unwind_Action actions, |
