| Index: runtime/vm/intrinsifier_mips.cc
 | 
| ===================================================================
 | 
| --- runtime/vm/intrinsifier_mips.cc	(revision 29964)
 | 
| +++ runtime/vm/intrinsifier_mips.cc	(working copy)
 | 
| @@ -31,8 +31,8 @@
 | 
|    __ lw(T3, Address(SP, kArrayLengthOffset));  // Array length.
 | 
|  
 | 
|    // Check that length is a positive Smi.
 | 
| -  __ andi(CMPRES, T3, Immediate(kSmiTagMask));
 | 
| -  __ bne(CMPRES, ZR, &fall_through);
 | 
| +  __ andi(CMPRES1, T3, Immediate(kSmiTagMask));
 | 
| +  __ bne(CMPRES1, ZR, &fall_through);
 | 
|    __ bltz(T3, &fall_through);
 | 
|  
 | 
|    // Check for maximum allowed length.
 | 
| @@ -56,8 +56,8 @@
 | 
|    __ LoadImmediate(T3, heap->TopAddress());
 | 
|    __ lw(T0, Address(T3, 0));  // Potential new object start.
 | 
|  
 | 
| -  __ AdduDetectOverflow(T1, T0, T2, CMPRES);  // Potential next object start.
 | 
| -  __ bltz(CMPRES, &fall_through);  // CMPRES < 0 on overflow.
 | 
| +  __ AdduDetectOverflow(T1, T0, T2, CMPRES1);  // Potential next object start.
 | 
| +  __ bltz(CMPRES1, &fall_through);  // CMPRES1 < 0 on overflow.
 | 
|  
 | 
|    // Check if the allocation fits into the remaining space.
 | 
|    // T0: potential new object start.
 | 
| @@ -90,8 +90,8 @@
 | 
|  
 | 
|      // Get the class index and insert it into the tags.
 | 
|      // T2: size and bit tags.
 | 
| -    __ LoadImmediate(TMP1, RawObject::ClassIdTag::encode(cls.id()));
 | 
| -    __ or_(T2, T2, TMP1);
 | 
| +    __ LoadImmediate(TMP, RawObject::ClassIdTag::encode(cls.id()));
 | 
| +    __ or_(T2, T2, TMP);
 | 
|      __ sw(T2, FieldAddress(T0, Array::tags_offset()));  // Store tags.
 | 
|    }
 | 
|  
 | 
| @@ -150,8 +150,8 @@
 | 
|  
 | 
|    __ lw(T0, Address(SP, + 0 * kWordSize));  // Index
 | 
|  
 | 
| -  __ andi(CMPRES, T0, Immediate(kSmiTagMask));
 | 
| -  __ bne(CMPRES, ZR, &fall_through);  // Index is not an smi, fall through
 | 
| +  __ andi(CMPRES1, T0, Immediate(kSmiTagMask));
 | 
| +  __ bne(CMPRES1, ZR, &fall_through);  // Index is not an smi, fall through
 | 
|    __ delay_slot()->lw(T1, Address(SP, + 1 * kWordSize));  // Array
 | 
|  
 | 
|    // range check
 | 
| @@ -217,17 +217,17 @@
 | 
|      __ BranchEqual(T0, Type::ZoneHandle(Type::DynamicType()), &checked_ok);
 | 
|  
 | 
|      // Check for int and num.
 | 
| -    __ andi(CMPRES, T2, Immediate(kSmiTagMask));
 | 
| -    __ bne(CMPRES, ZR, &fall_through);  // Non-smi value.
 | 
| +    __ andi(CMPRES1, T2, Immediate(kSmiTagMask));
 | 
| +    __ bne(CMPRES1, ZR, &fall_through);  // Non-smi value.
 | 
|  
 | 
|      __ BranchEqual(T0, Type::ZoneHandle(Type::IntType()), &checked_ok);
 | 
|      __ BranchNotEqual(T0, Type::ZoneHandle(Type::Number()), &fall_through);
 | 
|      __ Bind(&checked_ok);
 | 
|    }
 | 
|    __ lw(T1, Address(SP, 1 * kWordSize));  // Index.
 | 
| -  __ andi(CMPRES, T1, Immediate(kSmiTagMask));
 | 
