From 02cebbb9f1d30fbad2b82ac1599c593b5af95019 Mon Sep 17 00:00:00 2001 From: Brian Anderson Date: Wed, 16 Nov 2011 18:49:19 -0800 Subject: Revert "rt: More work on morestack" This reverts commit 68aff2ad6d55a051e9347aa38f945d114f282691. --- src/rt/rust_task.cpp | 29 ++++++----------------------- 1 file changed, 6 insertions(+), 23 deletions(-) (limited to 'src/rt/rust_task.cpp') 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 #endif -#include #include #include #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; } -- cgit 1.4.1-3-g733a5