Chromium Code Reviews| Index: src/hydrogen-load-elimination.cc |
| diff --git a/src/hydrogen-load-elimination.cc b/src/hydrogen-load-elimination.cc |
| index 634d75d8620f5ec866048f9794b8e2ff87a5a0a2..56839b294891d218749744551358b0e8f063935d 100644 |
| --- a/src/hydrogen-load-elimination.cc |
| +++ b/src/hydrogen-load-elimination.cc |
| @@ -193,6 +193,10 @@ class HLoadEliminationTable : public ZoneObject { |
| // load or store for this object and field exists, return the new value with |
| // which the load should be replaced. Otherwise, return {instr}. |
| HValue* load(HLoadNamedField* instr) { |
| + // There must be no loads from non observable in-object properties. |
|
Igor Sheludko
2014/02/03 19:17:58
New code.
|
| + ASSERT(!instr->access().IsInobject() || |
| + instr->access().existing_inobject_property()); |
| + |
| int field = FieldOf(instr->access()); |
| if (field < 0) return instr; |
| @@ -217,8 +221,9 @@ class HLoadEliminationTable : public ZoneObject { |
| // the stored values are the same), return NULL indicating that this store |
| // instruction is redundant. Otherwise, return {instr}. |
| HValue* store(HStoreNamedField* instr) { |
| - if (instr->store_mode() == PREINITIALIZING_STORE) { |
| - TRACE((" skipping preinitializing store\n")); |
| + if (instr->access().IsInobject() && |
|
Igor Sheludko
2014/02/03 19:17:58
New code.
|
| + !instr->access().existing_inobject_property()) { |
| + TRACE((" skipping non existing property initialization store\n")); |
| return instr; |
| } |