Index: src/compiler/effect-control-linearizer.cc |
diff --git a/src/compiler/effect-control-linearizer.cc b/src/compiler/effect-control-linearizer.cc |
index f5c5d2d1e80ba08968caef18ba2a59ec870164eb..94808745fdc31e6e846b0fba108c9d2f5d0f2314 100644 |
--- a/src/compiler/effect-control-linearizer.cc |
+++ b/src/compiler/effect-control-linearizer.cc |
@@ -452,10 +452,13 @@ bool EffectControlLinearizer::TryWireInStateEffect(Node* node, |
case IrOpcode::kStringFromCharCode: |
state = LowerStringFromCharCode(node, *effect, *control); |
break; |
+ case IrOpcode::kCheckIf: |
+ state = LowerCheckIf(node, frame_state, *effect, *control); |
+ break; |
default: |
return false; |
} |
- NodeProperties::ReplaceUses(node, state.value); |
+ NodeProperties::ReplaceUses(node, state.value, state.effect, state.control); |
*effect = state.effect; |
*control = state.control; |
return true; |
@@ -1274,6 +1277,16 @@ EffectControlLinearizer::LowerStringFromCharCode(Node* node, Node* effect, |
} |
EffectControlLinearizer::ValueEffectControl |
+EffectControlLinearizer::LowerCheckIf(Node* node, Node* frame_state, |
+ Node* effect, Node* control) { |
+ NodeProperties::ReplaceEffectInput(node, effect); |
+ NodeProperties::ReplaceControlInput(node, control); |
+ node->InsertInput(graph()->zone(), 1, frame_state); |
+ NodeProperties::ChangeOp(node, common()->DeoptimizeIf()); |
+ return ValueEffectControl(node, node, node); |
+} |
+ |
+EffectControlLinearizer::ValueEffectControl |
EffectControlLinearizer::AllocateHeapNumberWithValue(Node* value, Node* effect, |
Node* control) { |
Node* result = effect = graph()->NewNode( |