Skip to content

Commit

Permalink
libnative should not mess with stack limits in the TIB. Only libgreen…
Browse files Browse the repository at this point in the history
… has a legitimate need to set them.
  • Loading branch information
vadimcn committed Aug 5, 2014
1 parent bf420e5 commit bf76e00
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 3 deletions.
4 changes: 2 additions & 2 deletions src/libgreen/context.rs
Expand Up @@ -105,11 +105,11 @@ impl Context {
// invalid for the current task. Lucky for us `rust_swap_registers`
// is a C function so we don't have to worry about that!
match in_context.stack_bounds {
Some((lo, hi)) => stack::record_stack_bounds(lo, hi),
Some((lo, hi)) => stack::record_stack_bounds_green(lo, hi),
// If we're going back to one of the original contexts or
// something that's possibly not a "normal task", then reset
// the stack limit to 0 to make morestack never fail
None => stack::record_stack_bounds(0, uint::MAX),
None => stack::record_stack_bounds_green(0, uint::MAX),
}
rust_swap_registers(out_regs, in_regs)
}
Expand Down
7 changes: 6 additions & 1 deletion src/librustrt/stack.rs
Expand Up @@ -125,7 +125,7 @@ extern fn stack_exhausted() {
}

#[inline(always)]
pub unsafe fn record_stack_bounds(stack_lo: uint, stack_hi: uint) {
pub unsafe fn record_stack_bounds_green(stack_lo: uint, stack_hi: uint) {
// When the old runtime had segmented stacks, it used a calculation that was
// "limit + RED_ZONE + FUDGE". The red zone was for things like dynamic
// symbol resolution, llvm function calls, etc. In theory this red zone
Expand Down Expand Up @@ -154,6 +154,11 @@ pub unsafe fn record_stack_bounds(stack_lo: uint, stack_hi: uint) {
}
}

#[inline(always)]
pub unsafe fn record_stack_bounds(stack_lo: uint, _stack_hi: uint) {
record_sp_limit(stack_lo + RED_ZONE);
}

/// Records the current limit of the stack as specified by `end`.
///
/// This is stored in an OS-dependent location, likely inside of the thread
Expand Down

0 comments on commit bf76e00

Please sign in to comment.