Index: src/compiler/escape-analysis.cc |
diff --git a/src/compiler/escape-analysis.cc b/src/compiler/escape-analysis.cc |
index 0218045971be69381731ac784e44cd3c2ad1bc71..def99764dceec0d0f289775c6fd0d4fb62f7e8e1 100644 |
--- a/src/compiler/escape-analysis.cc |
+++ b/src/compiler/escape-analysis.cc |
@@ -476,7 +476,8 @@ bool VirtualObject::MergeFrom(MergeCache* cache, Node* at, Graph* graph, |
at->opcode() == IrOpcode::kPhi); |
bool changed = false; |
for (size_t i = 0; i < field_count(); ++i) { |
- if (Node* field = cache->GetFields(i)) { |
+ Node* field = cache->GetFields(i); |
+ if (field && !IsCreatedPhi(i)) { |
changed = changed || GetField(i) != field; |
SetField(i, field); |
TRACE(" Field %zu agree on rep #%d\n", i, field->id()); |
@@ -966,6 +967,7 @@ void EscapeAnalysis::RunObjectAnalysis() { |
// VirtualObjects, and we want to delay phis to improve performance. |
if (use->opcode() == IrOpcode::kEffectPhi) { |
if (!status_analysis_->IsInQueue(use->id())) { |
+ status_analysis_->SetInQueue(use->id(), true); |
queue.push_front(use); |
} |
} else if ((use->opcode() != IrOpcode::kLoadField && |