about summary refs log tree commit diff
path: root/src/rt
diff options
context:
space:
mode:
authorBrian Anderson <banderson@mozilla.com>2012-02-08 22:35:05 -0800
committerBrian Anderson <banderson@mozilla.com>2012-02-09 19:00:16 -0800
commit8fe506bdca714fe2b8b005b1d190091d221c4044 (patch)
treeab1287734aa2fdb3bd5696d1debb85f5dd650d93 /src/rt
parentea76d3f454c53623fdd957b79a6652c7d1f2dcc8 (diff)
downloadrust-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.h5
-rw-r--r--src/rt/rust_task.cpp2
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;