Index: src/mips64/macro-assembler-mips64.h |
diff --git a/src/mips64/macro-assembler-mips64.h b/src/mips64/macro-assembler-mips64.h |
index 323e0908b789c321cc82e2758d793b35f4b128b0..37fcdf7228369eb513984d3173fda0a1278a2b4a 100644 |
--- a/src/mips64/macro-assembler-mips64.h |
+++ b/src/mips64/macro-assembler-mips64.h |
@@ -1941,13 +1941,15 @@ void MacroAssembler::GenerateSwitchTable(Register index, size_t case_count, |
ld(at, MemOperand(at)); |
} else { |
Label here; |
- BlockTrampolinePoolFor(static_cast<int>(case_count) * 2 + 7); |
+ BlockTrampolinePoolFor(static_cast<int>(case_count) * 2 + 11); |
Align(8); |
+ push(ra); |
bal(&here); |
dsll(at, index, kPointerSizeLog2); // Branch delay slot. |
bind(&here); |
daddu(at, at, ra); |
- ld(at, MemOperand(at, 4 * v8::internal::Assembler::kInstrSize)); |
+ pop(ra); |
+ ld(at, MemOperand(at, 6 * v8::internal::Assembler::kInstrSize)); |
} |
jr(at); |
nop(); // Branch delay slot nop. |