Index: src/compiler/effect-control-linearizer.cc |
diff --git a/src/compiler/effect-control-linearizer.cc b/src/compiler/effect-control-linearizer.cc |
index 318c55ba90a547e1155d9c1253bbee007fd08bd9..7d18f0591c0be7eac3f301dc4cf301b5eda4ca50 100644 |
--- a/src/compiler/effect-control-linearizer.cc |
+++ b/src/compiler/effect-control-linearizer.cc |
@@ -600,6 +600,9 @@ bool EffectControlLinearizer::TryWireInStateEffect(Node* node, |
case IrOpcode::kChangeFloat64ToTagged: |
state = LowerChangeFloat64ToTagged(node, *effect, *control); |
break; |
+ case IrOpcode::kChangeFloat64ToTaggedPointer: |
+ state = LowerChangeFloat64ToTaggedPointer(node, *effect, *control); |
+ break; |
case IrOpcode::kChangeTaggedSignedToInt32: |
state = LowerChangeTaggedSignedToInt32(node, *effect, *control); |
break; |
@@ -636,9 +639,6 @@ bool EffectControlLinearizer::TryWireInStateEffect(Node* node, |
case IrOpcode::kCheckIf: |
state = LowerCheckIf(node, frame_state, *effect, *control); |
break; |
- case IrOpcode::kCheckHeapObject: |
- state = LowerCheckHeapObject(node, frame_state, *effect, *control); |
- break; |
case IrOpcode::kCheckedInt32Add: |
state = LowerCheckedInt32Add(node, frame_state, *effect, *control); |
break; |
@@ -688,6 +688,10 @@ bool EffectControlLinearizer::TryWireInStateEffect(Node* node, |
state = LowerCheckedTaggedToTaggedSigned(node, frame_state, *effect, |
*control); |
break; |
+ case IrOpcode::kCheckedTaggedToTaggedPointer: |
+ state = LowerCheckedTaggedToTaggedPointer(node, frame_state, *effect, |
+ *control); |
+ break; |
case IrOpcode::kTruncateTaggedToWord32: |
state = LowerTruncateTaggedToWord32(node, *effect, *control); |
break; |
@@ -793,6 +797,14 @@ EffectControlLinearizer::LowerChangeFloat64ToTagged(Node* node, Node* effect, |
} |
EffectControlLinearizer::ValueEffectControl |
+EffectControlLinearizer::LowerChangeFloat64ToTaggedPointer(Node* node, |
+ Node* effect, |
+ Node* control) { |
+ Node* value = node->InputAt(0); |
+ return AllocateHeapNumberWithValue(value, effect, control); |
+} |
+ |
+EffectControlLinearizer::ValueEffectControl |
EffectControlLinearizer::LowerChangeBitToTagged(Node* node, Node* effect, |
Node* control) { |
Node* value = node->InputAt(0); |
@@ -1274,19 +1286,6 @@ EffectControlLinearizer::LowerCheckIf(Node* node, Node* frame_state, |
} |
EffectControlLinearizer::ValueEffectControl |
-EffectControlLinearizer::LowerCheckHeapObject(Node* node, Node* frame_state, |
- Node* effect, Node* control) { |
- Node* value = node->InputAt(0); |
- |
- Node* check = ObjectIsSmi(value); |
- control = effect = |
- graph()->NewNode(common()->DeoptimizeIf(DeoptimizeReason::kSmi), check, |
- frame_state, effect, control); |
- |
- return ValueEffectControl(value, effect, control); |
-} |
- |
-EffectControlLinearizer::ValueEffectControl |
EffectControlLinearizer::LowerCheckedInt32Add(Node* node, Node* frame_state, |
Node* effect, Node* control) { |
Node* lhs = node->InputAt(0); |
@@ -1883,6 +1882,21 @@ EffectControlLinearizer::LowerCheckedTaggedToTaggedSigned(Node* node, |
} |
EffectControlLinearizer::ValueEffectControl |
+EffectControlLinearizer::LowerCheckedTaggedToTaggedPointer(Node* node, |
+ Node* frame_state, |
+ Node* effect, |
+ Node* control) { |
+ Node* value = node->InputAt(0); |
+ |
+ Node* check = ObjectIsSmi(value); |
+ control = effect = |
+ graph()->NewNode(common()->DeoptimizeIf(DeoptimizeReason::kSmi), check, |
+ frame_state, effect, control); |
+ |
+ return ValueEffectControl(value, effect, control); |
+} |
+ |
+EffectControlLinearizer::ValueEffectControl |
EffectControlLinearizer::LowerTruncateTaggedToWord32(Node* node, Node* effect, |
Node* control) { |
Node* value = node->InputAt(0); |