| Index: src/mips/lithium-codegen-mips.cc
|
| diff --git a/src/mips/lithium-codegen-mips.cc b/src/mips/lithium-codegen-mips.cc
|
| index 11aac0b7cd0d045ccdd9c7531ef33b3e8e0317c5..e7f05a66468b37110125f9fc27642d6c502cf1bf 100644
|
| --- a/src/mips/lithium-codegen-mips.cc
|
| +++ b/src/mips/lithium-codegen-mips.cc
|
| @@ -4853,7 +4853,7 @@ void LCodeGen::DoDeferredTaggedToI(LTaggedToI* instr) {
|
| Register scratch1 = scratch0();
|
| Register scratch2 = ToRegister(instr->temp());
|
| DoubleRegister double_scratch = double_scratch0();
|
| - DoubleRegister double_scratch2 = ToDoubleRegister(instr->temp3());
|
| + DoubleRegister double_scratch2 = ToDoubleRegister(instr->temp2());
|
|
|
| ASSERT(!scratch1.is(input_reg) && !scratch1.is(scratch2));
|
| ASSERT(!scratch2.is(input_reg) && !scratch2.is(scratch1));
|
| @@ -4868,11 +4868,6 @@ void LCodeGen::DoDeferredTaggedToI(LTaggedToI* instr) {
|
| // of the if.
|
|
|
| if (instr->truncating()) {
|
| - Register scratch3 = ToRegister(instr->temp2());
|
| - FPURegister single_scratch = double_scratch.low();
|
| - ASSERT(!scratch3.is(input_reg) &&
|
| - !scratch3.is(scratch1) &&
|
| - !scratch3.is(scratch2));
|
| // Performs a truncating conversion of a floating point number as used by
|
| // the JS bitwise operations.
|
| Label heap_number;
|
| @@ -4886,14 +4881,8 @@ void LCodeGen::DoDeferredTaggedToI(LTaggedToI* instr) {
|
| __ Branch(&done);
|
|
|
| __ bind(&heap_number);
|
| - __ ldc1(double_scratch2,
|
| - FieldMemOperand(input_reg, HeapNumber::kValueOffset));
|
| - __ EmitECMATruncate(input_reg,
|
| - double_scratch2,
|
| - single_scratch,
|
| - scratch1,
|
| - scratch2,
|
| - scratch3);
|
| + __ mov(scratch2, input_reg);
|
| + __ TruncateHeapNumberToI(input_reg, scratch2);
|
| } else {
|
| // Deoptimize if we don't have a heap number.
|
| DeoptimizeIf(ne, instr->environment(), scratch1, Operand(at));
|
| @@ -4980,20 +4969,12 @@ void LCodeGen::DoNumberUntagD(LNumberUntagD* instr) {
|
| void LCodeGen::DoDoubleToI(LDoubleToI* instr) {
|
| Register result_reg = ToRegister(instr->result());
|
| Register scratch1 = scratch0();
|
| - Register scratch2 = ToRegister(instr->temp());
|
| DoubleRegister double_input = ToDoubleRegister(instr->value());
|
|
|
| if (instr->truncating()) {
|
| - Register scratch3 = ToRegister(instr->temp2());
|
| - FPURegister single_scratch = double_scratch0().low();
|
| - __ EmitECMATruncate(result_reg,
|
| - double_input,
|
| - single_scratch,
|
| - scratch1,
|
| - scratch2,
|
| - scratch3);
|
| + __ TruncateDoubleToI(result_reg, double_input);
|
| } else {
|
| - Register except_flag = scratch2;
|
| + Register except_flag = LCodeGen::scratch1();
|
|
|
| __ EmitFPUTruncate(kRoundToMinusInf,
|
| result_reg,
|
| @@ -5020,21 +5001,13 @@ void LCodeGen::DoDoubleToI(LDoubleToI* instr) {
|
|
|
| void LCodeGen::DoDoubleToSmi(LDoubleToSmi* instr) {
|
| Register result_reg = ToRegister(instr->result());
|
| - Register scratch1 = scratch0();
|
| - Register scratch2 = ToRegister(instr->temp());
|
| + Register scratch1 = LCodeGen::scratch0();
|
| DoubleRegister double_input = ToDoubleRegister(instr->value());
|
|
|
| if (instr->truncating()) {
|
| - Register scratch3 = ToRegister(instr->temp2());
|
| - FPURegister single_scratch = double_scratch0().low();
|
| - __ EmitECMATruncate(result_reg,
|
| - double_input,
|
| - single_scratch,
|
| - scratch1,
|
| - scratch2,
|
| - scratch3);
|
| + __ TruncateDoubleToI(result_reg, double_input);
|
| } else {
|
| - Register except_flag = scratch2;
|
| + Register except_flag = LCodeGen::scratch1();
|
|
|
| __ EmitFPUTruncate(kRoundToMinusInf,
|
| result_reg,
|
|
|