Index: src/arm/lithium-codegen-arm.cc |
diff --git a/src/arm/lithium-codegen-arm.cc b/src/arm/lithium-codegen-arm.cc |
index 5cebea62e551ca1e52c423530b40bfedd9674c14..b93986c7e3aec53d6f4cd4ece4c9605b6f2c3686 100644 |
--- a/src/arm/lithium-codegen-arm.cc |
+++ b/src/arm/lithium-codegen-arm.cc |
@@ -926,7 +926,7 @@ void LCodeGen::DoDeferredBinaryOpStub(LTemplateInstruction<1, 2, T>* instr, |
0, |
Safepoint::kNoDeoptimizationIndex); |
// Overwrite the stored value of r0 with the result of the stub. |
- __ StoreToSafepointRegistersAndDoublesSlot(r0); |
+ __ StoreToSafepointRegistersAndDoublesSlot(r0, r0); |
__ PopSafepointRegistersAndDoubles(); |
} |
@@ -1940,7 +1940,7 @@ void LCodeGen::DoDeferredLInstanceOfKnownGlobal(LInstanceOfKnownGlobal* instr, |
__ bind(&before_push_delta); |
__ BlockConstPoolFor(kAdditionalDelta); |
__ mov(temp, Operand(delta * kPointerSize)); |
- __ StoreToSafepointRegisterSlot(temp); |
+ __ StoreToSafepointRegisterSlot(temp, temp); |
__ Call(stub.GetCode(), RelocInfo::CODE_TARGET); |
ASSERT_EQ(kAdditionalDelta, |
masm_->InstructionsGeneratedSince(&before_push_delta)); |
@@ -1948,7 +1948,7 @@ void LCodeGen::DoDeferredLInstanceOfKnownGlobal(LInstanceOfKnownGlobal* instr, |
instr->pointer_map(), 0, Safepoint::kNoDeoptimizationIndex); |
// Put the result value into the result register slot and |
// restore all registers. |
- __ StoreToSafepointRegisterSlot(result); |
+ __ StoreToSafepointRegisterSlot(result, result); |
__ PopSafepointRegisters(); |
} |
@@ -2481,7 +2481,7 @@ void LCodeGen::DoDeferredMathAbsTaggedHeapNumber(LUnaryMathOperation* instr) { |
// Set the pointer to the new heap number in tmp. |
if (!tmp1.is(r0)) __ mov(tmp1, Operand(r0)); |
// Restore input_reg after call to runtime. |
- __ LoadFromSafepointRegisterSlot(input); |
+ __ LoadFromSafepointRegisterSlot(input, input); |
__ ldr(exponent, FieldMemOperand(input, HeapNumber::kExponentOffset)); |
__ bind(&allocated); |
@@ -2492,7 +2492,7 @@ void LCodeGen::DoDeferredMathAbsTaggedHeapNumber(LUnaryMathOperation* instr) { |
__ ldr(tmp2, FieldMemOperand(input, HeapNumber::kMantissaOffset)); |
__ str(tmp2, FieldMemOperand(tmp1, HeapNumber::kMantissaOffset)); |
- __ str(tmp1, masm()->SafepointRegisterSlot(input)); |
+ __ StoreToSafepointRegisterSlot(tmp1, input); |
__ PopSafepointRegisters(); |
__ bind(&done); |
@@ -2923,8 +2923,7 @@ void LCodeGen::DoDeferredStringCharCodeAt(LStringCharCodeAt* instr) { |
__ AbortIfNotSmi(r0); |
} |
__ SmiUntag(r0); |
- MemOperand result_stack_slot = masm()->SafepointRegisterSlot(result); |
- __ str(r0, result_stack_slot); |
+ __ StoreToSafepointRegisterSlot(r0, result); |
__ PopSafepointRegisters(); |
} |
@@ -3005,9 +3004,7 @@ void LCodeGen::DoDeferredNumberTagI(LNumberTagI* instr) { |
// register is stored, as this register is in the pointer map, but contains an |
// integer value. |
__ mov(ip, Operand(0)); |
- int reg_stack_index = __ SafepointRegisterStackIndex(reg.code()); |
- __ str(ip, MemOperand(sp, reg_stack_index * kPointerSize)); |
- |
+ __ StoreToSafepointRegisterSlot(ip, reg); |
__ CallRuntimeSaveDoubles(Runtime::kAllocateHeapNumber); |
RecordSafepointWithRegisters( |
instr->pointer_map(), 0, Safepoint::kNoDeoptimizationIndex); |
@@ -3018,7 +3015,7 @@ void LCodeGen::DoDeferredNumberTagI(LNumberTagI* instr) { |
__ bind(&done); |
__ sub(ip, reg, Operand(kHeapObjectTag)); |
__ vstr(dbl_scratch, ip, HeapNumber::kValueOffset); |
- __ str(reg, MemOperand(sp, reg_stack_index * kPointerSize)); |
+ __ StoreToSafepointRegisterSlot(reg, reg); |
__ PopSafepointRegisters(); |
} |
@@ -3063,8 +3060,7 @@ void LCodeGen::DoDeferredNumberTagD(LNumberTagD* instr) { |
__ CallRuntimeSaveDoubles(Runtime::kAllocateHeapNumber); |
RecordSafepointWithRegisters( |
instr->pointer_map(), 0, Safepoint::kNoDeoptimizationIndex); |
- int reg_stack_index = __ SafepointRegisterStackIndex(reg.code()); |
- __ str(r0, MemOperand(sp, reg_stack_index * kPointerSize)); |
+ __ StoreToSafepointRegisterSlot(r0, reg); |
__ PopSafepointRegisters(); |
} |