| 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 {
|
|
|