| Index: src/hydrogen-instructions.h
|
| diff --git a/src/hydrogen-instructions.h b/src/hydrogen-instructions.h
|
| index 069642ae8c75210d638024126c784db225cbb6b4..7efe4b96aa8d305ac1b7a45c02eabb95bbf91b6c 100644
|
| --- a/src/hydrogen-instructions.h
|
| +++ b/src/hydrogen-instructions.h
|
| @@ -4191,15 +4191,18 @@ class HTransitionElementsKind: public HTemplateInstruction<1> {
|
| transitioned_map_(transitioned_map) {
|
| SetOperandAt(0, object);
|
| SetFlag(kUseGVN);
|
| + // DependsOn flags for TransitionElementsKinds only effect instruction
|
| + // hoisting, which could change their location relative to instructions that
|
| + // have side-effects. GVN duplicate value elimination handles
|
| + // TransitionElementsKinds specially, ensuring the no-op transitions are
|
| + // always eliminated.
|
| SetGVNFlag(kDependsOnMaps);
|
| SetGVNFlag(kChangesElementsKind);
|
| if (original_map->has_fast_double_elements()) {
|
| SetGVNFlag(kChangesElementsPointer);
|
| - SetGVNFlag(kDependsOnElementsPointer);
|
| SetGVNFlag(kDependsOnDoubleArrayElements);
|
| } else if (transitioned_map->has_fast_double_elements()) {
|
| SetGVNFlag(kChangesElementsPointer);
|
| - SetGVNFlag(kDependsOnElementsPointer);
|
| SetGVNFlag(kDependsOnArrayElements);
|
| }
|
| set_representation(Representation::Tagged());
|
|
|