diff options
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 |
