Index: src/x87/lithium-x87.cc |
diff --git a/src/x87/lithium-x87.cc b/src/x87/lithium-x87.cc |
index 1ff9f911b7a090cf4d32fe66750b70d424bf2eca..9dfd62defb3271398c586fa9f002790ae2c1d7a6 100644 |
--- a/src/x87/lithium-x87.cc |
+++ b/src/x87/lithium-x87.cc |
@@ -2054,10 +2054,7 @@ LInstruction* LChunkBuilder::DoConstant(HConstant* instr) { |
} else if (r.IsInteger32()) { |
return DefineAsRegister(new(zone()) LConstantI); |
} else if (r.IsDouble()) { |
- double value = instr->DoubleValue(); |
- bool value_is_zero = BitCast<uint64_t, double>(value) == 0; |
- LOperand* temp = value_is_zero ? NULL : TempRegister(); |
- return DefineAsRegister(new(zone()) LConstantD(temp)); |
+ return DefineAsRegister(new(zone()) LConstantD); |
} else if (r.IsExternal()) { |
return DefineAsRegister(new(zone()) LConstantE); |
} else if (r.IsTagged()) { |
@@ -2248,8 +2245,9 @@ LInstruction* LChunkBuilder::DoStoreKeyed(HStoreKeyed* instr) { |
if (instr->value()->representation().IsDouble()) { |
LOperand* object = UseRegisterAtStart(instr->elements()); |
- LOperand* val = NULL; |
- val = UseRegisterAtStart(instr->value()); |
+ // For storing double hole, no fp register required. |
+ LOperand* val = instr->IsConstantHoleStore() |
+ ? NULL : UseRegisterAtStart(instr->value()); |
LOperand* key = UseRegisterOrConstantAtStart(instr->key()); |
return new(zone()) LStoreKeyed(object, key, val); |
} else { |