From bf67783332ff9f9bdf40da2d9dff860964600420 Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Fri, 14 Mar 2014 22:46:13 -0700 Subject: [PATCH] green: Don't return the red zone in stack_bounds() This is mostly just an implementation detail, and anyone worried about the stack bounds doesn't need to be bothered with the red zone because it's not usable anyway. Closes #12897 --- src/libgreen/task.rs | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/libgreen/task.rs b/src/libgreen/task.rs index c6608f0c9db89..7c29a6496f92d 100644 --- a/src/libgreen/task.rs +++ b/src/libgreen/task.rs @@ -20,14 +20,15 @@ use std::any::Any; use std::cast; -use std::rt::env; +use std::raw; use std::rt::Runtime; +use std::rt::env; use std::rt::local::Local; use std::rt::rtio; +use std::rt::stack; use std::rt::task::{Task, BlockedTask, SendMessage}; use std::task::TaskOpts; use std::unstable::mutex::NativeMutex; -use std::raw; use context::Context; use coroutine::Coroutine; @@ -469,7 +470,9 @@ impl Runtime for GreenTask { let c = self.coroutine.as_ref() .expect("GreenTask.stack_bounds called without a coroutine"); - (c.current_stack_segment.start() as uint, + // Don't return the red zone as part of the usable stack of this task, + // it's essentially an implementation detail. + (c.current_stack_segment.start() as uint + stack::RED_ZONE, c.current_stack_segment.end() as uint) }