3736 {
3738 ASSERT(operation_cid() == kMintCid);
3739
3740 CompileType* left_type =
left()->Type();
3741 CompileType* right_type =
right()->Type();
3742 if (left_type->IsNull() || left_type->IsNullableSmi() ||
3743 right_type->IsNull() || right_type->IsNullableSmi()) {
3744 auto replacement = new StrictCompareInstr(
3746 (kind() == Token::kEQ) ? Token::kEQ_STRICT : Token::kNE_STRICT,
3747 left()->CopyWithType(),
right()->CopyWithType(),
3750 return replacement;
3751 } else {
3752
3753
3754
3755 if (!left_type->is_nullable() && !right_type->is_nullable() &&
3756 flow_graph->unmatched_representations_allowed()) {
3758 }
3759 }
3760 } else {
3764 flow_graph->unmatched_representations_allowed()) {
3765 auto replacement = new StrictCompareInstr(
3767 (kind() == Token::kEQ) ? Token::kEQ_STRICT : Token::kNE_STRICT,
3768 left()->CopyWithType(),
right()->CopyWithType(),
3771 return replacement;
3772 }
3773 }
3774 return this;
3775}
bool is_null_aware() const
void set_null_aware(bool value)
static constexpr const char * kNone
static bool IsSingleUseUnboxOrConstant(Value *use)