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; |
} |