| Index: src/mips/code-stubs-mips.cc
|
| diff --git a/src/mips/code-stubs-mips.cc b/src/mips/code-stubs-mips.cc
|
| index af5f87d47645bf38ea7d26a0707402e44ca50e4b..107b0772c9d0df2403d5df4a2048c534f7061f49 100644
|
| --- a/src/mips/code-stubs-mips.cc
|
| +++ b/src/mips/code-stubs-mips.cc
|
| @@ -546,23 +546,27 @@ void DoubleToIStub::Generate(MacroAssembler* masm) {
|
| GetRegisterThatIsNotOneOf(input_reg, result_reg, scratch);
|
| Register scratch3 =
|
| GetRegisterThatIsNotOneOf(input_reg, result_reg, scratch, scratch2);
|
| - DoubleRegister double_scratch = kLithiumScratchDouble.low();
|
| - DoubleRegister double_input = f12;
|
| + DoubleRegister double_scratch = kLithiumScratchDouble;
|
|
|
| __ Push(scratch, scratch2, scratch3);
|
|
|
| - __ ldc1(double_input, MemOperand(input_reg, double_offset));
|
| -
|
| if (!skip_fastpath()) {
|
| + // Load double input.
|
| + __ ldc1(double_scratch, MemOperand(input_reg, double_offset));
|
| +
|
| // Clear cumulative exception flags and save the FCSR.
|
| __ cfc1(scratch2, FCSR);
|
| __ ctc1(zero_reg, FCSR);
|
| +
|
| // Try a conversion to a signed integer.
|
| - __ trunc_w_d(double_scratch, double_input);
|
| + __ Trunc_w_d(double_scratch, double_scratch);
|
| + // Move the converted value into the result register.
|
| __ mfc1(result_reg, double_scratch);
|
| +
|
| // Retrieve and restore the FCSR.
|
| __ cfc1(scratch, FCSR);
|
| __ ctc1(scratch2, FCSR);
|
| +
|
| // Check for overflow and NaNs.
|
| __ And(
|
| scratch, scratch,
|
| @@ -575,7 +579,9 @@ void DoubleToIStub::Generate(MacroAssembler* masm) {
|
| // Load the double value and perform a manual truncation.
|
| Register input_high = scratch2;
|
| Register input_low = scratch3;
|
| - __ Move(input_low, input_high, double_input);
|
| +
|
| + __ lw(input_low, MemOperand(input_reg, double_offset));
|
| + __ lw(input_high, MemOperand(input_reg, double_offset + kIntSize));
|
|
|
| Label normal_exponent, restore_sign;
|
| // Extract the biased exponent in result.
|
|
|