Index: src/mips64/lithium-codegen-mips64.cc |
diff --git a/src/mips64/lithium-codegen-mips64.cc b/src/mips64/lithium-codegen-mips64.cc |
index ae2e792f42c17f24d0ac70b8a3f62aca82950137..6746ae8e5dea07ac8a03dcee46cb11a24a453699 100644 |
--- a/src/mips64/lithium-codegen-mips64.cc |
+++ b/src/mips64/lithium-codegen-mips64.cc |
@@ -4473,22 +4473,11 @@ void LCodeGen::DoStoreKeyedFixedDoubleArray(LStoreKeyed* instr) { |
} |
if (instr->NeedsCanonicalization()) { |
- Label is_nan; |
- // Check for NaN. All NaNs must be canonicalized. |
- __ BranchF(NULL, &is_nan, eq, value, value); |
- __ Branch(¬_nan); |
- |
- // Only load canonical NaN if the comparison above set the overflow. |
- __ bind(&is_nan); |
- __ LoadRoot(at, Heap::kNanValueRootIndex); |
- __ ldc1(double_scratch, FieldMemOperand(at, HeapNumber::kValueOffset)); |
+ __ FPUCanonicalizeNaN(double_scratch, value); |
__ sdc1(double_scratch, MemOperand(scratch, 0)); |
- __ Branch(&done); |
+ } else { |
+ __ sdc1(value, MemOperand(scratch, 0)); |
} |
- |
- __ bind(¬_nan); |
- __ sdc1(value, MemOperand(scratch, 0)); |
- __ bind(&done); |
} |