| Index: runtime/vm/stub_code_mips.cc
 | 
| diff --git a/runtime/vm/stub_code_mips.cc b/runtime/vm/stub_code_mips.cc
 | 
| index 692d91a43aa93e7d96987d32872bba5ad6ca132d..40c8bb8989894536b53a49d0f4ae1c7a25aebaec 100644
 | 
| --- a/runtime/vm/stub_code_mips.cc
 | 
| +++ b/runtime/vm/stub_code_mips.cc
 | 
| @@ -22,8 +22,10 @@
 | 
|  namespace dart {
 | 
|  
 | 
|  DEFINE_FLAG(bool, inline_alloc, true, "Inline allocation of objects.");
 | 
| -DEFINE_FLAG(bool, use_slow_path, false,
 | 
| -    "Set to true for debugging & verifying the slow paths.");
 | 
| +DEFINE_FLAG(bool,
 | 
| +            use_slow_path,
 | 
| +            false,
 | 
| +            "Set to true for debugging & verifying the slow paths.");
 | 
|  DECLARE_FLAG(bool, trace_optimized_ic_calls);
 | 
|  
 | 
|  // Input parameters:
 | 
| @@ -48,7 +50,8 @@ void StubCode::GenerateCallToRuntimeStub(Assembler* assembler) {
 | 
|    __ sw(FP, Address(THR, Thread::top_exit_frame_info_offset()));
 | 
|  
 | 
|  #if defined(DEBUG)
 | 
| -  { Label ok;
 | 
| +  {
 | 
| +    Label ok;
 | 
|      // Check that we are always entering from Dart code.
 | 
|      __ lw(T0, Assembler::VMTagAddress());
 | 
|      __ BranchEqual(T0, Immediate(VMTag::kDartTagId), &ok);
 | 
| @@ -90,7 +93,7 @@ void StubCode::GenerateCallToRuntimeStub(Assembler* assembler) {
 | 
|    __ mov(T9, S5);
 | 
|    __ jalr(T9);
 | 
|  
 | 
| -    ASSERT(retval_offset == 3 * kWordSize);
 | 
| +  ASSERT(retval_offset == 3 * kWordSize);
 | 
|    // Retval is next to 1st argument.
 | 
|    __ delay_slot()->addiu(A3, A2, Immediate(kWordSize));
 | 
|    __ Comment("CallToRuntimeStub return");
 | 
| @@ -146,7 +149,8 @@ void StubCode::GenerateCallNativeCFunctionStub(Assembler* assembler) {
 | 
|    __ sw(FP, Address(THR, Thread::top_exit_frame_info_offset()));
 | 
|  
 | 
|  #if defined(DEBUG)
 | 
| -  { Label ok;
 | 
| +  {
 | 
| +    Label ok;
 | 
|      // Check that we are always entering from Dart code.
 | 
|      __ lw(T0, Assembler::VMTagAddress());
 | 
|      __ BranchEqual(T0, Immediate(VMTag::kDartTagId), &ok);
 | 
| @@ -188,7 +192,7 @@ void StubCode::GenerateCallNativeCFunctionStub(Assembler* assembler) {
 | 
|    __ mov(A0, SP);  // Pass the pointer to the NativeArguments.
 | 
|  
 | 
|  
 | 
| -  __ mov(A1, T5);  // Pass the function entrypoint.
 | 
| +  __ mov(A1, T5);                              // Pass the function entrypoint.
 | 
|    __ ReserveAlignedFrameSpace(2 * kWordSize);  // Just passing A0, A1.
 | 
|  
 | 
|    // Call native wrapper function or redirection via simulator.
 | 
| @@ -228,7 +232,8 @@ void StubCode::GenerateCallBootstrapCFunctionStub(Assembler* assembler) {
 | 
|    __ sw(FP, Address(THR, Thread::top_exit_frame_info_offset()));
 | 
|  
 | 
|  #if defined(DEBUG)
 | 
| -  { Label ok;
 | 
| +  {
 | 
| +    Label ok;
 | 
|      // Check that we are always entering from Dart code.
 | 
|      __ lw(T0, Assembler::VMTagAddress());
 | 
|      __ BranchEqual(T0, Immediate(VMTag::kDartTagId), &ok);
 | 
| @@ -473,8 +478,8 @@ static void GenerateDeoptimizationSequence(Assembler* assembler,
 | 
|    }
 | 
|  
 | 
|    __ mov(A0, SP);  // Pass address of saved registers block.
 | 
| -  bool is_lazy = (kind == kLazyDeoptFromReturn) ||
 | 
| -                 (kind == kLazyDeoptFromThrow);
 | 
| +  bool is_lazy =
 | 
| +      (kind == kLazyDeoptFromReturn) || (kind == kLazyDeoptFromThrow);
 | 
|    __ LoadImmediate(A1, is_lazy ? 1 : 0);
 | 
|    __ ReserveAlignedFrameSpace(1 * kWordSize);
 | 
|    __ CallRuntime(kDeoptimizeCopyFrameRuntimeEntry, 2);
 | 
| @@ -703,7 +708,7 @@ void StubCode::GenerateAllocateArrayStub(Assembler* assembler) {
 | 
|    // Potential new object start.
 | 
|    __ lw(T0, Address(T3, Heap::TopOffset(space)));
 | 
|  
 | 
| -  __ addu(T1, T0, T2);  // Potential next object start.
 | 
| +  __ addu(T1, T0, T2);                        // Potential next object start.
 | 
|    __ BranchUnsignedLess(T1, T0, &slow_case);  // Branch on unsigned overflow.
 | 
|  
 | 
|    // Check if the allocation fits into the remaining space.
 | 
| @@ -729,8 +734,8 @@ void StubCode::GenerateAllocateArrayStub(Assembler* assembler) {
 | 
|      Label overflow, done;
 | 
|      const intptr_t shift = RawObject::kSizeTagPos - kObjectAlignmentLog2;
 | 
|  
 | 
| -    __ BranchUnsignedGreater(
 | 
| -        T2, Immediate(RawObject::SizeTag::kMaxSizeTag), &overflow);
 | 
| +    __ BranchUnsignedGreater(T2, Immediate(RawObject::SizeTag::kMaxSizeTag),
 | 
| +                             &overflow);
 | 
|      __ b(&done);
 | 
|      __ delay_slot()->sll(T2, T2, shift);
 | 
|      __ Bind(&overflow);
 | 
| @@ -747,14 +752,11 @@ void StubCode::GenerateAllocateArrayStub(Assembler* assembler) {
 | 
|    // T0: new object start as a tagged pointer.
 | 
|    // T1: new object end address.
 | 
|    // Store the type argument field.
 | 
| -  __ StoreIntoObjectNoBarrier(T0,
 | 
| -                              FieldAddress(T0, Array::type_arguments_offset()),
 | 
| -                              A0);
 | 
| +  __ StoreIntoObjectNoBarrier(
 | 
| +      T0, FieldAddress(T0, Array::type_arguments_offset()), A0);
 | 
|  
 | 
|    // Set the length field.
 | 
| -  __ StoreIntoObjectNoBarrier(T0,
 | 
| -                              FieldAddress(T0, Array::length_offset()),
 | 
| -                              A1);
 | 
| +  __ StoreIntoObjectNoBarrier(T0, FieldAddress(T0, Array::length_offset()), A1);
 | 
|  
 | 
|    __ LoadObject(T7, Object::null_object());
 | 
|    // Initialize all array elements to raw_null.
 | 
| @@ -822,8 +824,8 @@ void StubCode::GenerateInvokeDartCodeStub(Assembler* assembler) {
 | 
|    // The saved vm tag, top resource, and top exit frame info.
 | 
|    const intptr_t kPreservedSlots = 3;
 | 
|    const intptr_t kPreservedRegSpace =
 | 
| -      kWordSize * (kAbiPreservedCpuRegCount + kAbiPreservedFpuRegCount +
 | 
| -                   kPreservedSlots);
 | 
| +      kWordSize *
 | 
| +      (kAbiPreservedCpuRegCount + kAbiPreservedFpuRegCount + kPreservedSlots);
 | 
|  
 | 
|    __ addiu(SP, SP, Immediate(-kPreservedRegSpace));
 | 
|    for (int i = S0; i <= S7; i++) {
 | 
| @@ -832,12 +834,11 @@ void StubCode::GenerateInvokeDartCodeStub(Assembler* assembler) {
 | 
|      __ sw(r, Address(SP, slot * kWordSize));
 | 
|    }
 | 
|  
 | 
| -  for (intptr_t i = kAbiFirstPreservedFpuReg;
 | 
| -       i <= kAbiLastPreservedFpuReg; i++) {
 | 
| +  for (intptr_t i = kAbiFirstPreservedFpuReg; i <= kAbiLastPreservedFpuReg;
 | 
| +       i++) {
 | 
|      FRegister r = static_cast<FRegister>(i);
 | 
| -    const intptr_t slot =
 | 
| -        kAbiPreservedCpuRegCount + kPreservedSlots + i -
 | 
| -        kAbiFirstPreservedFpuReg;
 | 
| +    const intptr_t slot = kAbiPreservedCpuRegCount + kPreservedSlots + i -
 | 
| +                          kAbiFirstPreservedFpuReg;
 | 
|      __ swc1(r, Address(SP, slot * kWordSize));
 | 
|    }
 | 
|  
 | 
| @@ -928,12 +929,11 @@ void StubCode::GenerateInvokeDartCodeStub(Assembler* assembler) {
 | 
|      __ lw(r, Address(SP, slot * kWordSize));
 | 
|    }
 | 
|  
 | 
| -  for (intptr_t i = kAbiFirstPreservedFpuReg;
 | 
| -       i <= kAbiLastPreservedFpuReg; i++) {
 | 
| +  for (intptr_t i = kAbiFirstPreservedFpuReg; i <= kAbiLastPreservedFpuReg;
 | 
| +       i++) {
 | 
|      FRegister r = static_cast<FRegister>(i);
 | 
| -    const intptr_t slot =
 | 
| -        kAbiPreservedCpuRegCount + kPreservedSlots + i -
 | 
| -        kAbiFirstPreservedFpuReg;
 | 
| +    const intptr_t slot = kAbiPreservedCpuRegCount + kPreservedSlots + i -
 | 
| +                          kAbiFirstPreservedFpuReg;
 | 
|      __ lwc1(r, Address(SP, slot * kWordSize));
 | 
|    }
 | 
|  
 | 
| @@ -960,7 +960,7 @@ void StubCode::GenerateAllocateContextStub(Assembler* assembler) {
 | 
|      __ sll(T0, T1, 2);
 | 
|      __ addu(T2, T2, T0);
 | 
|      ASSERT(kSmiTagShift == 1);
 | 
| -    __ LoadImmediate(T0, ~((kObjectAlignment) - 1));
 | 
| +    __ LoadImmediate(T0, ~((kObjectAlignment)-1));
 | 
|      __ and_(T2, T2, T0);
 | 
|  
 | 
|      NOT_IN_PRODUCT(__ MaybeTraceAllocation(kContextCid, T4, &slow_case));
 | 
| @@ -1004,8 +1004,8 @@ void StubCode::GenerateAllocateContextStub(Assembler* assembler) {
 | 
|      const intptr_t shift = RawObject::kSizeTagPos - kObjectAlignmentLog2;
 | 
|      __ LoadImmediate(TMP, RawObject::SizeTag::kMaxSizeTag);
 | 
|      __ sltu(CMPRES1, TMP, T2);  // CMPRES1 = T2 > TMP ? 1 : 0.
 | 
| -    __ movn(T2, ZR, CMPRES1);  // T2 = CMPRES1 != 0 ? 0 : T2.
 | 
| -    __ sll(TMP, T2, shift);  // TMP = T2 << shift.
 | 
| +    __ movn(T2, ZR, CMPRES1);   // T2 = CMPRES1 != 0 ? 0 : T2.
 | 
| +    __ sll(TMP, T2, shift);     // TMP = T2 << shift.
 | 
|      __ movz(T2, TMP, CMPRES1);  // T2 = CMPRES1 == 0 ? TMP : T2.
 | 
|  
 | 
|      // Get the class index and insert it into the tags.
 | 
| @@ -1053,8 +1053,8 @@ void StubCode::GenerateAllocateContextStub(Assembler* assembler) {
 | 
|    __ sw(TMP, Address(SP, 1 * kWordSize));  // Store null.
 | 
|    __ sw(T1, Address(SP, 0 * kWordSize));
 | 
|    __ CallRuntime(kAllocateContextRuntimeEntry, 1);  // Allocate context.
 | 
| -  __ lw(V0, Address(SP, 1 * kWordSize));  // Get the new context.
 | 
| -  __ addiu(SP, SP, Immediate(2 * kWordSize));  // Pop argument and return.
 | 
| +  __ lw(V0, Address(SP, 1 * kWordSize));            // Get the new context.
 | 
| +  __ addiu(SP, SP, Immediate(2 * kWordSize));       // Pop argument and return.
 | 
|  
 | 
|    // V0: new object
 | 
|    // Restore the frame pointer.
 | 
| @@ -1204,8 +1204,7 @@ void StubCode::GenerateAllocationStubForClass(Assembler* assembler,
 | 
|        // Check if the object contains any non-header fields.
 | 
|        // Small objects are initialized using a consecutive set of writes.
 | 
|        for (intptr_t current_offset = Instance::NextFieldOffset();
 | 
| -           current_offset < instance_size;
 | 
| -           current_offset += kWordSize) {
 | 
| +           current_offset < instance_size; current_offset += kWordSize) {
 | 
|          __ sw(T7, Address(T2, current_offset));
 | 
|        }
 | 
|      } else {
 | 
| @@ -1313,7 +1312,7 @@ void StubCode::GenerateOptimizedUsageCounterIncrement(Assembler* assembler) {
 | 
|      __ addiu(SP, SP, Immediate(-4 * kWordSize));
 | 
|      __ sw(T0, Address(SP, 3 * kWordSize));
 | 
|      __ sw(S5, Address(SP, 2 * kWordSize));
 | 
| -    __ sw(ic_reg, Address(SP, 1 * kWordSize));  // Argument.
 | 
| +    __ sw(ic_reg, Address(SP, 1 * kWordSize));    // Argument.
 | 
|      __ sw(func_reg, Address(SP, 0 * kWordSize));  // Argument.
 | 
|      __ CallRuntime(kTraceICCallRuntimeEntry, 2);
 | 
|      __ lw(S5, Address(SP, 2 * kWordSize));
 | 
| @@ -1361,13 +1360,13 @@ static void EmitFastSmiOp(Assembler* assembler,
 | 
|    __ bne(CMPRES1, ZR, not_smi_or_overflow);
 | 
|    switch (kind) {
 | 
|      case Token::kADD: {
 | 
| -     __ AdduDetectOverflow(V0, T1, T0, CMPRES1);  // Add.
 | 
| -     __ bltz(CMPRES1, not_smi_or_overflow);  // Fall through on overflow.
 | 
| +      __ AdduDetectOverflow(V0, T1, T0, CMPRES1);  // Add.
 | 
| +      __ bltz(CMPRES1, not_smi_or_overflow);       // Fall through on overflow.
 | 
|        break;
 | 
|      }
 | 
|      case Token::kSUB: {
 | 
|        __ SubuDetectOverflow(V0, T1, T0, CMPRES1);  // Subtract.
 | 
| -      __ bltz(CMPRES1, not_smi_or_overflow);  // Fall through on overflow.
 | 
| +      __ bltz(CMPRES1, not_smi_or_overflow);       // Fall through on overflow.
 | 
|        break;
 | 
|      }
 | 
|      case Token::kEQ: {
 | 
| @@ -1380,13 +1379,14 @@ static void EmitFastSmiOp(Assembler* assembler,
 | 
|        __ Bind(&done);
 | 
|        break;
 | 
|      }
 | 
| -    default: UNIMPLEMENTED();
 | 
| +    default:
 | 
| +      UNIMPLEMENTED();
 | 
|    }
 | 
|    // S5: IC data object (preserved).
 | 
|    __ lw(T0, FieldAddress(S5, ICData::ic_data_offset()));
 | 
|    // T0: ic_data_array with check entries: classes and target functions.
 | 
|    __ AddImmediate(T0, Array::data_offset() - kHeapObjectTag);
 | 
| -  // T0: points directly to the first ic data array element.
 | 
| +// T0: points directly to the first ic data array element.
 | 
|  #if defined(DEBUG)
 | 
|    // Check that first entry is for Smi/Smi.
 | 
|    Label error, ok;
 | 
| @@ -1433,7 +1433,8 @@ void StubCode::GenerateNArgsCheckInlineCacheStub(
 | 
|    __ Comment("NArgsCheckInlineCacheStub");
 | 
|    ASSERT(num_args > 0);
 | 
|  #if defined(DEBUG)
 | 
| -  { Label ok;
 | 
| +  {
 | 
| +    Label ok;
 | 
|      // Check that the IC data array has NumArgsTested() == num_args.
 | 
|      // 'NumArgsTested' is stored in the least significant bits of 'state_bits'.
 | 
|      __ lw(T0, FieldAddress(S5, ICData::state_bits_offset()));
 | 
| @@ -1510,7 +1511,7 @@ void StubCode::GenerateNArgsCheckInlineCacheStub(
 | 
|        // Last check, all checks before matched.
 | 
|        Label skip;
 | 
|        __ bne(T3, T4, &skip);
 | 
| -      __ b(&found);  // Break.
 | 
| +      __ b(&found);                  // Break.
 | 
|        __ delay_slot()->mov(RA, T2);  // Restore return address if found.
 | 
|        __ Bind(&skip);
 | 
|      }
 | 
| @@ -1526,7 +1527,7 @@ void StubCode::GenerateNArgsCheckInlineCacheStub(
 | 
|  
 | 
|    const intptr_t entry_size = ICData::TestEntryLengthFor(num_args) * kWordSize;
 | 
|    __ AddImmediate(T0, entry_size);  // Next entry.
 | 
| -  __ lw(T4, Address(T0));  // Next class ID.
 | 
| +  __ lw(T4, Address(T0));           // Next class ID.
 | 
|  
 | 
|    __ Bind(&test);
 | 
|    __ BranchNotEqual(T4, Immediate(Smi::RawValue(kIllegalCid)), &loop);  // Done?
 | 
| @@ -1635,36 +1636,37 @@ void StubCode::GenerateNArgsCheckInlineCacheStub(
 | 
|  //   - 1 target function.
 | 
|  void StubCode::GenerateOneArgCheckInlineCacheStub(Assembler* assembler) {
 | 
|    GenerateUsageCounterIncrement(assembler, T0);
 | 
| -  GenerateNArgsCheckInlineCacheStub(assembler, 1,
 | 
| -      kInlineCacheMissHandlerOneArgRuntimeEntry, Token::kILLEGAL);
 | 
| +  GenerateNArgsCheckInlineCacheStub(
 | 
| +      assembler, 1, kInlineCacheMissHandlerOneArgRuntimeEntry, Token::kILLEGAL);
 | 
|  }
 | 
|  
 | 
|  
 | 
|  void StubCode::GenerateTwoArgsCheckInlineCacheStub(Assembler* assembler) {
 | 
|    GenerateUsageCounterIncrement(assembler, T0);
 | 
|    GenerateNArgsCheckInlineCacheStub(assembler, 2,
 | 
| -      kInlineCacheMissHandlerTwoArgsRuntimeEntry, Token::kILLEGAL);
 | 
| +                                    kInlineCacheMissHandlerTwoArgsRuntimeEntry,
 | 
| +                                    Token::kILLEGAL);
 | 
|  }
 | 
|  
 | 
|  
 | 
|  void StubCode::GenerateSmiAddInlineCacheStub(Assembler* assembler) {
 | 
|    GenerateUsageCounterIncrement(assembler, T0);
 | 
| -  GenerateNArgsCheckInlineCacheStub(assembler, 2,
 | 
| -      kInlineCacheMissHandlerTwoArgsRuntimeEntry, Token::kADD);
 | 
| +  GenerateNArgsCheckInlineCacheStub(
 | 
| +      assembler, 2, kInlineCacheMissHandlerTwoArgsRuntimeEntry, Token::kADD);
 | 
|  }
 | 
|  
 | 
|  
 | 
|  void StubCode::GenerateSmiSubInlineCacheStub(Assembler* assembler) {
 | 
|    GenerateUsageCounterIncrement(assembler, T0);
 | 
| -  GenerateNArgsCheckInlineCacheStub(assembler, 2,
 | 
| -      kInlineCacheMissHandlerTwoArgsRuntimeEntry, Token::kSUB);
 | 
| +  GenerateNArgsCheckInlineCacheStub(
 | 
| +      assembler, 2, kInlineCacheMissHandlerTwoArgsRuntimeEntry, Token::kSUB);
 | 
|  }
 | 
|  
 | 
|  
 | 
|  void StubCode::GenerateSmiEqualInlineCacheStub(Assembler* assembler) {
 | 
|    GenerateUsageCounterIncrement(assembler, T0);
 | 
| -  GenerateNArgsCheckInlineCacheStub(assembler, 2,
 | 
| -      kInlineCacheMissHandlerTwoArgsRuntimeEntry, Token::kEQ);
 | 
| +  GenerateNArgsCheckInlineCacheStub(
 | 
| +      assembler, 2, kInlineCacheMissHandlerTwoArgsRuntimeEntry, Token::kEQ);
 | 
|  }
 | 
|  
 | 
|  
 | 
| @@ -1672,8 +1674,8 @@ void StubCode::GenerateOneArgOptimizedCheckInlineCacheStub(
 | 
|      Assembler* assembler) {
 | 
|    GenerateOptimizedUsageCounterIncrement(assembler);
 | 
|    GenerateNArgsCheckInlineCacheStub(assembler, 1,
 | 
| -      kInlineCacheMissHandlerOneArgRuntimeEntry, Token::kILLEGAL,
 | 
| -      true /* optimized */);
 | 
| +                                    kInlineCacheMissHandlerOneArgRuntimeEntry,
 | 
| +                                    Token::kILLEGAL, true /* optimized */);
 | 
|  }
 | 
|  
 | 
|  
 | 
| @@ -1681,8 +1683,8 @@ void StubCode::GenerateTwoArgsOptimizedCheckInlineCacheStub(
 | 
|      Assembler* assembler) {
 | 
|    GenerateOptimizedUsageCounterIncrement(assembler);
 | 
|    GenerateNArgsCheckInlineCacheStub(assembler, 2,
 | 
| -      kInlineCacheMissHandlerTwoArgsRuntimeEntry, Token::kILLEGAL,
 | 
| -      true /* optimized */);
 | 
| +                                    kInlineCacheMissHandlerTwoArgsRuntimeEntry,
 | 
| +                                    Token::kILLEGAL, true /* optimized */);
 | 
|  }
 | 
|  
 | 
|  
 | 
| @@ -1693,7 +1695,8 @@ void StubCode::GenerateZeroArgsUnoptimizedStaticCallStub(Assembler* assembler) {
 | 
|    GenerateUsageCounterIncrement(assembler, T0);
 | 
|    __ Comment("UnoptimizedStaticCallStub");
 | 
|  #if defined(DEBUG)
 | 
| -  { Label ok;
 | 
| +  {
 | 
| +    Label ok;
 | 
|      // Check that the IC data array has NumArgsTested() == 0.
 | 
|      // 'NumArgsTested' is stored in the least significant bits of 'state_bits'.
 | 
|      __ lw(T0, FieldAddress(S5, ICData::state_bits_offset()));
 | 
| @@ -1733,7 +1736,7 @@ void StubCode::GenerateZeroArgsUnoptimizedStaticCallStub(Assembler* assembler) {
 | 
|    }
 | 
|  
 | 
|    // Load arguments descriptor into S4.
 | 
| -  __ lw(S4,  FieldAddress(S5, ICData::arguments_descriptor_offset()));
 | 
| +  __ lw(S4, FieldAddress(S5, ICData::arguments_descriptor_offset()));
 | 
|  
 | 
|    // Get function and call it, if possible.
 | 
|    __ lw(T0, Address(T0, target_offset));
 | 
| @@ -1768,8 +1771,8 @@ void StubCode::GenerateOneArgUnoptimizedStaticCallStub(Assembler* assembler) {
 | 
|  
 | 
|  void StubCode::GenerateTwoArgsUnoptimizedStaticCallStub(Assembler* assembler) {
 | 
|    GenerateUsageCounterIncrement(assembler, T0);
 | 
| -  GenerateNArgsCheckInlineCacheStub(assembler, 2,
 | 
| -      kStaticCallMissHandlerTwoArgsRuntimeEntry, Token::kILLEGAL);
 | 
| +  GenerateNArgsCheckInlineCacheStub(
 | 
| +      assembler, 2, kStaticCallMissHandlerTwoArgsRuntimeEntry, Token::kILLEGAL);
 | 
|  }
 | 
|  
 | 
|  
 | 
| @@ -1871,10 +1874,10 @@ static void GenerateSubtypeNTestCacheStub(Assembler* assembler, int n) {
 | 
|      // Compute instance type arguments into T1.
 | 
|      Label has_no_type_arguments;
 | 
|      __ LoadObject(T1, Object::null_object());
 | 
| -    __ lw(T2, FieldAddress(T0,
 | 
| -        Class::type_arguments_field_offset_in_words_offset()));
 | 
| -    __ BranchEqual(
 | 
| -        T2, Immediate(Class::kNoTypeArguments), &has_no_type_arguments);
 | 
| +    __ lw(T2, FieldAddress(
 | 
| +                  T0, Class::type_arguments_field_offset_in_words_offset()));
 | 
| +    __ BranchEqual(T2, Immediate(Class::kNoTypeArguments),
 | 
| +                   &has_no_type_arguments);
 | 
|      __ sll(T2, T2, 2);
 | 
|      __ addu(T2, A0, T2);  // T2 <- A0 + T2 * 4
 | 
|      __ lw(T1, FieldAddress(T2, 0));
 | 
| @@ -1916,14 +1919,14 @@ static void GenerateSubtypeNTestCacheStub(Assembler* assembler, int n) {
 | 
|      } else {
 | 
|        __ bne(T3, T1, &next_iteration);
 | 
|        __ lw(T3, Address(T2, kWordSize *
 | 
| -                        SubtypeTestCache::kInstantiatorTypeArguments));
 | 
| +                                SubtypeTestCache::kInstantiatorTypeArguments));
 | 
|        __ beq(T3, A1, &found);
 | 
|      }
 | 
|    }
 | 
|    __ Bind(&next_iteration);
 | 
|    __ b(&loop);
 | 
| -  __ delay_slot()->addiu(T2, T2,
 | 
| -      Immediate(kWordSize * SubtypeTestCache::kTestEntryLength));
 | 
| +  __ delay_slot()->addiu(
 | 
| +      T2, T2, Immediate(kWordSize * SubtypeTestCache::kTestEntryLength));
 | 
|    // Fall through to not found.
 | 
|    __ Bind(¬_found);
 | 
|    __ Ret();
 | 
| @@ -1992,8 +1995,8 @@ void StubCode::GenerateJumpToExceptionHandlerStub(Assembler* assembler) {
 | 
|    __ mov(V0, A3);  // Exception object.
 | 
|    // MIPS ABI reserves stack space for all arguments. The StackTrace object is
 | 
|    // the last of five arguments, so it is first pushed on the stack.
 | 
| -  __ lw(V1, Address(SP, 4 * kWordSize));  // StackTrace object.
 | 
| -  __ mov(FP, A2);  // Frame_pointer.
 | 
| +  __ lw(V1, Address(SP, 4 * kWordSize));   // StackTrace object.
 | 
| +  __ mov(FP, A2);                          // Frame_pointer.
 | 
|    __ lw(THR, Address(SP, 5 * kWordSize));  // Thread.
 | 
|    // Set tag.
 | 
|    __ LoadImmediate(A2, VMTag::kDartTagId);
 | 
| @@ -2003,7 +2006,7 @@ void StubCode::GenerateJumpToExceptionHandlerStub(Assembler* assembler) {
 | 
|    // Restore pool pointer.
 | 
|    __ RestoreCodePointer();
 | 
|    __ LoadPoolPointer();
 | 
| -  __ jr(A0);  // Jump to the exception handler code.
 | 
| +  __ jr(A0);                     // Jump to the exception handler code.
 | 
|    __ delay_slot()->mov(SP, A1);  // Stack pointer.
 | 
|  }
 | 
|  
 | 
| @@ -2021,8 +2024,8 @@ void StubCode::GenerateOptimizeFunctionStub(Assembler* assembler) {
 | 
|    __ sw(T0, Address(SP, 0 * kWordSize));
 | 
|    __ CallRuntime(kOptimizeInvokedFunctionRuntimeEntry, 1);
 | 
|    __ Comment("OptimizeFunctionStub return");
 | 
| -  __ lw(T0, Address(SP, 1 * kWordSize));  // Get Function object
 | 
| -  __ lw(S4, Address(SP, 2 * kWordSize));  // Restore argument descriptor.
 | 
| +  __ lw(T0, Address(SP, 1 * kWordSize));       // Get Function object
 | 
| +  __ lw(S4, Address(SP, 2 * kWordSize));       // Restore argument descriptor.
 | 
|    __ addiu(SP, SP, Immediate(3 * kWordSize));  // Discard argument.
 | 
|  
 | 
|    __ lw(CODE_REG, FieldAddress(T0, Function::code_offset()));
 | 
| 
 |