Index: src/crankshaft/mips/lithium-codegen-mips.cc |
diff --git a/src/crankshaft/mips/lithium-codegen-mips.cc b/src/crankshaft/mips/lithium-codegen-mips.cc |
index 8be7d297d469ef0d2c875048c1e0b1f0abb91b29..ba3fc213ba1b023819642e60430733ad51ed612c 100644 |
--- a/src/crankshaft/mips/lithium-codegen-mips.cc |
+++ b/src/crankshaft/mips/lithium-codegen-mips.cc |
@@ -372,9 +372,21 @@ bool LCodeGen::GenerateJumpTable() { |
} |
// Add the base address to the offset previously loaded in entry_offset. |
- __ Addu(entry_offset, entry_offset, |
- Operand(ExternalReference::ForDeoptEntry(base))); |
- __ Jump(entry_offset); |
+ if (IsMipsArchVariant(kMips32r6)) { |
+ uint32_t lui_offset, jic_offset; |
+ Assembler::UnpackTargetAddressUnsigned( |
+ Operand(ExternalReference::ForDeoptEntry(base)).immediate(), |
+ lui_offset, jic_offset); |
+ masm()->RecordRelocInfo( |
+ RelocInfo::EXTERNAL_REFERENCE, |
+ Operand(ExternalReference::ForDeoptEntry(base)).immediate()); |
+ __ aui(entry_offset, entry_offset, lui_offset); |
+ __ Jump(entry_offset, jic_offset); |
+ } else { |
+ __ Addu(entry_offset, entry_offset, |
+ Operand(ExternalReference::ForDeoptEntry(base))); |
+ __ Jump(entry_offset); |
+ } |
} |
__ RecordComment("]"); |