Index: src/arm/lithium-codegen-arm.cc |
diff --git a/src/arm/lithium-codegen-arm.cc b/src/arm/lithium-codegen-arm.cc |
index 49277757e1af526147ad77c79421c54fff69cea1..4f55f8c61ae8a1f33df8cd8b718d830369674f6d 100644 |
--- a/src/arm/lithium-codegen-arm.cc |
+++ b/src/arm/lithium-codegen-arm.cc |
@@ -3085,7 +3085,7 @@ void LCodeGen::DoLoadNamedField(LLoadNamedField* instr) { |
ASSERT(!instr->hydrogen()->representation().IsDouble()); |
} |
Register temp = instr->hydrogen()->representation().IsDouble() |
- ? ToRegister(instr->temp()) : ToRegister(instr->result()); |
+ ? scratch0() : ToRegister(instr->result()); |
if (instr->hydrogen()->is_in_object()) { |
__ ldr(temp, FieldMemOperand(object, instr->hydrogen()->offset())); |
} else { |
@@ -3102,8 +3102,8 @@ void LCodeGen::DoLoadNamedField(LLoadNamedField* instr) { |
__ vmov(flt_scratch, temp); |
__ vcvt_f64_s32(result, flt_scratch); |
__ b(&done); |
- __ sub(ip, temp, Operand(kHeapObjectTag)); |
- __ vldr(result, ip, HeapNumber::kValueOffset); |
+ __ bind(&load_from_heap_number); |
+ __ vldr(result, FieldMemOperand(temp, HeapNumber::kValueOffset)); |
__ bind(&done); |
} |
} |