Index: src/mips/lithium-codegen-mips.cc |
diff --git a/src/mips/lithium-codegen-mips.cc b/src/mips/lithium-codegen-mips.cc |
index c56188bb37602aff466ba5aded4f1c0ce5665bb6..424192394cb3c97351d5e2acb86d32fe08ee9a47 100644 |
--- a/src/mips/lithium-codegen-mips.cc |
+++ b/src/mips/lithium-codegen-mips.cc |
@@ -3546,14 +3546,16 @@ void LCodeGen::DoStoreKeyedFastDoubleElement( |
Operand(FixedDoubleArray::kHeaderSize - kHeapObjectTag)); |
} |
- 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); |
- __ Move(value, FixedDoubleArray::canonical_not_the_hole_nan_as_double()); |
+ 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); |
+ __ Move(value, FixedDoubleArray::canonical_not_the_hole_nan_as_double()); |
+ } |
__ bind(¬_nan); |
__ sdc1(value, MemOperand(scratch)); |