Chromium Code Reviews| Index: runtime/vm/stub_code_ia32.cc |
| diff --git a/runtime/vm/stub_code_ia32.cc b/runtime/vm/stub_code_ia32.cc |
| index fc1ef63cfc60f758f2f5e84ea4d14f9b5fd1d635..d7df34721e345215603ad43e2714c2fee21f8eb7 100644 |
| --- a/runtime/vm/stub_code_ia32.cc |
| +++ b/runtime/vm/stub_code_ia32.cc |
| @@ -1753,15 +1753,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(CTX, Address(ESP, 6 * kWordSize)); // Load target isolate. |
|
regis
2014/07/14 20:00:34
You could use EAX instead of CTX.
Cutch
2014/07/14 21:32:07
Can't use EAX because it is the same askExceptionO
|
| __ 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(CTX, Isolate::vm_tag_offset()), |
| + Immediate(VMTag::kScriptTagId)); |
| + // Clear top exit frame. |
| + __ movl(Address(CTX, Isolate::top_exit_frame_info_offset()), Immediate(0)); |
| __ jmp(EBX); // Jump to the exception handler code. |
| } |