Index: src/compiler/escape-analysis-reducer.cc |
diff --git a/src/compiler/escape-analysis-reducer.cc b/src/compiler/escape-analysis-reducer.cc |
index d54f1a3c12bae60f222468adf8155ec746e43cc6..313b6396dd3d6f9cf5b91c5ac87d7c55466a723c 100644 |
--- a/src/compiler/escape-analysis-reducer.cc |
+++ b/src/compiler/escape-analysis-reducer.cc |
@@ -133,6 +133,9 @@ Reduction EscapeAnalysisReducer::ReduceStore(Node* node) { |
Reduction EscapeAnalysisReducer::ReduceAllocate(Node* node) { |
DCHECK_EQ(node->opcode(), IrOpcode::kAllocate); |
+ if (node->id() < static_cast<NodeId>(fully_reduced_.length())) { |
+ fully_reduced_.Add(node->id()); |
+ } |
if (escape_analysis()->IsVirtual(node)) { |
RelaxEffectsAndControls(node); |
counters()->turbo_escape_allocs_replaced()->Increment(); |
@@ -147,6 +150,8 @@ Reduction EscapeAnalysisReducer::ReduceFinishRegion(Node* node) { |
DCHECK_EQ(node->opcode(), IrOpcode::kFinishRegion); |
Node* effect = NodeProperties::GetEffectInput(node, 0); |
if (effect->opcode() == IrOpcode::kBeginRegion) { |
+ // We only add it now to remove empty Begin/Finish region pairs |
+ // in the process. |
if (node->id() < static_cast<NodeId>(fully_reduced_.length())) { |
fully_reduced_.Add(node->id()); |
} |
@@ -208,6 +213,9 @@ Reduction EscapeAnalysisReducer::ReduceObjectIsSmi(Node* node) { |
Reduction EscapeAnalysisReducer::ReduceFrameStateUses(Node* node) { |
DCHECK_GE(node->op()->EffectInputCount(), 1); |
+ if (node->id() < static_cast<NodeId>(fully_reduced_.length())) { |
+ fully_reduced_.Add(node->id()); |
+ } |
bool changed = false; |
for (int i = 0; i < node->InputCount(); ++i) { |
Node* input = node->InputAt(i); |