Index: runtime/vm/stub_code_arm.cc |
diff --git a/runtime/vm/stub_code_arm.cc b/runtime/vm/stub_code_arm.cc |
index 8fbcd4768ba4f17f4b8e3124f159f8651305d64f..c000508a0864e831f773ad3f87f52d9180e01934 100644 |
--- a/runtime/vm/stub_code_arm.cc |
+++ b/runtime/vm/stub_code_arm.cc |
@@ -1825,7 +1825,6 @@ void StubCode::GenerateGetStackPointerStub(Assembler* assembler) { |
// R3: error object. |
// SP + 0: address of stacktrace object. |
// SP + 4: thread. |
-// SP + 8: pool pointer |
// Does not return. |
void StubCode::GenerateJumpToExceptionHandlerStub(Assembler* assembler) { |
ASSERT(kExceptionObjectReg == R0); |
@@ -1835,7 +1834,6 @@ void StubCode::GenerateJumpToExceptionHandlerStub(Assembler* assembler) { |
__ mov(R0, Operand(R3)); // Exception object. |
__ ldr(R1, Address(SP, 0)); // StackTrace object. |
__ ldr(THR, Address(SP, 4)); // Thread. |
- __ ldr(PP, Address(SP, 8)); // Pool pointer. |
__ mov(FP, Operand(R2)); // Frame_pointer. |
__ mov(SP, Operand(IP)); // Set Stack pointer. |
// Set the tag. |
@@ -1844,6 +1842,9 @@ void StubCode::GenerateJumpToExceptionHandlerStub(Assembler* assembler) { |
// Clear top exit frame. |
__ LoadImmediate(R2, 0); |
__ StoreToOffset(kWord, R2, THR, Thread::top_exit_frame_info_offset()); |
+ // Restore the pool pointer. |
+ __ RestoreCodePointer(); |
+ __ LoadPoolPointer(); |
__ bx(LR); // Jump to the exception handler code. |
} |