| 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) | 
|  |