| Index: runtime/vm/isolate.h | 
| diff --git a/runtime/vm/isolate.h b/runtime/vm/isolate.h | 
| index c97a102064ec27056e9e4b35d26502072aa32326..0356d59c2f05076b0cf94ebb5545ca7f1c252081 100644 | 
| --- a/runtime/vm/isolate.h | 
| +++ b/runtime/vm/isolate.h | 
| @@ -240,7 +240,8 @@ class Isolate : public BaseIsolate { | 
| } | 
|  | 
| void SetStackLimit(uword value); | 
| -  void SetStackLimitFromCurrentTOS(uword isolate_stack_top); | 
| +  void SetStackLimitFromStackBase(uword stack_base); | 
| +  void ClearStackLimit(); | 
|  | 
| uword stack_limit_address() const { | 
| return reinterpret_cast<uword>(&stack_limit_); | 
| @@ -256,6 +257,8 @@ class Isolate : public BaseIsolate { | 
| // The true stack limit for this isolate. | 
| uword saved_stack_limit() const { return saved_stack_limit_; } | 
|  | 
| +  uword stack_base() const { return stack_base_; } | 
| + | 
| // Stack overflow flags | 
| enum { | 
| kOsrRequest = 0x1,  // Current stack overflow caused by OSR request. | 
| @@ -274,8 +277,8 @@ class Isolate : public BaseIsolate { | 
| // stack overflow is called. | 
| uword GetAndClearStackOverflowFlags(); | 
|  | 
| -  // Retrieve the stack address bounds. | 
| -  bool GetStackBounds(uword* lower, uword* upper); | 
| +  // Retrieve the stack address bounds for profiler. | 
| +  bool GetProfilerStackBounds(uword* lower, uword* upper) const; | 
|  | 
| static uword GetSpecifiedStackSize(); | 
|  | 
| @@ -649,6 +652,7 @@ class Isolate : public BaseIsolate { | 
| Mutex* mutex_;  // protects stack_limit_ and saved_stack_limit_. | 
| uword stack_limit_; | 
| uword saved_stack_limit_; | 
| +  uword stack_base_; | 
| uword stack_overflow_flags_; | 
| int32_t stack_overflow_count_; | 
| MessageHandler* message_handler_; | 
| @@ -749,13 +753,13 @@ class StartIsolateScope { | 
| if (saved_isolate_ != new_isolate_) { | 
| ASSERT(Isolate::Current() == NULL); | 
| Isolate::SetCurrent(new_isolate_); | 
| -      new_isolate_->SetStackLimitFromCurrentTOS(reinterpret_cast<uword>(this)); | 
| +      new_isolate_->SetStackLimitFromStackBase(reinterpret_cast<uword>(this)); | 
| } | 
| } | 
|  | 
| ~StartIsolateScope() { | 
| if (saved_isolate_ != new_isolate_) { | 
| -      new_isolate_->SetStackLimit(~static_cast<uword>(0)); | 
| +      new_isolate_->ClearStackLimit(); | 
| Isolate::SetCurrent(saved_isolate_); | 
| } | 
| } | 
|  |