Index: src/compiler/effect-control-linearizer.cc |
diff --git a/src/compiler/effect-control-linearizer.cc b/src/compiler/effect-control-linearizer.cc |
index dabf52dce4d88cf3eaba9867e753634d3fdda6c3..f093d405ab15d164c0eeedd62c9a3229468ca7e7 100644 |
--- a/src/compiler/effect-control-linearizer.cc |
+++ b/src/compiler/effect-control-linearizer.cc |
@@ -293,6 +293,15 @@ void EffectControlLinearizer::ProcessNode(Node* node, Node** effect, |
return RemoveRegionNode(node); |
} |
+ // Special treatment for CheckPoint nodes. |
+ // TODO(epertoso): Pickup the current frame state. |
+ if (node->opcode() == IrOpcode::kCheckPoint) { |
+ // Unlink the check point; effect uses will be updated to the incoming |
+ // effect that is passed. |
+ node->Kill(); |
+ return; |
+ } |
+ |
if (node->opcode() == IrOpcode::kIfSuccess) { |
// We always schedule IfSuccess with its call, so skip it here. |
DCHECK_EQ(IrOpcode::kCall, node->InputAt(0)->opcode()); |