| Index: src/compiler/mips/code-generator-mips.cc
|
| diff --git a/src/compiler/mips/code-generator-mips.cc b/src/compiler/mips/code-generator-mips.cc
|
| index c85569b1a980029d865998d5154bbaba86d79f22..ba02093ce6737a07aacdeec07dd08691d1fc7094 100644
|
| --- a/src/compiler/mips/code-generator-mips.cc
|
| +++ b/src/compiler/mips/code-generator-mips.cc
|
| @@ -1332,9 +1332,19 @@
|
| case kMipsFloat64InsertHighWord32:
|
| __ FmoveHigh(i.OutputDoubleRegister(), i.InputRegister(1));
|
| break;
|
| - case kMipsFloat64SilenceNaN:
|
| - __ FPUCanonicalizeNaN(i.OutputDoubleRegister(), i.InputDoubleRegister(0));
|
| - break;
|
| + case kMipsFloat64SilenceNaN: {
|
| + FPURegister value = i.InputDoubleRegister(0);
|
| + FPURegister result = i.OutputDoubleRegister();
|
| + Register scratch0 = i.TempRegister(0);
|
| + Label is_nan, not_nan;
|
| + __ BranchF(NULL, &is_nan, eq, value, value);
|
| + __ Branch(¬_nan);
|
| + __ bind(&is_nan);
|
| + __ LoadRoot(scratch0, Heap::kNanValueRootIndex);
|
| + __ ldc1(result, FieldMemOperand(scratch0, HeapNumber::kValueOffset));
|
| + __ bind(¬_nan);
|
| + break;
|
| + }
|
|
|
| // ... more basic instructions ...
|
|
|
|
|