| +  __ andi(CMPRES1, T1, Immediate(kSmiTagMask));
 | 
|    // Index not Smi.
 | 
| -  __ bne(CMPRES, ZR, &fall_through);
 | 
| +  __ bne(CMPRES1, ZR, &fall_through);
 | 
|  
 | 
|    __ lw(T0, Address(SP, 2 * kWordSize));  // Array.
 | 
|    // Range check.
 | 
| @@ -337,8 +337,8 @@
 | 
|  
 | 
|    __ lw(T0, Address(SP, 0 * kWordSize));  // Index
 | 
|  
 | 
| -  __ andi(CMPRES, T0, Immediate(kSmiTagMask));
 | 
| -  __ bne(CMPRES, ZR, &fall_through);  // Index is not an smi, fall through
 | 
| +  __ andi(CMPRES1, T0, Immediate(kSmiTagMask));
 | 
| +  __ bne(CMPRES1, ZR, &fall_through);  // Index is not an smi, fall through
 | 
|    __ delay_slot()->lw(T1, Address(SP, 1 * kWordSize));  // Array
 | 
|  
 | 
|    // range check
 | 
| @@ -365,8 +365,8 @@
 | 
|    }
 | 
|    Label fall_through;
 | 
|    __ lw(T1, Address(SP, 1 * kWordSize));  // Index.
 | 
| -  __ andi(CMPRES, T1, Immediate(kSmiTagMask));
 | 
| -  __ bne(CMPRES, ZR, &fall_through);  // Non-smi index.
 | 
| +  __ andi(CMPRES1, T1, Immediate(kSmiTagMask));
 | 
| +  __ bne(CMPRES1, ZR, &fall_through);  // Non-smi index.
 | 
|    __ delay_slot()->lw(T0, Address(SP, 2 * kWordSize));  // GrowableArray.
 | 
|    // Range check using _length field.
 | 
|    __ lw(T2, FieldAddress(T0, GrowableObjectArray::length_offset()));
 | 
| @@ -392,8 +392,8 @@
 | 
