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