| Index: runtime/vm/stub_code_ia32.cc
|
| diff --git a/runtime/vm/stub_code_ia32.cc b/runtime/vm/stub_code_ia32.cc
|
| index 33f280392c867923b367e76b3ebb5731da777a25..1e5d28bdb259e05ce87218df7fd3e15d9d54f995 100644
|
| --- a/runtime/vm/stub_code_ia32.cc
|
| +++ b/runtime/vm/stub_code_ia32.cc
|
| @@ -1786,15 +1786,22 @@ void StubCode::GenerateGetStackPointerStub(Assembler* assembler) {
|
| // TOS + 3: frame_pointer
|
| // TOS + 4: exception object
|
| // TOS + 5: stacktrace object
|
| +// TOS + 6: isolate
|
| // No Result.
|
| void StubCode::GenerateJumpToExceptionHandlerStub(Assembler* assembler) {
|
| ASSERT(kExceptionObjectReg == EAX);
|
| ASSERT(kStackTraceObjectReg == EDX);
|
| + __ movl(EDI, Address(ESP, 6 * kWordSize)); // Load target isolate.
|
| __ movl(kStackTraceObjectReg, Address(ESP, 5 * kWordSize));
|
| __ movl(kExceptionObjectReg, Address(ESP, 4 * kWordSize));
|
| __ movl(EBP, Address(ESP, 3 * kWordSize)); // Load target frame_pointer.
|
| __ movl(EBX, Address(ESP, 1 * kWordSize)); // Load target PC into EBX.
|
| __ movl(ESP, Address(ESP, 2 * kWordSize)); // Load target stack_pointer.
|
| + // Set tag.
|
| + __ movl(Address(EDI, Isolate::vm_tag_offset()),
|
| + Immediate(VMTag::kScriptTagId));
|
| + // Clear top exit frame.
|
| + __ movl(Address(EDI, Isolate::top_exit_frame_info_offset()), Immediate(0));
|
| __ jmp(EBX); // Jump to the exception handler code.
|
| }
|
|
|
|
|