about summary refs log tree commit diff
path: root/src/rt/rust_upcall.cpp
diff options
context:
space:
mode:
authorBrian Anderson <banderson@mozilla.com>2012-02-08 21:42:04 -0800
committerBrian Anderson <banderson@mozilla.com>2012-02-09 19:00:16 -0800
commitea76d3f454c53623fdd957b79a6652c7d1f2dcc8 (patch)
treefc956e53733a79e7e147652895e693d42fef575c /src/rt/rust_upcall.cpp
parent1e2fe4ab8f132e6e84568b050dfaaabdaeae0c43 (diff)
downloadrust-ea76d3f454c53623fdd957b79a6652c7d1f2dcc8.tar.gz
rust-ea76d3f454c53623fdd957b79a6652c7d1f2dcc8.zip
rt: Add rust_task::call_on_c_stack
Diffstat (limited to 'src/rt/rust_upcall.cpp')
-rw-r--r--src/rt/rust_upcall.cpp8
1 files changed, 3 insertions, 5 deletions
diff --git a/src/rt/rust_upcall.cpp b/src/rt/rust_upcall.cpp
index c66b4370713..d12e7311303 100644
--- a/src/rt/rust_upcall.cpp
+++ b/src/rt/rust_upcall.cpp
@@ -47,8 +47,7 @@ inline void
 call_upcall_on_c_stack(void *args, void *fn_ptr) {
     check_stack_alignment();
     rust_task *task = rust_task_thread::get_task();
-    rust_task_thread *thread = task->thread;
-    thread->c_context.call_and_change_stacks(args, fn_ptr);
+    task->call_on_c_stack(args, fn_ptr);
 }
 
 extern "C" void record_sp(void *limit);
@@ -69,11 +68,10 @@ upcall_call_shim_on_c_stack(void *args, void *fn_ptr) {
     // stack.
     record_sp(0);
 
-    rust_task_thread *thread = task->thread;
     try {
-        thread->c_context.call_and_change_stacks(args, fn_ptr);
+        task->call_on_c_stack(args, fn_ptr);
     } catch (...) {
-        A(thread, false, "Native code threw an exception");
+        A(task->thread, false, "Native code threw an exception");
     }
 
     task = rust_task_thread::get_task();