diff options
| author | Brian Anderson <banderson@mozilla.com> | 2011-12-17 16:45:13 -0800 |
|---|---|---|
| committer | Brian Anderson <banderson@mozilla.com> | 2011-12-20 20:15:09 -0800 |
| commit | aeadc6269ef76f4425a49d892ceac7ea311ef5c1 (patch) | |
| tree | e62356f817552b6430f43b6c72964325791418d1 /src/rt/rust_task.cpp | |
| parent | 128621be97d425a1d19e6640c8aee4fb6fca430b (diff) | |
| download | rust-aeadc6269ef76f4425a49d892ceac7ea311ef5c1.tar.gz rust-aeadc6269ef76f4425a49d892ceac7ea311ef5c1.zip | |
wip
Diffstat (limited to 'src/rt/rust_task.cpp')
| -rw-r--r-- | src/rt/rust_task.cpp | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/src/rt/rust_task.cpp b/src/rt/rust_task.cpp index 2e6c41a8e79..89570782942 100644 --- a/src/rt/rust_task.cpp +++ b/src/rt/rust_task.cpp @@ -404,6 +404,9 @@ rust_task::yield(size_t time_in_us, bool *killed) { *killed = true; } + // We're not going to need any extra stack for a while + clear_stack_cache(); + yield_timer.reset_us(time_in_us); // Return to the scheduler. @@ -747,6 +750,15 @@ rust_task::del_stack() { } void +rust_task::clear_stack_cache() { + A(sched, stk != NULL, "Expected to have a stack"); + if (stk->prev != NULL) { + free_stk(this, stk->prev); + stk->prev = NULL; + } +} + +void rust_task::record_stack_limit() { // The function prolog compares the amount of stack needed to the end of // the stack. As an optimization, when the frame size is less than 256 |
