Index: src/compiler/effect-control-linearizer.cc |
diff --git a/src/compiler/effect-control-linearizer.cc b/src/compiler/effect-control-linearizer.cc |
index d625a753ad203060b30ec196338f530175f5c6ec..3fcaa5dd95c0e5327cf234154cbda145981b5275 100644 |
--- a/src/compiler/effect-control-linearizer.cc |
+++ b/src/compiler/effect-control-linearizer.cc |
@@ -667,6 +667,10 @@ bool EffectControlLinearizer::TryWireInStateEffect(Node* node, |
case IrOpcode::kCheckedFloat64ToInt32: |
state = LowerCheckedFloat64ToInt32(node, frame_state, *effect, *control); |
break; |
+ case IrOpcode::kCheckedTaggedSignedToInt32: |
+ state = |
+ LowerCheckedTaggedSignedToInt32(node, frame_state, *effect, *control); |
+ break; |
case IrOpcode::kCheckedTaggedToInt32: |
state = LowerCheckedTaggedToInt32(node, frame_state, *effect, *control); |
break; |
@@ -1579,6 +1583,22 @@ EffectControlLinearizer::LowerCheckedFloat64ToInt32(Node* node, |
} |
EffectControlLinearizer::ValueEffectControl |
+EffectControlLinearizer::LowerCheckedTaggedSignedToInt32(Node* node, |
+ Node* frame_state, |
+ Node* effect, |
+ Node* control) { |
+ Node* value = node->InputAt(0); |
+ |
+ Node* check = ObjectIsSmi(value); |
+ control = effect = |
+ graph()->NewNode(common()->DeoptimizeUnless(DeoptimizeReason::kNotASmi), |
+ check, frame_state, effect, control); |
+ value = ChangeSmiToInt32(value); |
+ |
+ return ValueEffectControl(value, effect, control); |
+} |
+ |
+EffectControlLinearizer::ValueEffectControl |
EffectControlLinearizer::LowerCheckedTaggedToInt32(Node* node, |
Node* frame_state, |
Node* effect, |