about summary refs log tree commit diff
diff options
context:
space:
mode:
authorBrian Anderson <banderson@mozilla.com>2011-12-01 15:26:42 -0800
committerBrian Anderson <banderson@mozilla.com>2011-12-01 15:26:42 -0800
commit6da1a3fcd6b8996a8fde2dd80a93a3a3008a9659 (patch)
tree1c56984b1720f190fe01d9cb2d1dd89051c61cc8
parentd1fd7d49a773d5b5921a659d9c1222b662b991d5 (diff)
downloadrust-6da1a3fcd6b8996a8fde2dd80a93a3a3008a9659.tar.gz
rust-6da1a3fcd6b8996a8fde2dd80a93a3a3008a9659.zip
rt: Refactor record_sp into task::record_stack_limit
-rw-r--r--src/rt/rust_scheduler.cpp5
-rw-r--r--src/rt/rust_task.cpp8
-rw-r--r--src/rt/rust_task.h1
3 files changed, 8 insertions, 6 deletions
diff --git a/src/rt/rust_scheduler.cpp b/src/rt/rust_scheduler.cpp
index d12f37107a4..42b2e490404 100644
--- a/src/rt/rust_scheduler.cpp
+++ b/src/rt/rust_scheduler.cpp
@@ -367,14 +367,11 @@ rust_scheduler::init_tls() {
     tls_initialized = true;
 }
 
-extern "C" CDECL void
-record_sp(void *limit);
-
 void
 rust_scheduler::place_task_in_tls(rust_task *task) {
     int result = pthread_setspecific(task_key, task);
     assert(!result && "Couldn't place the task in TLS!");
-    record_sp(task->stk->data + RED_ZONE_SIZE);
+    task->record_stack_limit();
 }
 
 rust_task *
diff --git a/src/rt/rust_task.cpp b/src/rt/rust_task.cpp
index d631a68f898..97e22618741 100644
--- a/src/rt/rust_task.cpp
+++ b/src/rt/rust_task.cpp
@@ -576,16 +576,20 @@ rust_task::new_stack(size_t stk_sz, void *args_addr, size_t args_sz) {
     new_sp = align_down(new_sp - (args_sz + sizeof_retaddr));
     new_sp += sizeof_retaddr;
     memcpy(new_sp, args_addr, args_sz);
-    record_sp(stk_seg->data + RED_ZONE_SIZE);
+    record_stack_limit();
     return new_sp;
 }
 
 void
 rust_task::del_stack() {
     del_stk(this, stk);
-    record_sp(stk->data + RED_ZONE_SIZE);
+    record_stack_limit();
 }
 
+void
+rust_task::record_stack_limit() {
+    record_sp(stk->data + RED_ZONE_SIZE);
+}
 //
 // Local Variables:
 // mode: C++
diff --git a/src/rt/rust_task.h b/src/rt/rust_task.h
index aa5cc7d75f8..00a9fc277dc 100644
--- a/src/rt/rust_task.h
+++ b/src/rt/rust_task.h
@@ -199,6 +199,7 @@ rust_task : public kernel_owned<rust_task>, rust_cond
 
     void *new_stack(size_t stk_sz, void *args_addr, size_t args_sz);
     void del_stack();
+    void record_stack_limit();
 };
 
 //