diff options
| author | Brian Anderson <banderson@mozilla.com> | 2012-02-10 11:37:24 -0800 |
|---|---|---|
| committer | Brian Anderson <banderson@mozilla.com> | 2012-02-10 12:58:35 -0800 |
| commit | 3406da49d98c93b54c8497310d7a7aeb7e9991b0 (patch) | |
| tree | 70acdd2241043d817d35537f5dfd1b4a1a0a5452 | |
| parent | c42492e6aa481a65e4919b5ab26f4b0936556fc0 (diff) | |
| download | rust-3406da49d98c93b54c8497310d7a7aeb7e9991b0.tar.gz rust-3406da49d98c93b54c8497310d7a7aeb7e9991b0.zip | |
rt: Extract prepare_valgrind_stack from register_valgrind_stack
| -rw-r--r-- | src/rt/rust_stack.cpp | 4 | ||||
| -rw-r--r-- | src/rt/rust_stack.h | 3 | ||||
| -rw-r--r-- | src/rt/rust_task.cpp | 2 | ||||
| -rw-r--r-- | src/rt/rust_task_thread.cpp | 1 |
4 files changed, 10 insertions, 0 deletions
diff --git a/src/rt/rust_stack.cpp b/src/rt/rust_stack.cpp index 940f6acf196..84e4215ac67 100644 --- a/src/rt/rust_stack.cpp +++ b/src/rt/rust_stack.cpp @@ -8,6 +8,10 @@ register_valgrind_stack(stk_seg *stk) { stk->valgrind_id = VALGRIND_STACK_REGISTER(&stk->data[0], stk->end); +} + +void +prepare_valgrind_stack(stk_seg *stk) { #ifndef NVALGRIND // Establish that the stack is accessible. This must be done when reusing // old stack segments, since the act of popping the stack previously diff --git a/src/rt/rust_stack.h b/src/rt/rust_stack.h index 8d102cb14aa..9f7353234d3 100644 --- a/src/rt/rust_stack.h +++ b/src/rt/rust_stack.h @@ -43,6 +43,9 @@ void register_valgrind_stack(stk_seg *stk); void +prepare_valgrind_stack(stk_seg *stk); + +void deregister_valgrind_stack(stk_seg *stk); void diff --git a/src/rt/rust_task.cpp b/src/rt/rust_task.cpp index c290e2ade13..1b2effce73f 100644 --- a/src/rt/rust_task.cpp +++ b/src/rt/rust_task.cpp @@ -568,6 +568,7 @@ rust_task::new_stack(size_t requested_sz) { stk = stk->prev; A(thread, stk->prev == NULL, "Bogus stack ptr"); register_valgrind_stack(stk); + prepare_valgrind_stack(stk); return; } else { LOG(this, mem, "existing stack is not big enough"); @@ -599,6 +600,7 @@ rust_task::new_stack(size_t requested_sz) { stk = new_stk; register_valgrind_stack(stk); + prepare_valgrind_stack(stk); total_stack_sz += user_stack_size(new_stk); } diff --git a/src/rt/rust_task_thread.cpp b/src/rt/rust_task_thread.cpp index 73e62dee6e5..e7a69420aa8 100644 --- a/src/rt/rust_task_thread.cpp +++ b/src/rt/rust_task_thread.cpp @@ -373,6 +373,7 @@ rust_task_thread::prepare_c_stack() { if (!cached_c_stack) { cached_c_stack = create_stack(kernel, C_STACK_SIZE); register_valgrind_stack(cached_c_stack); + prepare_valgrind_stack(cached_c_stack); } } |
