| Index: runtime/vm/flow_graph_compiler_mips.cc
|
| ===================================================================
|
| --- runtime/vm/flow_graph_compiler_mips.cc (revision 29964)
|
| +++ runtime/vm/flow_graph_compiler_mips.cc (working copy)
|
| @@ -230,11 +230,11 @@
|
| const bool smi_is_ok = int_type.IsSubtypeOf(type, &malformed_error);
|
| // Malformed type should have been handled at graph construction time.
|
| ASSERT(smi_is_ok || malformed_error.IsNull());
|
| - __ andi(CMPRES, kInstanceReg, Immediate(kSmiTagMask));
|
| + __ andi(CMPRES1, kInstanceReg, Immediate(kSmiTagMask));
|
| if (smi_is_ok) {
|
| - __ beq(CMPRES, ZR, is_instance_lbl);
|
| + __ beq(CMPRES1, ZR, is_instance_lbl);
|
| } else {
|
| - __ beq(CMPRES, ZR, is_not_instance_lbl);
|
| + __ beq(CMPRES1, ZR, is_not_instance_lbl);
|
| }
|
| const AbstractTypeArguments& type_arguments =
|
| AbstractTypeArguments::ZoneHandle(type.arguments());
|
| @@ -428,8 +428,8 @@
|
|
|
| // For Smi check quickly against int and num interfaces.
|
| Label not_smi;
|
| - __ andi(CMPRES, A0, Immediate(kSmiTagMask));
|
| - __ bne(CMPRES, ZR, ¬_smi); // Value is Smi?
|
| + __ andi(CMPRES1, A0, Immediate(kSmiTagMask));
|
| + __ bne(CMPRES1, ZR, ¬_smi); // Value is Smi?
|
| __ BranchEqual(T2, Type::ZoneHandle(Type::IntType()), is_instance_lbl);
|
| __ BranchEqual(T2, Type::ZoneHandle(Type::Number()), is_instance_lbl);
|
|
|
| @@ -456,8 +456,8 @@
|
| if (type.IsType()) {
|
| const Register kInstanceReg = A0;
|
| const Register kTypeArgumentsReg = A1;
|
| - __ andi(CMPRES, kInstanceReg, Immediate(kSmiTagMask));
|
| - __ beq(CMPRES, ZR, is_not_instance_lbl); // Is instance Smi?
|
| + __ andi(CMPRES1, kInstanceReg, Immediate(kSmiTagMask));
|
| + __ beq(CMPRES1, ZR, is_not_instance_lbl); // Is instance Smi?
|
| __ lw(kTypeArgumentsReg, Address(SP, 0)); // Instantiator type args.
|
| // Uninstantiated type class is known at compile time, but the type
|
| // arguments are determined at runtime by the instantiator.
|
| @@ -497,11 +497,11 @@
|
| if (TypeCheckAsClassEquality(type)) {
|
| const intptr_t type_cid = Class::Handle(type.type_class()).id();
|
| const Register kInstanceReg = A0;
|
| - __ andi(CMPRES, kInstanceReg, Immediate(kSmiTagMask));
|
| + __ andi(CMPRES1, kInstanceReg, Immediate(kSmiTagMask));
|
| if (type_cid == kSmiCid) {
|
| - __ beq(CMPRES, ZR, is_instance_lbl);
|
| + __ beq(CMPRES1, ZR, is_instance_lbl);
|
| } else {
|
| - __ beq(CMPRES, ZR, is_not_instance_lbl);
|
| + __ beq(CMPRES1, ZR, is_not_instance_lbl);
|
| __ LoadClassId(T0, kInstanceReg);
|
| __ BranchEqual(T0, type_cid, is_instance_lbl);
|
| }
|
| @@ -672,13 +672,13 @@
|
| // Generate throw new TypeError() if the type is malformed or malbounded.
|
| if (dst_type.IsMalformed() || dst_type.IsMalbounded()) {
|
| __ addiu(SP, SP, Immediate(-4 * kWordSize));
|
| - __ LoadObject(TMP1, Object::ZoneHandle());
|
| - __ sw(TMP1, Address(SP, 3 * kWordSize)); // Make room for the result.
|
| + __ LoadObject(TMP, Object::ZoneHandle());
|
| + __ sw(TMP, Address(SP, 3 * kWordSize)); // Make room for the result.
|
| __ sw(A0, Address(SP, 2 * kWordSize)); // Push the source object.
|
| - __ LoadObject(TMP1, dst_name);
|
| - __ sw(TMP1, Address(SP, 1 * kWordSize)); // Push the destination name.
|
| - __ LoadObject(TMP1, dst_type);
|
| - __ sw(TMP1, Address(SP, 0 * kWordSize)); // Push the destination type.
|
| + __ LoadObject(TMP, dst_name);
|
| + __ sw(TMP, Address(SP, 1 * kWordSize)); // Push the destination name.
|
| + __ LoadObject(TMP, dst_type);
|
| + __ sw(TMP, Address(SP, 0 * kWordSize)); // Push the destination type.
|
|
|
| GenerateRuntimeCall(token_pos,
|
| deopt_id,
|
| @@ -707,15 +707,15 @@
|
| __ lw(A2, Address(SP, 1 * kWordSize));
|
|
|
| __ addiu(SP, SP, Immediate(-7 * kWordSize));
|
| - __ LoadObject(TMP1, Object::ZoneHandle());
|
| - __ sw(TMP1, Address(SP, 6 * kWordSize)); // Make room for the result.
|
| + __ LoadObject(TMP, Object::ZoneHandle());
|
| + __ sw(TMP, Address(SP, 6 * kWordSize)); // Make room for the result.
|
| __ sw(A0, Address(SP, 5 * kWordSize)); // Push the source object.
|
| - __ LoadObject(TMP1, dst_type);
|
| - __ sw(TMP1, Address(SP, 4 * kWordSize)); // Push the type of the destination.
|
| + __ LoadObject(TMP, dst_type);
|
| + __ sw(TMP, Address(SP, 4 * kWordSize)); // Push the type of the destination.
|
| __ sw(A2, Address(SP, 3 * kWordSize)); // Push instantiator.
|
| __ sw(A1, Address(SP, 2 * kWordSize)); // Push type arguments.
|
| - __ LoadObject(TMP1, dst_name);
|
| - __ sw(TMP1, Address(SP, 1 * kWordSize)); // Push the name of the destination.
|
| + __ LoadObject(TMP, dst_name);
|
| + __ sw(TMP, Address(SP, 1 * kWordSize)); // Push the name of the destination.
|
| __ LoadObject(T0, test_cache);
|
| __ sw(T0, Address(SP, 0 * kWordSize));
|
|
|
| @@ -1353,8 +1353,8 @@
|
| Label not_smi, load_cache;
|
| __ TraceSimMsg("MegamorphicInstanceCall");
|
| __ lw(T0, Address(SP, (argument_count - 1) * kWordSize));
|
| - __ andi(CMPRES, T0, Immediate(kSmiTagMask));
|
| - __ bne(CMPRES, ZR, ¬_smi);
|
| + __ andi(CMPRES1, T0, Immediate(kSmiTagMask));
|
| + __ bne(CMPRES1, ZR, ¬_smi);
|
| __ LoadImmediate(T0, Smi::RawValue(kSmiCid));
|
| __ b(&load_cache);
|
|
|
| @@ -1380,8 +1380,8 @@
|
| __ and_(T3, T3, T1);
|
| const intptr_t base = Array::data_offset();
|
| // T3 is smi tagged, but table entries are two words, so LSL 2.
|
| - __ sll(TMP1, T3, 2);
|
| - __ addu(TMP1, T2, TMP1);
|
| + __ sll(TMP, T3, 2);
|
| + __ addu(TMP, T2, TMP);
|
| __ lw(T4, FieldAddress(TMP, base));
|
|
|
| ASSERT(kIllegalCid == 0);
|
| @@ -1489,8 +1489,8 @@
|
| (obj.IsMint() || obj.IsDouble() || obj.IsBigint())) {
|
| __ addiu(SP, SP, Immediate(-2 * kWordSize));
|
| __ sw(reg, Address(SP, 1 * kWordSize));
|
| - __ LoadObject(TMP1, obj);
|
| - __ sw(TMP1, Address(SP, 0 * kWordSize));
|
| + __ LoadObject(TMP, obj);
|
| + __ sw(TMP, Address(SP, 0 * kWordSize));
|
| if (is_optimizing()) {
|
| __ BranchLinkPatchable(
|
| &StubCode::OptimizedIdenticalWithNumberCheckLabel());
|
| @@ -1531,7 +1531,8 @@
|
| Isolate::kNoDeoptId,
|
| token_pos);
|
| __ TraceSimMsg("EqualityRegRegCompare return");
|
| - // Stub returns result in CMPRES. If it is 0, then left and right are equal.
|
| + // Stub returns result in CMPRES1. If it is 0, then left and right are
|
| + // equal.
|
| __ lw(right, Address(SP, 0 * kWordSize));
|
| __ lw(left, Address(SP, 1 * kWordSize));
|
| __ addiu(SP, SP, Immediate(2 * kWordSize));
|
| @@ -1700,7 +1701,7 @@
|
| }
|
| assembler()->mov(CMPRES2, ZR);
|
|
|
| - // EmitBranchOnCondition expects ordering to be described by CMPRES, CMPRES2.
|
| + // EmitBranchOnCondition expects ordering to be described by CMPRES1, CMPRES2.
|
| branch->EmitBranchOnCondition(this, EQ);
|
| }
|
|
|
| @@ -1930,15 +1931,15 @@
|
| void ParallelMoveResolver::MoveMemoryToMemory(const Address& dst,
|
| const Address& src) {
|
| __ TraceSimMsg("ParallelMoveResolver::MoveMemoryToMemory");
|
| - __ lw(TMP1, src);
|
| - __ sw(TMP1, dst);
|
| + __ lw(TMP, src);
|
| + __ sw(TMP, dst);
|
| }
|
|
|
|
|
| void ParallelMoveResolver::StoreObject(const Address& dst, const Object& obj) {
|
| __ TraceSimMsg("ParallelMoveResolver::StoreObject");
|
| - __ LoadObject(TMP1, obj);
|
| - __ sw(TMP1, dst);
|
| + __ LoadObject(TMP, obj);
|
| + __ sw(TMP, dst);
|
| }
|
|
|
|
|
|
|