Index: src/compiler/effect-control-linearizer.cc |
diff --git a/src/compiler/effect-control-linearizer.cc b/src/compiler/effect-control-linearizer.cc |
index e867a7c5dc785df9203935c03b7f41453f3c39f1..d59869fdafb2aa7a8b39cffb5a0db055e2de58f6 100644 |
--- a/src/compiler/effect-control-linearizer.cc |
+++ b/src/compiler/effect-control-linearizer.cc |
@@ -458,6 +458,9 @@ bool EffectControlLinearizer::TryWireInStateEffect(Node* node, |
case IrOpcode::kCheckIf: |
state = LowerCheckIf(node, frame_state, *effect, *control); |
break; |
+ case IrOpcode::kCheckUnless: |
+ state = LowerCheckUnless(node, frame_state, *effect, *control); |
+ break; |
case IrOpcode::kCheckFloat64Hole: |
state = LowerCheckFloat64Hole(node, frame_state, *effect, *control); |
break; |
@@ -1332,6 +1335,17 @@ EffectControlLinearizer::LowerCheckIf(Node* node, Node* frame_state, |
} |
EffectControlLinearizer::ValueEffectControl |
+EffectControlLinearizer::LowerCheckUnless(Node* node, Node* frame_state, |
+ Node* effect, Node* control) { |
+ NodeProperties::ReplaceEffectInput(node, effect); |
+ NodeProperties::ReplaceControlInput(node, control); |
+ DCHECK_NOT_NULL(frame_state); |
+ node->InsertInput(graph()->zone(), 1, frame_state); |
+ NodeProperties::ChangeOp(node, common()->DeoptimizeUnless()); |
+ return ValueEffectControl(node, node, node); |
+} |
+ |
+EffectControlLinearizer::ValueEffectControl |
EffectControlLinearizer::LowerCheckFloat64Hole(Node* node, Node* frame_state, |
Node* effect, Node* control) { |
// If we reach this point w/o eliminating the {node} that's marked |