| Index: src/compiler/load-elimination.cc
|
| diff --git a/src/compiler/load-elimination.cc b/src/compiler/load-elimination.cc
|
| index ab7b893e81362da3d30289940e6e64763e435c02..c579673ba8c1ca9176d86aaeef5c3340e3b83ea8 100644
|
| --- a/src/compiler/load-elimination.cc
|
| +++ b/src/compiler/load-elimination.cc
|
| @@ -18,6 +18,9 @@ enum Aliasing { kNoAlias, kMayAlias, kMustAlias };
|
|
|
| Aliasing QueryAlias(Node* a, Node* b) {
|
| if (a == b) return kMustAlias;
|
| + if (!NodeProperties::GetType(a)->Maybe(NodeProperties::GetType(b))) {
|
| + return kNoAlias;
|
| + }
|
| if (b->opcode() == IrOpcode::kAllocate) {
|
| switch (a->opcode()) {
|
| case IrOpcode::kAllocate:
|
| @@ -111,6 +114,7 @@ LoadElimination::AbstractElements::Kill(Node* object, Node* index,
|
| that->elements_[that->next_index_++] = element;
|
| }
|
| }
|
| + that->next_index_ %= arraysize(elements_);
|
| return that;
|
| }
|
| }
|
| @@ -164,6 +168,7 @@ LoadElimination::AbstractElements::Merge(AbstractElements const* that,
|
| }
|
| }
|
| }
|
| + copy->next_index_ %= arraysize(elements_);
|
| return copy;
|
| }
|
|
|
|
|