Index: src/arm/code-stubs-arm.cc |
diff --git a/src/arm/code-stubs-arm.cc b/src/arm/code-stubs-arm.cc |
index 4e7b248cca41aeec0dbd8a8162638950fd239f5e..06882d68cc4dc8081d3070936bfa40af7b751845 100644 |
--- a/src/arm/code-stubs-arm.cc |
+++ b/src/arm/code-stubs-arm.cc |
@@ -608,14 +608,14 @@ void DoubleToIStub::Generate(MacroAssembler* masm) { |
// Account for saved regs if input is sp. |
if (input_reg.is(sp)) double_offset += 2 * kPointerSize; |
- // Immediate values for this stub fit in instructions, so it's safe to use ip. |
- Register scratch = ip; |
+ Register scratch = GetRegisterThatIsNotOneOf(input_reg, result_reg); |
Register scratch_low = |
GetRegisterThatIsNotOneOf(input_reg, result_reg, scratch); |
Register scratch_high = |
GetRegisterThatIsNotOneOf(input_reg, result_reg, scratch, scratch_low); |
LowDwVfpRegister double_scratch = kScratchDoubleReg; |
+ __ Push(scratch); |
__ Push(scratch_high, scratch_low); |
rmcilroy
2014/01/14 14:23:30
Since Benedikt has fixed the Push/Pop typo, please
Mostyn Bramley-Moore
2014/01/14 14:30:58
Done.
I have verified that this works on master n
|
if (!skip_fastpath()) { |
@@ -700,6 +700,7 @@ void DoubleToIStub::Generate(MacroAssembler* masm) { |
__ bind(&done); |
__ Pop(scratch_high, scratch_low); |
+ __ Pop(scratch); |
__ Ret(); |
} |