Index: runtime/vm/dart_entry.cc |
diff --git a/runtime/vm/dart_entry.cc b/runtime/vm/dart_entry.cc |
index 6cd7b4f8efa77ad74fc3b15513a2113817f2c3d8..195781cd5044c03bf337b3f468268c5791419107 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,13 +86,15 @@ 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. |
Thread* thread = Thread::Current(); |
Zone* zone = thread->zone(); |
ASSERT(thread->IsMutatorThread()); |
+ ScopedIsolateStackLimits stack_limit(thread, current_sp); |
if (!function.HasCode()) { |
const Error& error = |
Error::Handle(zone, Compiler::CompileFunction(thread, function)); |
@@ -109,7 +110,6 @@ 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); |
SuspendLongJumpScope suspend_long_jump_scope(thread); |
TransitionToGenerated transition(thread); |
#if defined(TARGET_ARCH_DBC) |