Index: src/compiler/load-elimination.cc |
diff --git a/src/compiler/load-elimination.cc b/src/compiler/load-elimination.cc |
index e50ebe19190c0313cd5c38f190199bf675655b76..0110b52f25b3f3cda7d032805d179011d6109602 100644 |
--- a/src/compiler/load-elimination.cc |
+++ b/src/compiler/load-elimination.cc |
@@ -866,6 +866,12 @@ LoadElimination::AbstractState const* LoadElimination::ComputeLoopState( |
} |
case IrOpcode::kTransitionElementsKind: { |
Node* const object = NodeProperties::GetValueInput(current, 0); |
+ Node* const target_map = NodeProperties::GetValueInput(current, 2); |
+ Node* const object_map = state->LookupField( |
+ object, FieldIndexOf(HeapObject::kMapOffset)); |
+ if (target_map == object_map) { |
Benedikt Meurer
2016/11/16 20:22:19
Nit: Please do
if (target_map != object_map) {
|
+ break; |
+ } |
state = state->KillField( |
object, FieldIndexOf(HeapObject::kMapOffset), zone()); |
state = state->KillField( |