Index: src/mips/macro-assembler-mips.h |
diff --git a/src/mips/macro-assembler-mips.h b/src/mips/macro-assembler-mips.h |
index 33064e6e42166af88df4a2aa6b8e8b9ac24840e3..e92eb9ec4ebf95260a631e64bca45b49754a97cc 100644 |
--- a/src/mips/macro-assembler-mips.h |
+++ b/src/mips/macro-assembler-mips.h |
@@ -1778,12 +1778,14 @@ void MacroAssembler::GenerateSwitchTable(Register index, size_t case_count, |
lw(at, MemOperand(at)); |
} else { |
Label here; |
- BlockTrampolinePoolFor(case_count + 6); |
+ BlockTrampolinePoolFor(case_count + 10); |
+ push(ra); |
bal(&here); |
sll(at, index, kPointerSizeLog2); // Branch delay slot. |
bind(&here); |
addu(at, at, ra); |
- lw(at, MemOperand(at, 4 * v8::internal::Assembler::kInstrSize)); |
+ pop(ra); |
+ lw(at, MemOperand(at, 6 * v8::internal::Assembler::kInstrSize)); |
} |
jr(at); |
nop(); // Branch delay slot nop. |