|  void Intrinsifier::GrowableList_setLength(Assembler* assembler) {
 | 
|    Label fall_through;
 | 
|    __ lw(T1, Address(SP, 0 * kWordSize));  // Length value.
 | 
| -  __ andi(CMPRES, T1, Immediate(kSmiTagMask));
 | 
| -  __ bne(CMPRES, ZR, &fall_through);  // Non-smi length.
 | 
| +  __ andi(CMPRES1, T1, Immediate(kSmiTagMask));
 | 
| +  __ bne(CMPRES1, ZR, &fall_through);  // Non-smi length.
 | 
|    __ delay_slot()->lw(T0, Address(SP, 1 * kWordSize));  // Growable array.
 | 
|    __ Ret();
 | 
|    __ delay_slot()->sw(T1,
 | 
| @@ -411,8 +411,8 @@
 | 
|    Label fall_through;
 | 
|    __ lw(T1, Address(SP, 0 * kWordSize));  // Data.
 | 
|    // Check that data is an ObjectArray.
 | 
| -  __ andi(CMPRES, T1, Immediate(kSmiTagMask));
 | 
| -  __ beq(CMPRES, ZR, &fall_through);  // Data is Smi.
 | 
| +  __ andi(CMPRES1, T1, Immediate(kSmiTagMask));
 | 
| +  __ beq(CMPRES1, ZR, &fall_through);  // Data is Smi.
 | 
|    __ LoadClassId(CMPRES1, T1);
 | 
|    __ BranchNotEqual(CMPRES1, kArrayCid, &fall_through);
 | 
|    __ lw(T0, Address(SP, 1 * kWordSize));  // Growable array.
 | 
| @@ -464,8 +464,8 @@
 | 
|    __ lw(T2, Address(SP, kArrayLengthStackOffset));  /* Array length. */        \
 | 
|    /* Check that length is a positive Smi. */                                   \
 | 
|    /* T2: requested array length argument. */                                   \
 | 
| -  __ andi(CMPRES, T2, Immediate(kSmiTagMask));                                 \
 | 
| -  __ bne(CMPRES, ZR, &fall_through);                                           \
 | 
| +  __ andi(CMPRES1, T2, Immediate(kSmiTagMask));                                \
 | 
| +  __ bne(CMPRES1, ZR, &fall_through);                                          \
 | 
|    __ BranchSignedLess(T2, 0, &fall_through);                                   \
 | 
|    __ SmiUntag(T2);                                                             \
 | 
|    /* Check for maximum allowed length. */                                      \
 | 
| @@ -482,8 +482,8 @@
 | 
|    __ lw(V0, Address(V0, 0));                                                   \
 | 
|                                                                                 \
 | 
|    /* T2: allocation size. */                                                   \
 | 
| -  __ AdduDetectOverflow(T1, V0, T2, CMPRES);                                   \
 | 
| -  __ bltz(CMPRES, &fall_through);                                              \
 | 
| +  __ AdduDetectOverflow(T1, V0, T2, CMPRES1);                                  \
 | 
| +  __ bltz(CMPRES1, &fall_through);                                             \
 | 
|                                                                                 \
 | 
|    /* Check if the allocation fits into the remaining space. */                 \
 | 
|    /* V0: potential new object start. */                                        \
 | 
| @@ -588,9 +588,9 @@
 | 
|  static void TestBothArgumentsSmis(Assembler* assembler, Label* not_smi) {
 | 
|    __ lw(T0, Address(SP, 0 * kWordSize));
 | 
|    __ lw(T1, Address(SP, 1 * kWordSize));
 | 
| -  __ or_(CMPRES, T0, T1);
 | 
| -  __ andi(CMPRES, CMPRES, Immediate(kSmiTagMask));
 | 
| -  __ bne(CMPRES, ZR, not_smi);
 | 
| +  __ or_(CMPRES1, T0, T1);
 | 
| +  __ andi(CMPRES1, CMPRES1, Immediate(kSmiTagMask));
 | 
| +  __ bne(CMPRES1, ZR, not_smi);
 | 
|    return;
 | 
|  }
 | 
|  
 | 
| @@ -599,8 +599,8 @@
 | 
|    Label fall_through;
 | 
|  
 | 
|    TestBothArgumentsSmis(assembler, &fall_through);  // Checks two Smis.
 | 
| -  __ AdduDetectOverflow(V0, T0, T1, CMPRES);  // Add.
 | 
| -  __ bltz(CMPRES, &fall_through);  // Fall through on overflow.
 | 
| +  __ AdduDetectOverflow(V0, T0, T1, CMPRES1);  // Add.
 | 
| +  __ bltz(CMPRES1, &fall_through);  // Fall through on overflow.
 | 
|    __ Ret();  // Nothing in branch delay slot.
 | 
|    __ Bind(&fall_through);
 | 
|  }
 | 
| @@ -615,8 +615,8 @@
 | 
|    Label fall_through;
 | 
|  
 | 
|    TestBothArgumentsSmis(assembler, &fall_through);
 | 
| -  __ SubuDetectOverflow(V0, T0, T1, CMPRES);  // Subtract.
 | 
| -  __ bltz(CMPRES, &fall_through);  // Fall through on overflow.
 | 
| +  __ SubuDetectOverflow(V0, T0, T1, CMPRES1);  // Subtract.
 | 
| +  __ bltz(CMPRES1, &fall_through);  // Fall through on overflow.
 | 
|    __ Ret();
 | 
|    __ Bind(&fall_through);
 | 
|  }
 | 
| @@ -626,8 +626,8 @@
 | 
|    Label fall_through;
 | 
|  
 | 
|    TestBothArgumentsSmis(assembler, &fall_through);
 | 
| -  __ SubuDetectOverflow(V0, T1, T0, CMPRES);  // Subtract.
 | 
| -  __ bltz(CMPRES, &fall_through);  // Fall through on overflow.
 | 
| +  __ SubuDetectOverflow(V0, T1, T0, CMPRES1);  // Subtract.
 | 
| +  __ bltz(CMPRES1, &fall_through);  // Fall through on overflow.
 | 
|    __ Ret();  // Nothing in branch delay slot.
 | 
|    __ Bind(&fall_through);
 | 
|  }
 | 
| @@ -706,9 +706,9 @@
 | 
