| 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_);
|
| }
|
| }
|
|
|