| Index: src/arm/lithium-codegen-arm.cc
 | 
| diff --git a/src/arm/lithium-codegen-arm.cc b/src/arm/lithium-codegen-arm.cc
 | 
| index 7c37e8ee8b2214ae6f9d901f3613c9e6101c86d7..8be544425698c15cb67c91de4a8b3d4652624e4e 100644
 | 
| --- a/src/arm/lithium-codegen-arm.cc
 | 
| +++ b/src/arm/lithium-codegen-arm.cc
 | 
| @@ -3615,7 +3615,6 @@ void LCodeGen::DoStoreKeyedFastDoubleElement(
 | 
|    Register scratch = scratch0();
 | 
|    bool key_is_constant = instr->key()->IsConstantOperand();
 | 
|    int constant_key = 0;
 | 
| -  Label not_nan;
 | 
|  
 | 
|    // Calculate the effective address of the slot in the array to store the
 | 
|    // double value.
 | 
| @@ -3638,13 +3637,15 @@ void LCodeGen::DoStoreKeyedFastDoubleElement(
 | 
|             Operand(FixedDoubleArray::kHeaderSize - kHeapObjectTag));
 | 
|    }
 | 
|  
 | 
| -  // Check for NaN. All NaNs must be canonicalized.
 | 
| -  __ VFPCompareAndSetFlags(value, value);
 | 
| -
 | 
| -  // Only load canonical NaN if the comparison above set the overflow.
 | 
| -  __ Vmov(value, FixedDoubleArray::canonical_not_the_hole_nan_as_double(), vs);
 | 
| +  if (instr->NeedsCanonicalization()) {
 | 
| +    // Check for NaN. All NaNs must be canonicalized.
 | 
| +    __ VFPCompareAndSetFlags(value, value);
 | 
| +    // Only load canonical NaN if the comparison above set the overflow.
 | 
| +    __ Vmov(value,
 | 
| +            FixedDoubleArray::canonical_not_the_hole_nan_as_double(),
 | 
| +            vs);
 | 
| +  }
 | 
|  
 | 
| -  __ bind(¬_nan);
 | 
|    __ vstr(value, scratch, 0);
 | 
|  }
 | 
|  
 | 
| 
 |