|    // Test arguments for smi.
 | 
|    __ lw(T1, Address(SP, 0 * kWordSize));
 | 
|    __ lw(T0, Address(SP, 1 * kWordSize));
 | 
| -  __ or_(CMPRES, T0, T1);
 | 
| -  __ andi(CMPRES, CMPRES, Immediate(kSmiTagMask));
 | 
| -  __ bne(CMPRES, ZR, &fall_through);
 | 
| +  __ or_(CMPRES1, T0, T1);
 | 
| +  __ andi(CMPRES1, CMPRES1, Immediate(kSmiTagMask));
 | 
| +  __ bne(CMPRES1, ZR, &fall_through);
 | 
|    // T1: Tagged left (dividend).
 | 
|    // T0: Tagged right (divisor).
 | 
|    // Check if modulo by zero -> exception thrown in main function.
 | 
| @@ -759,10 +759,10 @@
 | 
|    Label fall_through;
 | 
|  
 | 
|    __ lw(T0, Address(SP, + 0 * kWordSize));  // Grabs first argument.
 | 
| -  __ andi(CMPRES, T0, Immediate(kSmiTagMask));  // Test for Smi.
 | 
| -  __ bne(CMPRES, ZR, &fall_through);  // Fall through if not a Smi.
 | 
| -  __ SubuDetectOverflow(V0, ZR, T0, CMPRES);
 | 
| -  __ bltz(CMPRES, &fall_through);  // There was overflow.
 | 
| +  __ andi(CMPRES1, T0, Immediate(kSmiTagMask));  // Test for Smi.
 | 
| +  __ bne(CMPRES1, ZR, &fall_through);  // Fall through if not a Smi.
 | 
| +  __ SubuDetectOverflow(V0, ZR, T0, CMPRES1);
 | 
| +  __ bltz(CMPRES1, &fall_through);  // There was overflow.
 | 
|    __ Ret();
 | 
|    __ Bind(&fall_through);
 | 
|  }
 | 
| @@ -869,8 +869,8 @@
 | 
|                             Register reg,
 | 
