Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(589)

Unified Diff: runtime/vm/intrinsifier_mips.cc

Issue 17502002: Enables more tests for SIMMIPS. (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 7 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « runtime/vm/intrinsifier_arm.cc ('k') | runtime/vm/simulator_arm.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: runtime/vm/intrinsifier_mips.cc
===================================================================
--- runtime/vm/intrinsifier_mips.cc (revision 24294)
+++ runtime/vm/intrinsifier_mips.cc (working copy)
@@ -204,8 +204,8 @@
// Null value is valid for any type.
__ LoadImmediate(T7, reinterpret_cast<int32_t>(Object::null()));
__ beq(T2, T7, &checked_ok);
- __ delay_slot()->lw(T1, Address(SP, 2 * kWordSize)); // Array.
+ __ lw(T1, Address(SP, 2 * kWordSize)); // Array.
__ lw(T1, FieldAddress(T1, type_args_field_offset));
// T1: Type arguments of array.
@@ -232,8 +232,8 @@
__ andi(CMPRES, T1, Immediate(kSmiTagMask));
// Index not Smi.
__ bne(CMPRES, ZR, &fall_through);
- __ delay_slot()->lw(T0, Address(SP, 2 * kWordSize)); // Array.
+ __ lw(T0, Address(SP, 2 * kWordSize)); // Array.
// Range check.
__ lw(T3, FieldAddress(T0, Array::length_offset())); // Array length.
// Runtime throws exception.
@@ -248,7 +248,7 @@
__ StoreIntoObject(T0,
FieldAddress(T1, Array::data_offset()),
T2);
- // Caller is responsible of preserving the value if necessary.
+ // Caller is responsible for preserving the value if necessary.
__ Ret();
__ Bind(&fall_through);
return false;
@@ -1338,16 +1338,15 @@
bool Intrinsifier::Double_getIsNegative(Assembler* assembler) {
Label is_false, is_true, is_zero;
__ lw(T0, Address(SP, 0 * kWordSize));
- __ lwc1(F0, FieldAddress(T0, Double::value_offset()));
- __ lwc1(F1, FieldAddress(T0, Double::value_offset() + kWordSize));
+ __ LoadDFromOffset(D0, T0, Double::value_offset() - kHeapObjectTag);
__ cund(D0, D0);
__ bc1t(&is_false); // NaN -> false.
+ __ LoadImmediate(D1, 0.0);
__ ceqd(D0, D1);
__ bc1t(&is_zero); // Check for negative zero.
- __ LoadImmediate(D1, 0.0);
__ coled(D1, D0);
__ bc1t(&is_false); // >= 0 -> false.
@@ -1448,24 +1447,25 @@
__ lw(T1, FieldAddress(T0, state_field.Offset())); // Field '_state'.
// Addresses of _state[0] and _state[1].
- const int64_t disp_0 =
- FlowGraphCompiler::DataOffsetFor(kTypedDataUint32ArrayCid);
+ const Address& addr_0 = FieldAddress(T1,
+ FlowGraphCompiler::DataOffsetFor(kTypedDataUint32ArrayCid));
- const int64_t disp_1 =
+ const Address& addr_1 = FieldAddress(T1,
FlowGraphCompiler::ElementSizeFor(kTypedDataUint32ArrayCid) +
- FlowGraphCompiler::DataOffsetFor(kTypedDataUint32ArrayCid);
+ FlowGraphCompiler::DataOffsetFor(kTypedDataUint32ArrayCid));
+
__ LoadImmediate(T0, a_int32_value);
- __ lw(T2, FieldAddress(T1, disp_0));
- __ lw(T3, FieldAddress(T1, disp_1));
+ __ lw(T2, addr_0);
+ __ lw(T3, addr_1);
__ sra(T6, T3, 31); // Sign extend T3 into T6.
__ mtlo(T3);
__ mthi(T6); // HI:LO <- T6:T3
// 64-bit multiply and accumulate into T6:T3.
- __ madd(T0, T2); // HI:LO <- HI:LO + T0 * T3.
+ __ madd(T0, T2); // HI:LO <- HI:LO + T0 * T2.
__ mflo(T3);
__ mfhi(T6);
- __ sw(T3, FieldAddress(T1, disp_0));
- __ sw(T6, FieldAddress(T1, disp_1));
+ __ sw(T3, addr_0);
+ __ sw(T6, addr_1);
__ Ret();
return true;
}
« no previous file with comments | « runtime/vm/intrinsifier_arm.cc ('k') | runtime/vm/simulator_arm.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698