diff options
| author | Brian Anderson <banderson@mozilla.com> | 2012-02-27 15:42:22 -0800 |
|---|---|---|
| committer | Brian Anderson <banderson@mozilla.com> | 2012-02-27 16:13:51 -0800 |
| commit | 7e9aa6c3c2ae054e32dfcc7c5e4830ce7c4c6921 (patch) | |
| tree | 3e25c31b0deaf0ad38edb6f7b15a7505f0bc57be /src/rt/rust_stack.cpp | |
| parent | b3f77bf92703543793a8073c8319e461e024cb69 (diff) | |
| download | rust-7e9aa6c3c2ae054e32dfcc7c5e4830ce7c4c6921.tar.gz rust-7e9aa6c3c2ae054e32dfcc7c5e4830ce7c4c6921.zip | |
rt: Don't zero new stacks
Diffstat (limited to 'src/rt/rust_stack.cpp')
| -rw-r--r-- | src/rt/rust_stack.cpp | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/src/rt/rust_stack.cpp b/src/rt/rust_stack.cpp index 37acc438672..b5a83832f08 100644 --- a/src/rt/rust_stack.cpp +++ b/src/rt/rust_stack.cpp @@ -41,3 +41,20 @@ void check_stack_canary(stk_seg *stk) { assert(stk->canary == canary_value && "Somebody killed the canary"); } + +stk_seg * +create_stack(memory_region *region, size_t sz) { + size_t total_sz = sizeof(stk_seg) + sz; + stk_seg *stk = (stk_seg *)region->malloc(total_sz, "stack", false); + memset(stk, 0, sizeof(stk_seg)); + stk->end = (uintptr_t) &stk->data[sz]; + add_stack_canary(stk); + register_valgrind_stack(stk); + return stk; +} + +void +destroy_stack(memory_region *region, stk_seg *stk) { + deregister_valgrind_stack(stk); + region->free(stk); +} |