|                             Label* not_smi_or_mint) {
 | 
|    Label not_smi, done;
 | 
| -  __ andi(CMPRES, reg, Immediate(kSmiTagMask));
 | 
| -  __ bne(CMPRES, ZR, ¬_smi);
 | 
| +  __ andi(CMPRES1, reg, Immediate(kSmiTagMask));
 | 
| +  __ bne(CMPRES1, ZR, ¬_smi);
 | 
|    __ SmiUntag(reg);
 | 
|  
 | 
|    // Sign extend to 64 bit
 | 
| @@ -997,9 +997,9 @@
 | 
|    __ beq(T0, T1, &true_label);
 | 
|  
 | 
|    __ or_(T2, T0, T1);
 | 
| -  __ andi(CMPRES, T2, Immediate(kSmiTagMask));
 | 
| +  __ andi(CMPRES1, T2, Immediate(kSmiTagMask));
 | 
|    // If T0 or T1 is not a smi do Mint checks.
 | 
| -  __ bne(CMPRES, ZR, &check_for_mint);
 | 
| +  __ bne(CMPRES1, ZR, &check_for_mint);
 | 
|  
 | 
|    // Both arguments are smi, '===' is good enough.
 | 
|    __ LoadObject(V0, Bool::False());
 | 
| @@ -1012,8 +1012,8 @@
 | 
|    Label receiver_not_smi;
 | 
|    __ Bind(&check_for_mint);
 | 
|  
 | 
| -  __ andi(CMPRES, T1, Immediate(kSmiTagMask));
 | 
| -  __ bne(CMPRES, ZR, &receiver_not_smi);  // Check receiver.
 | 
| +  __ andi(CMPRES1, T1, Immediate(kSmiTagMask));
 | 
| +  __ bne(CMPRES1, ZR, &receiver_not_smi);  // Check receiver.
 | 
|  
 | 
|    // Left (receiver) is Smi, return false if right is not Double.
 | 
|    // Note that an instance of Mint or Bigint never contains a value that can be
 | 
| @@ -1030,8 +1030,8 @@
 | 
|    __ LoadClassId(CMPRES1, T1);
 | 
|    __ BranchNotEqual(CMPRES1, kMintCid, &fall_through);
 | 
|    // Receiver is Mint, return false if right is Smi.
 | 
| -  __ andi(CMPRES, T0, Immediate(kSmiTagMask));
 | 
| -  __ bne(CMPRES, ZR, &fall_through);
 | 
| +  __ andi(CMPRES1, T0, Immediate(kSmiTagMask));
 | 
| +  __ bne(CMPRES1, ZR, &fall_through);
 | 
|    __ LoadObject(V0, Bool::False());
 | 
|    __ Ret();
 | 
|    // TODO(srdjan): Implement Mint == Mint comparison.
 | 
| @@ -1055,8 +1055,8 @@
 | 
|    __ bltz(T0, &fall_through);
 | 
|  
 | 
|    __ LoadImmediate(T2, 0x1F);
 | 
| -  __ slt(CMPRES, T2, T0);  // CMPRES <- 0x1F < T0 ? 1 : 0
 | 
| -  __ movn(T0, T2, CMPRES);  // T0 <- 0x1F < T0 ? 0x1F : T0
 | 
| +  __ slt(CMPRES1, T2, T0);  // CMPRES1 <- 0x1F < T0 ? 1 : 0
 | 
| +  __ movn(T0, T2, CMPRES1);  // T0 <- 0x1F < T0 ? 0x1F : T0
 | 
|  
 | 
|    __ SmiUntag(T1);
 | 
|    __ srav(V0, T1, T0);
 | 
| @@ -1086,8 +1086,8 @@
 | 
|                                       Label* is_smi,
 | 
|                                       Label* not_double_smi) {
 | 
|    __ lw(T0, Address(SP, 0 * kWordSize));
 | 
| -  __ andi(CMPRES, T0, Immediate(kSmiTagMask));
 | 
| -  __ beq(CMPRES, ZR, is_smi);
 | 
| +  __ andi(CMPRES1, T0, Immediate(kSmiTagMask));
 | 
| +  __ beq(CMPRES1, ZR, is_smi);
 | 
|    __ LoadClassId(CMPRES1, T0);
 | 
|    __ BranchNotEqual(CMPRES1, kDoubleCid, not_double_smi);
 | 
|    // Fall through with Double in T0.
 | 
| @@ -1228,8 +1228,8 @@
 | 
|    Label fall_through;
 | 
|    // Only smis allowed.
 | 
|    __ lw(T0, Address(SP, 0 * kWordSize));
 | 
| -  __ andi(CMPRES, T0, Immediate(kSmiTagMask));
 | 
| -  __ bne(CMPRES, ZR, &fall_through);
 | 
| +  __ andi(CMPRES1, T0, Immediate(kSmiTagMask));
 | 
| +  __ bne(CMPRES1, ZR, &fall_through);
 | 
|  
 | 
|    // Is Smi.
 | 
|    __ SmiUntag(T0);
 | 
| @@ -1255,7 +1255,7 @@
 | 
|    Label fall_through;
 | 
|  
 | 
|    __ lw(T0, Address(SP, 0 * kWordSize));
 | 
| -  __ andi(CMPRES, T0, Immediate(kSmiTagMask));
 | 
| +  __ andi(CMPRES1, T0, Immediate(kSmiTagMask));
 | 
|    __ bne(T0, ZR, &fall_through);
 | 
|  
 | 
|    // Is Smi.
 | 
| @@ -1316,7 +1316,7 @@
 | 
|    // Check for negative zero by looking at the sign bit.
 | 
|    __ mfc1(T0, F1);  // Moves bits 32...63 of D0 to T0.
 | 
|    __ srl(T0, T0, 31);  // Get the sign bit down to bit 0 of T0.
 | 
| -  __ andi(CMPRES, T0, Immediate(1));  // Check if the bit is set.
 | 
| +  __ andi(CMPRES1, T0, Immediate(1));  // Check if the bit is set.
 | 
|    __ bne(T0, ZR, &is_true);  // Sign bit set. True.
 | 
|    __ b(&is_false);
 | 
|  }
 | 
| @@ -1333,8 +1333,8 @@
 | 
|    Label fall_through;
 | 
