Index: runtime/vm/dart_entry.cc |
diff --git a/runtime/vm/dart_entry.cc b/runtime/vm/dart_entry.cc |
index 6cd7b4f8efa77ad74fc3b15513a2113817f2c3d8..28c13c3e6236917f16468a3b728d865c41f89d40 100644 |
--- a/runtime/vm/dart_entry.cc |
+++ b/runtime/vm/dart_entry.cc |
@@ -32,7 +32,7 @@ RawObject* DartEntry::InvokeFunction(const Function& function, |
class ScopedIsolateStackLimits : public ValueObject { |
public: |
- explicit ScopedIsolateStackLimits(Thread* thread) |
+ explicit ScopedIsolateStackLimits(Thread* thread, uword current_sp) |
: thread_(thread), saved_stack_limit_(0) { |
ASSERT(thread != NULL); |
// Set the thread's stack_base based on the current |
@@ -41,7 +41,6 @@ class ScopedIsolateStackLimits : public ValueObject { |
// grows from high to low addresses). |
OSThread* os_thread = thread->os_thread(); |
ASSERT(os_thread != NULL); |
- uword current_sp = Thread::GetCurrentStackPointer(); |
if (current_sp > os_thread->stack_base()) { |
os_thread->set_stack_base(current_sp); |
} |
@@ -87,7 +86,8 @@ class SuspendLongJumpScope : public StackResource { |
RawObject* DartEntry::InvokeFunction(const Function& function, |
const Array& arguments, |
- const Array& arguments_descriptor) { |
+ const Array& arguments_descriptor, |
+ uword current_sp) { |
// Get the entrypoint corresponding to the function specified, this |
// will result in a compilation of the function if it is not already |
// compiled. |
@@ -109,7 +109,7 @@ RawObject* DartEntry::InvokeFunction(const Function& function, |
const Code& code = Code::Handle(zone, function.CurrentCode()); |
ASSERT(!code.IsNull()); |
ASSERT(thread->no_callback_scope_depth() == 0); |
- ScopedIsolateStackLimits stack_limit(thread); |
+ ScopedIsolateStackLimits stack_limit(thread, current_sp); |
siva
2017/01/17 23:24:44
Wondering if this needs to be pushed up to the top
Cutch
2017/01/17 23:29:01
Agreed. Done.
|
SuspendLongJumpScope suspend_long_jump_scope(thread); |
TransitionToGenerated transition(thread); |
#if defined(TARGET_ARCH_DBC) |