| 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,
|
|
|