diff options
| author | Brian Anderson <banderson@mozilla.com> | 2012-02-08 22:35:05 -0800 |
|---|---|---|
| committer | Brian Anderson <banderson@mozilla.com> | 2012-02-09 19:00:16 -0800 |
| commit | 8fe506bdca714fe2b8b005b1d190091d221c4044 (patch) | |
| tree | ab1287734aa2fdb3bd5696d1debb85f5dd650d93 /src/rt | |
| parent | ea76d3f454c53623fdd957b79a6652c7d1f2dcc8 (diff) | |
| download | rust-8fe506bdca714fe2b8b005b1d190091d221c4044.tar.gz rust-8fe506bdca714fe2b8b005b1d190091d221c4044.zip | |
rt: Move more setup code into create_stack
Diffstat (limited to 'src/rt')
| -rw-r--r-- | src/rt/rust_stack.h | 5 | ||||
| -rw-r--r-- | src/rt/rust_task.cpp | 2 |
2 files changed, 4 insertions, 3 deletions
diff --git a/src/rt/rust_stack.h b/src/rt/rust_stack.h index 34d4dda742d..5431d6ec2ff 100644 --- a/src/rt/rust_stack.h +++ b/src/rt/rust_stack.h @@ -17,7 +17,10 @@ template <class T> stk_seg * create_stack(T allocer, size_t sz) { size_t total_sz = sizeof(stk_seg) + sz; - return (stk_seg *)allocer->malloc(total_sz, "stack"); + stk_seg *stk = (stk_seg *)allocer->malloc(total_sz, "stack"); + memset(stk, 0, sizeof(stk_seg)); + stk->end = (uintptr_t) &stk->data[sz]; + return stk; } template <class T> diff --git a/src/rt/rust_task.cpp b/src/rt/rust_task.cpp index 571766c0c2a..912225fba3f 100644 --- a/src/rt/rust_task.cpp +++ b/src/rt/rust_task.cpp @@ -584,11 +584,9 @@ rust_task::new_stack(size_t requested_sz) { size_t sz = rust_stk_sz + RED_ZONE_SIZE; stk_seg *new_stk = create_stack(this, sz); LOGPTR(thread, "new stk", (uintptr_t)new_stk); - memset(new_stk, 0, sizeof(stk_seg)); add_stack_canary(new_stk); new_stk->prev = NULL; new_stk->next = stk; - new_stk->end = (uintptr_t) &new_stk->data[rust_stk_sz + RED_ZONE_SIZE]; LOGPTR(thread, "stk end", new_stk->end); stk = new_stk; |
