| 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;
|
|
|