| Index: runtime/vm/stub_code_ia32.cc
|
| ===================================================================
|
| --- runtime/vm/stub_code_ia32.cc (revision 43896)
|
| +++ runtime/vm/stub_code_ia32.cc (working copy)
|
| @@ -713,11 +713,14 @@
|
| __ movl(Address(ESI, Isolate::vm_tag_offset()),
|
| Immediate(VMTag::kDartTagId));
|
|
|
| - // Save the top exit frame info. Use EDX as a temporary register.
|
| + // Save top resource and top exit frame info. Use EDX as a temporary register.
|
| // StackFrameIterator reads the top exit frame info saved in this frame.
|
| + __ movl(EDX, Address(ESI, Isolate::top_resource_offset()));
|
| + __ pushl(EDX);
|
| + __ movl(Address(ESI, Isolate::top_resource_offset()), Immediate(0));
|
| // The constant kExitLinkSlotFromEntryFp must be kept in sync with the
|
| // code below.
|
| - ASSERT(kExitLinkSlotFromEntryFp == -5);
|
| + ASSERT(kExitLinkSlotFromEntryFp == -6);
|
| __ movl(EDX, Address(ESI, Isolate::top_exit_frame_info_offset()));
|
| __ pushl(EDX);
|
| __ movl(Address(ESI, Isolate::top_exit_frame_info_offset()), Immediate(0));
|
| @@ -761,9 +764,11 @@
|
| // Get rid of arguments pushed on the stack.
|
| __ leal(ESP, Address(ESP, EDX, TIMES_2, 0)); // EDX is a Smi.
|
|
|
| - // Restore the saved top exit frame info back into the Isolate structure.
|
| + // Restore the saved top exit frame info and top resource back into the
|
| + // Isolate structure.
|
| __ LoadIsolate(ESI);
|
| __ popl(Address(ESI, Isolate::top_exit_frame_info_offset()));
|
| + __ popl(Address(ESI, Isolate::top_resource_offset()));
|
|
|
| // Restore the current VMTag from the stack.
|
| __ popl(Address(ESI, Isolate::vm_tag_offset()));
|
|
|