diff options
| author | Brian Anderson <banderson@mozilla.com> | 2012-02-10 11:39:29 -0800 |
|---|---|---|
| committer | Brian Anderson <banderson@mozilla.com> | 2012-02-10 12:58:35 -0800 |
| commit | 3af4b2c998b90eed5baaf033f92cf5aae06cfc4b (patch) | |
| tree | 4a273a6a76f78f2366514196e6b26c2eb246a5a1 /src/rt/rust_stack.h | |
| parent | 3406da49d98c93b54c8497310d7a7aeb7e9991b0 (diff) | |
| download | rust-3af4b2c998b90eed5baaf033f92cf5aae06cfc4b.tar.gz rust-3af4b2c998b90eed5baaf033f92cf5aae06cfc4b.zip | |
rt: Call register/deregister_valgrind_stack from the stack con/destructors
Diffstat (limited to 'src/rt/rust_stack.h')
| -rw-r--r-- | src/rt/rust_stack.h | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/src/rt/rust_stack.h b/src/rt/rust_stack.h index 9f7353234d3..f310b044acb 100644 --- a/src/rt/rust_stack.h +++ b/src/rt/rust_stack.h @@ -20,6 +20,12 @@ const uint8_t stack_canary[] = {0xAB, 0xCD, 0xAB, 0xCD, 0xAB, 0xCD, 0xAB, 0xCD}; void +register_valgrind_stack(stk_seg *stk); + +void +deregister_valgrind_stack(stk_seg *stk); + +void add_stack_canary(stk_seg *stk); template <class T> @@ -28,27 +34,23 @@ create_stack(T allocer, size_t sz) { size_t total_sz = sizeof(stk_seg) + sz + sizeof(stack_canary); stk_seg *stk = (stk_seg *)allocer->malloc(total_sz, "stack"); memset(stk, 0, sizeof(stk_seg)); - add_stack_canary(stk); stk->end = (uintptr_t) &stk->data[sz]; + add_stack_canary(stk); + register_valgrind_stack(stk); return stk; } template <class T> void destroy_stack(T allocer, stk_seg *stk) { + deregister_valgrind_stack(stk); allocer->free(stk); } void -register_valgrind_stack(stk_seg *stk); - -void prepare_valgrind_stack(stk_seg *stk); void -deregister_valgrind_stack(stk_seg *stk); - -void check_stack_canary(stk_seg *stk); #endif /* RUST_STACK_H */ |
