diff options
| author | Brian Anderson <banderson@mozilla.com> | 2011-11-16 18:49:19 -0800 |
|---|---|---|
| committer | Brian Anderson <banderson@mozilla.com> | 2011-11-16 18:49:19 -0800 |
| commit | 02cebbb9f1d30fbad2b82ac1599c593b5af95019 (patch) | |
| tree | 160396218b7d7b7502fb7e8b36eeaef52a037a22 /src/rt/rust_task.cpp | |
| parent | 5559e149e492efadd803eb65f34c259a90c595e7 (diff) | |
| download | rust-02cebbb9f1d30fbad2b82ac1599c593b5af95019.tar.gz rust-02cebbb9f1d30fbad2b82ac1599c593b5af95019.zip | |
Revert "rt: More work on morestack"
This reverts commit 68aff2ad6d55a051e9347aa38f945d114f282691.
Diffstat (limited to 'src/rt/rust_task.cpp')
| -rw-r--r-- | src/rt/rust_task.cpp | 29 |
1 files changed, 6 insertions, 23 deletions
diff --git a/src/rt/rust_task.cpp b/src/rt/rust_task.cpp index ae893c93fa0..6d5241ff344 100644 --- a/src/rt/rust_task.cpp +++ b/src/rt/rust_task.cpp @@ -8,14 +8,11 @@ #ifndef __WIN32__ #include <execinfo.h> #endif -#include <iostream> #include <cassert> #include <cstring> #include "globals.h" -#define RED_ZONE_SIZE 128 - // Stack size size_t g_custom_min_stack_size = 0; @@ -37,16 +34,16 @@ new_stk(rust_scheduler *sched, rust_task *task, size_t minsz) size_t min_stk_bytes = get_min_stk_size(sched->min_stack_size); if (minsz < min_stk_bytes) minsz = min_stk_bytes; - size_t sz = sizeof(stk_seg) + minsz + RED_ZONE_SIZE; + size_t sz = sizeof(stk_seg) + minsz; stk_seg *stk = (stk_seg *)task->malloc(sz, "stack"); LOGPTR(task->sched, "new stk", (uintptr_t)stk); memset(stk, 0, sizeof(stk_seg)); stk->next = task->stk; - stk->limit = (uintptr_t) &stk->data[minsz + RED_ZONE_SIZE]; + stk->limit = (uintptr_t) &stk->data[minsz]; LOGPTR(task->sched, "stk limit", stk->limit); stk->valgrind_id = VALGRIND_STACK_REGISTER(&stk->data[0], - &stk->data[minsz + RED_ZONE_SIZE]); + &stk->data[minsz]); task->stk = stk; return stk; } @@ -66,32 +63,18 @@ del_stk(rust_task *task, stk_seg *stk) // Entry points for `__morestack` (see arch/*/morestack.S). extern "C" void * rust_new_stack(size_t stk_sz, void *args_addr, size_t args_sz) { - std::cerr << "*** New stack!\n"; - rust_task *task = rust_scheduler::get_task(); - if (!task) - return NULL; - stk_seg *stk_seg = new_stk(task->sched, task, stk_sz); memcpy(stk_seg->data, args_addr, args_sz); return stk_seg->data; } -extern "C" void +extern "C" void * rust_del_stack() { rust_task *task = rust_scheduler::get_task(); + stk_seg *next_seg = task->stk->next; del_stk(task, task->stk); -} - -extern "C" void * -rust_get_prev_stack() { - rust_task *task = rust_scheduler::get_task(); - return task->stk->next; -} - -extern "C" rust_task * -rust_get_task() { - return rust_scheduler::get_task(); + return next_seg->data; } |
