| Index: src/mips/full-codegen-mips.cc
|
| diff --git a/src/mips/full-codegen-mips.cc b/src/mips/full-codegen-mips.cc
|
| index 6f0cd2a6be64eba63284980c49b8b6bef6dc6de5..225feb46aae55aadcb59bb241c266e669c1ebe4b 100644
|
| --- a/src/mips/full-codegen-mips.cc
|
| +++ b/src/mips/full-codegen-mips.cc
|
| @@ -930,8 +930,8 @@ void FullCodeGenerator::VisitForInStatement(ForInStatement* stmt) {
|
| // check for an enum cache. Leave the map in a2 for the subsequent
|
| // prototype load.
|
| __ lw(a2, FieldMemOperand(a1, HeapObject::kMapOffset));
|
| - __ lw(a3, FieldMemOperand(a2, Map::kInstanceDescriptorsOffset));
|
| - __ Branch(&call_runtime, eq, a3, Operand(empty_descriptor_array_value));
|
| + __ lw(a3, FieldMemOperand(a2, Map::kInstanceDescriptorsOrBitField3Offset));
|
| + __ JumpIfSmi(a3, &call_runtime);
|
|
|
| // Check that there is an enum cache in the non-empty instance
|
| // descriptors (a3). This is the case if the next enumeration
|
| @@ -972,7 +972,7 @@ void FullCodeGenerator::VisitForInStatement(ForInStatement* stmt) {
|
|
|
| // We got a map in register v0. Get the enumeration cache from it.
|
| __ bind(&use_cache);
|
| - __ lw(a1, FieldMemOperand(v0, Map::kInstanceDescriptorsOffset));
|
| + __ LoadInstanceDescriptors(v0, a1);
|
| __ lw(a1, FieldMemOperand(a1, DescriptorArray::kEnumerationIndexOffset));
|
| __ lw(a2, FieldMemOperand(a1, DescriptorArray::kEnumCacheBridgeCacheOffset));
|
|
|
| @@ -2551,7 +2551,7 @@ void FullCodeGenerator::EmitIsStringWrapperSafeForDefaultValueOf(
|
| // Look for valueOf symbol in the descriptor array, and indicate false if
|
| // found. The type is not checked, so if it is a transition it is a false
|
| // negative.
|
| - __ lw(t0, FieldMemOperand(a1, Map::kInstanceDescriptorsOffset));
|
| + __ LoadInstanceDescriptors(a1, t0);
|
| __ lw(a3, FieldMemOperand(t0, FixedArray::kLengthOffset));
|
| // t0: descriptor array
|
| // a3: length of descriptor array
|
| @@ -2866,11 +2866,9 @@ void FullCodeGenerator::EmitRandomHeapNumber(ZoneList<Expression*>* args) {
|
| // 0x41300000 is the top half of 1.0 x 2^20 as a double.
|
| __ li(a1, Operand(0x41300000));
|
| // Move 0x41300000xxxxxxxx (x = random bits in v0) to FPU.
|
| - __ mtc1(a1, f13);
|
| - __ mtc1(v0, f12);
|
| + __ Move(f12, v0, a1);
|
| // Move 0x4130000000000000 to FPU.
|
| - __ mtc1(a1, f15);
|
| - __ mtc1(zero_reg, f14);
|
| + __ Move(f14, zero_reg, a1);
|
| // Subtract and store the result in the heap number.
|
| __ sub_d(f0, f12, f14);
|
| __ sdc1(f0, MemOperand(s0, HeapNumber::kValueOffset - kHeapObjectTag));
|
|
|