Index: src/compiler/bytecode-graph-builder.cc |
diff --git a/src/compiler/bytecode-graph-builder.cc b/src/compiler/bytecode-graph-builder.cc |
index 50cc15c2a9b5869d825bc89f38ff44dcbac51489..42e416598a2253942eaa718ed22a34e346cefeeb 100644 |
--- a/src/compiler/bytecode-graph-builder.cc |
+++ b/src/compiler/bytecode-graph-builder.cc |
@@ -109,6 +109,11 @@ class BytecodeGraphBuilder::FrameStateBeforeAndAfter { |
id_before, OutputFrameStateCombine::Ignore()); |
id_after_ = BailoutId(id_before.ToInt() + |
builder->bytecode_iterator().current_bytecode_size()); |
+ // Create an explicit checkpoint node for before the operation. |
+ Node* node = builder_->NewNode(builder_->common()->Checkpoint()); |
+ DCHECK_EQ(IrOpcode::kDead, |
+ NodeProperties::GetFrameStateInput(node, 0)->opcode()); |
+ NodeProperties::ReplaceFrameStateInput(node, 0, frame_state_before_); |
} |
~FrameStateBeforeAndAfter() { |
@@ -136,6 +141,7 @@ class BytecodeGraphBuilder::FrameStateBeforeAndAfter { |
if (count >= 2) { |
// Add the frame state for before the operation. |
+ // TODO(mstarzinger): Get rid of frame state input before! |
DCHECK_EQ(IrOpcode::kDead, |
NodeProperties::GetFrameStateInput(node, 1)->opcode()); |
NodeProperties::ReplaceFrameStateInput(node, 1, frame_state_before_); |