Index: runtime/vm/instructions_mips.cc |
=================================================================== |
--- runtime/vm/instructions_mips.cc (revision 20527) |
+++ runtime/vm/instructions_mips.cc (working copy) |
@@ -60,20 +60,14 @@ |
instr = Instr::At(reinterpret_cast<uword>(&i)); |
if (instr->OpcodeField() == LUI) { |
ASSERT(instr->RtField() == *reg); |
- offset |= (instr->UImmField() << 16); |
+ // Offset is signed, so add the upper 16 bits. |
+ offset += (instr->UImmField() << 16); |
} else { |
ASSERT(instr->OpcodeField() == ORI); |
ASSERT(instr->RtField() == *reg); |
+ ASSERT(offset == 0); |
+ // Offset is 0 here, so just grab the lower offset bits. |
offset |= instr->UImmField(); |
- |
- if (instr->RsField() != ZR) { |
- ASSERT(instr->RsField() == *reg); |
- i = Back(++end); |
- instr = Instr::At(reinterpret_cast<uword>(&i)); |
- ASSERT(instr->OpcodeField() == LUI); |
- ASSERT(instr->RtField() == *reg); |
- offset |= (instr->UImmField() << 16); |
- } |
} |
} |
offset += kHeapObjectTag; |