|    // Check for overflow and that it fits into Smi.
 | 
|    __ LoadImmediate(TMP, 0xC0000000);
 | 
| -  __ subu(CMPRES, V0, TMP);
 | 
| -  __ bltz(CMPRES, &fall_through);
 | 
| +  __ subu(CMPRES1, V0, TMP);
 | 
| +  __ bltz(CMPRES1, &fall_through);
 | 
|    __ Ret();
 | 
|    __ delay_slot()->SmiTag(V0);
 | 
|    __ Bind(&fall_through);
 | 
| @@ -1459,7 +1459,7 @@
 | 
|    __ lw(T0, Address(SP, 1 * kWordSize));  // String.
 | 
|  
 | 
|    // Checks.
 | 
| -  __ andi(CMPRES, T1, Immediate(kSmiTagMask));
 | 
| +  __ andi(CMPRES1, T1, Immediate(kSmiTagMask));
 | 
|    __ bne(T1, ZR, &fall_through);  // Index is not a Smi.
 | 
|    __ lw(T2, FieldAddress(T0, String::length_offset()));  // Range check.
 | 
|    // Runtime throws exception.
 | 
| @@ -1590,8 +1590,8 @@
 | 
|    __ lw(V0, Address(T3, 0));
 | 
|  
 | 
|    // length_reg: allocation size.
 | 
| -  __ AdduDetectOverflow(T1, V0, length_reg, CMPRES);
 | 
| -  __ bltz(CMPRES, failure);  // Fail on overflow.
 | 
| +  __ AdduDetectOverflow(T1, V0, length_reg, CMPRES1);
 | 
| +  __ bltz(CMPRES1, failure);  // Fail on overflow.
 | 
|  
 | 
|    // Check if the allocation fits into the remaining space.
 | 
|    // V0: potential new object start.
 | 
| @@ -1626,8 +1626,8 @@
 | 
|  
 | 
|      // Get the class index and insert it into the tags.
 | 
|      // T2: size and bit tags.
 | 
| -    __ LoadImmediate(TMP1, RawObject::ClassIdTag::encode(cls.id()));
 | 
| -    __ or_(T2, T2, TMP1);
 | 
| +    __ LoadImmediate(TMP, RawObject::ClassIdTag::encode(cls.id()));
 | 
| +    __ or_(T2, T2, TMP);
 | 
|      __ sw(T2, FieldAddress(V0, String::tags_offset()));  // Store tags.
 | 
|    }
 | 
|  
 | 
| @@ -1653,9 +1653,9 @@
 | 
|  
 | 
|    __ lw(T2, Address(SP, kEndIndexOffset));
 | 
|    __ lw(TMP, Address(SP, kStartIndexOffset));
 | 
| -  __ or_(CMPRES, T2, TMP);
 | 
| -  __ andi(CMPRES, CMPRES, Immediate(kSmiTagMask));
 | 
| -  __ bne(CMPRES, ZR, &fall_through);  // 'start', 'end' not Smi.
 | 
| +  __ or_(CMPRES1, T2, TMP);
 | 
| +  __ andi(CMPRES1, CMPRES1, Immediate(kSmiTagMask));
 | 
| +  __ bne(CMPRES1, ZR, &fall_through);  // 'start', 'end' not Smi.
 | 
|  
 | 
|    __ subu(T2, T2, TMP);
 | 
|    TryAllocateOnebyteString(assembler, &ok, &fall_through);
 | 
| @@ -1734,8 +1734,8 @@
 | 
|    __ beq(T0, T1, &is_true);
 | 
|  
 | 
|    // Is other OneByteString?
 | 
| -  __ andi(CMPRES, T1, Immediate(kSmiTagMask));
 | 
| -  __ beq(CMPRES, ZR, &fall_through);  // Other is Smi.
 | 
| +  __ andi(CMPRES1, T1, Immediate(kSmiTagMask));
 | 
| +  __ beq(CMPRES1, ZR, &fall_through);  // Other is Smi.
 | 
|    __ LoadClassId(CMPRES1, T1);  // Class ID check.
 | 
|    __ BranchNotEqual(CMPRES1, string_cid, &fall_through);
 | 
|  
 | 
| 
 |