| Index: src/compiler/simplified-operator.cc
|
| diff --git a/src/compiler/simplified-operator.cc b/src/compiler/simplified-operator.cc
|
| index f2649994870cb844fba63f2d06d77c4430237e3a..b20e5937a59cdc37a4908f68a18cb72a1af7431d 100644
|
| --- a/src/compiler/simplified-operator.cc
|
| +++ b/src/compiler/simplified-operator.cc
|
| @@ -229,26 +229,6 @@ std::ostream& operator<<(std::ostream& os, CheckForMinusZeroMode mode) {
|
| return os;
|
| }
|
|
|
| -size_t hash_value(CheckTaggedHoleMode mode) {
|
| - return static_cast<size_t>(mode);
|
| -}
|
| -
|
| -std::ostream& operator<<(std::ostream& os, CheckTaggedHoleMode mode) {
|
| - switch (mode) {
|
| - case CheckTaggedHoleMode::kConvertHoleToUndefined:
|
| - return os << "convert-hole-to-undefined";
|
| - case CheckTaggedHoleMode::kNeverReturnHole:
|
| - return os << "never-return-hole";
|
| - }
|
| - UNREACHABLE();
|
| - return os;
|
| -}
|
| -
|
| -CheckTaggedHoleMode CheckTaggedHoleModeOf(const Operator* op) {
|
| - DCHECK_EQ(IrOpcode::kCheckTaggedHole, op->opcode());
|
| - return OpParameter<CheckTaggedHoleMode>(op);
|
| -}
|
| -
|
| size_t hash_value(CheckTaggedInputMode mode) {
|
| return static_cast<size_t>(mode);
|
| }
|
| @@ -351,84 +331,85 @@ NumberOperationHint NumberOperationHintOf(const Operator* op) {
|
| return OpParameter<NumberOperationHint>(op);
|
| }
|
|
|
| -#define PURE_OP_LIST(V) \
|
| - V(BooleanNot, Operator::kNoProperties, 1, 0) \
|
| - V(NumberEqual, Operator::kCommutative, 2, 0) \
|
| - V(NumberLessThan, Operator::kNoProperties, 2, 0) \
|
| - V(NumberLessThanOrEqual, Operator::kNoProperties, 2, 0) \
|
| - V(NumberAdd, Operator::kCommutative, 2, 0) \
|
| - V(NumberSubtract, Operator::kNoProperties, 2, 0) \
|
| - V(NumberMultiply, Operator::kCommutative, 2, 0) \
|
| - V(NumberDivide, Operator::kNoProperties, 2, 0) \
|
| - V(NumberModulus, Operator::kNoProperties, 2, 0) \
|
| - V(NumberBitwiseOr, Operator::kCommutative, 2, 0) \
|
| - V(NumberBitwiseXor, Operator::kCommutative, 2, 0) \
|
| - V(NumberBitwiseAnd, Operator::kCommutative, 2, 0) \
|
| - V(NumberShiftLeft, Operator::kNoProperties, 2, 0) \
|
| - V(NumberShiftRight, Operator::kNoProperties, 2, 0) \
|
| - V(NumberShiftRightLogical, Operator::kNoProperties, 2, 0) \
|
| - V(NumberImul, Operator::kCommutative, 2, 0) \
|
| - V(NumberAbs, Operator::kNoProperties, 1, 0) \
|
| - V(NumberClz32, Operator::kNoProperties, 1, 0) \
|
| - V(NumberCeil, Operator::kNoProperties, 1, 0) \
|
| - V(NumberFloor, Operator::kNoProperties, 1, 0) \
|
| - V(NumberFround, Operator::kNoProperties, 1, 0) \
|
| - V(NumberAcos, Operator::kNoProperties, 1, 0) \
|
| - V(NumberAcosh, Operator::kNoProperties, 1, 0) \
|
| - V(NumberAsin, Operator::kNoProperties, 1, 0) \
|
| - V(NumberAsinh, Operator::kNoProperties, 1, 0) \
|
| - V(NumberAtan, Operator::kNoProperties, 1, 0) \
|
| - V(NumberAtan2, Operator::kNoProperties, 2, 0) \
|
| - V(NumberAtanh, Operator::kNoProperties, 1, 0) \
|
| - V(NumberCbrt, Operator::kNoProperties, 1, 0) \
|
| - V(NumberCos, Operator::kNoProperties, 1, 0) \
|
| - V(NumberCosh, Operator::kNoProperties, 1, 0) \
|
| - V(NumberExp, Operator::kNoProperties, 1, 0) \
|
| - V(NumberExpm1, Operator::kNoProperties, 1, 0) \
|
| - V(NumberLog, Operator::kNoProperties, 1, 0) \
|
| - V(NumberLog1p, Operator::kNoProperties, 1, 0) \
|
| - V(NumberLog10, Operator::kNoProperties, 1, 0) \
|
| - V(NumberLog2, Operator::kNoProperties, 1, 0) \
|
| - V(NumberMax, Operator::kNoProperties, 2, 0) \
|
| - V(NumberMin, Operator::kNoProperties, 2, 0) \
|
| - V(NumberPow, Operator::kNoProperties, 2, 0) \
|
| - V(NumberRound, Operator::kNoProperties, 1, 0) \
|
| - V(NumberSign, Operator::kNoProperties, 1, 0) \
|
| - V(NumberSin, Operator::kNoProperties, 1, 0) \
|
| - V(NumberSinh, Operator::kNoProperties, 1, 0) \
|
| - V(NumberSqrt, Operator::kNoProperties, 1, 0) \
|
| - V(NumberTan, Operator::kNoProperties, 1, 0) \
|
| - V(NumberTanh, Operator::kNoProperties, 1, 0) \
|
| - V(NumberTrunc, Operator::kNoProperties, 1, 0) \
|
| - V(NumberToInt32, Operator::kNoProperties, 1, 0) \
|
| - V(NumberToUint32, Operator::kNoProperties, 1, 0) \
|
| - V(NumberSilenceNaN, Operator::kNoProperties, 1, 0) \
|
| - V(StringCharCodeAt, Operator::kNoProperties, 2, 1) \
|
| - V(StringFromCharCode, Operator::kNoProperties, 1, 0) \
|
| - V(PlainPrimitiveToNumber, Operator::kNoProperties, 1, 0) \
|
| - V(PlainPrimitiveToWord32, Operator::kNoProperties, 1, 0) \
|
| - V(PlainPrimitiveToFloat64, Operator::kNoProperties, 1, 0) \
|
| - V(ChangeTaggedSignedToInt32, Operator::kNoProperties, 1, 0) \
|
| - V(ChangeTaggedToInt32, Operator::kNoProperties, 1, 0) \
|
| - V(ChangeTaggedToUint32, Operator::kNoProperties, 1, 0) \
|
| - V(ChangeTaggedToFloat64, Operator::kNoProperties, 1, 0) \
|
| - V(ChangeInt31ToTaggedSigned, Operator::kNoProperties, 1, 0) \
|
| - V(ChangeInt32ToTagged, Operator::kNoProperties, 1, 0) \
|
| - V(ChangeUint32ToTagged, Operator::kNoProperties, 1, 0) \
|
| - V(ChangeFloat64ToTagged, Operator::kNoProperties, 1, 0) \
|
| - V(ChangeTaggedToBit, Operator::kNoProperties, 1, 0) \
|
| - V(ChangeBitToTagged, Operator::kNoProperties, 1, 0) \
|
| - V(TruncateTaggedToWord32, Operator::kNoProperties, 1, 0) \
|
| - V(TruncateTaggedToFloat64, Operator::kNoProperties, 1, 0) \
|
| - V(ObjectIsCallable, Operator::kNoProperties, 1, 0) \
|
| - V(ObjectIsNumber, Operator::kNoProperties, 1, 0) \
|
| - V(ObjectIsReceiver, Operator::kNoProperties, 1, 0) \
|
| - V(ObjectIsSmi, Operator::kNoProperties, 1, 0) \
|
| - V(ObjectIsString, Operator::kNoProperties, 1, 0) \
|
| - V(ObjectIsUndetectable, Operator::kNoProperties, 1, 0) \
|
| - V(ReferenceEqual, Operator::kCommutative, 2, 0) \
|
| - V(StringEqual, Operator::kCommutative, 2, 0) \
|
| - V(StringLessThan, Operator::kNoProperties, 2, 0) \
|
| +#define PURE_OP_LIST(V) \
|
| + V(BooleanNot, Operator::kNoProperties, 1, 0) \
|
| + V(NumberEqual, Operator::kCommutative, 2, 0) \
|
| + V(NumberLessThan, Operator::kNoProperties, 2, 0) \
|
| + V(NumberLessThanOrEqual, Operator::kNoProperties, 2, 0) \
|
| + V(NumberAdd, Operator::kCommutative, 2, 0) \
|
| + V(NumberSubtract, Operator::kNoProperties, 2, 0) \
|
| + V(NumberMultiply, Operator::kCommutative, 2, 0) \
|
| + V(NumberDivide, Operator::kNoProperties, 2, 0) \
|
| + V(NumberModulus, Operator::kNoProperties, 2, 0) \
|
| + V(NumberBitwiseOr, Operator::kCommutative, 2, 0) \
|
| + V(NumberBitwiseXor, Operator::kCommutative, 2, 0) \
|
| + V(NumberBitwiseAnd, Operator::kCommutative, 2, 0) \
|
| + V(NumberShiftLeft, Operator::kNoProperties, 2, 0) \
|
| + V(NumberShiftRight, Operator::kNoProperties, 2, 0) \
|
| + V(NumberShiftRightLogical, Operator::kNoProperties, 2, 0) \
|
| + V(NumberImul, Operator::kCommutative, 2, 0) \
|
| + V(NumberAbs, Operator::kNoProperties, 1, 0) \
|
| + V(NumberClz32, Operator::kNoProperties, 1, 0) \
|
| + V(NumberCeil, Operator::kNoProperties, 1, 0) \
|
| + V(NumberFloor, Operator::kNoProperties, 1, 0) \
|
| + V(NumberFround, Operator::kNoProperties, 1, 0) \
|
| + V(NumberAcos, Operator::kNoProperties, 1, 0) \
|
| + V(NumberAcosh, Operator::kNoProperties, 1, 0) \
|
| + V(NumberAsin, Operator::kNoProperties, 1, 0) \
|
| + V(NumberAsinh, Operator::kNoProperties, 1, 0) \
|
| + V(NumberAtan, Operator::kNoProperties, 1, 0) \
|
| + V(NumberAtan2, Operator::kNoProperties, 2, 0) \
|
| + V(NumberAtanh, Operator::kNoProperties, 1, 0) \
|
| + V(NumberCbrt, Operator::kNoProperties, 1, 0) \
|
| + V(NumberCos, Operator::kNoProperties, 1, 0) \
|
| + V(NumberCosh, Operator::kNoProperties, 1, 0) \
|
| + V(NumberExp, Operator::kNoProperties, 1, 0) \
|
| + V(NumberExpm1, Operator::kNoProperties, 1, 0) \
|
| + V(NumberLog, Operator::kNoProperties, 1, 0) \
|
| + V(NumberLog1p, Operator::kNoProperties, 1, 0) \
|
| + V(NumberLog10, Operator::kNoProperties, 1, 0) \
|
| + V(NumberLog2, Operator::kNoProperties, 1, 0) \
|
| + V(NumberMax, Operator::kNoProperties, 2, 0) \
|
| + V(NumberMin, Operator::kNoProperties, 2, 0) \
|
| + V(NumberPow, Operator::kNoProperties, 2, 0) \
|
| + V(NumberRound, Operator::kNoProperties, 1, 0) \
|
| + V(NumberSign, Operator::kNoProperties, 1, 0) \
|
| + V(NumberSin, Operator::kNoProperties, 1, 0) \
|
| + V(NumberSinh, Operator::kNoProperties, 1, 0) \
|
| + V(NumberSqrt, Operator::kNoProperties, 1, 0) \
|
| + V(NumberTan, Operator::kNoProperties, 1, 0) \
|
| + V(NumberTanh, Operator::kNoProperties, 1, 0) \
|
| + V(NumberTrunc, Operator::kNoProperties, 1, 0) \
|
| + V(NumberToInt32, Operator::kNoProperties, 1, 0) \
|
| + V(NumberToUint32, Operator::kNoProperties, 1, 0) \
|
| + V(NumberSilenceNaN, Operator::kNoProperties, 1, 0) \
|
| + V(StringCharCodeAt, Operator::kNoProperties, 2, 1) \
|
| + V(StringFromCharCode, Operator::kNoProperties, 1, 0) \
|
| + V(PlainPrimitiveToNumber, Operator::kNoProperties, 1, 0) \
|
| + V(PlainPrimitiveToWord32, Operator::kNoProperties, 1, 0) \
|
| + V(PlainPrimitiveToFloat64, Operator::kNoProperties, 1, 0) \
|
| + V(ChangeTaggedSignedToInt32, Operator::kNoProperties, 1, 0) \
|
| + V(ChangeTaggedToInt32, Operator::kNoProperties, 1, 0) \
|
| + V(ChangeTaggedToUint32, Operator::kNoProperties, 1, 0) \
|
| + V(ChangeTaggedToFloat64, Operator::kNoProperties, 1, 0) \
|
| + V(ChangeInt31ToTaggedSigned, Operator::kNoProperties, 1, 0) \
|
| + V(ChangeInt32ToTagged, Operator::kNoProperties, 1, 0) \
|
| + V(ChangeUint32ToTagged, Operator::kNoProperties, 1, 0) \
|
| + V(ChangeFloat64ToTagged, Operator::kNoProperties, 1, 0) \
|
| + V(ChangeTaggedToBit, Operator::kNoProperties, 1, 0) \
|
| + V(ChangeBitToTagged, Operator::kNoProperties, 1, 0) \
|
| + V(TruncateTaggedToWord32, Operator::kNoProperties, 1, 0) \
|
| + V(TruncateTaggedToFloat64, Operator::kNoProperties, 1, 0) \
|
| + V(ObjectIsCallable, Operator::kNoProperties, 1, 0) \
|
| + V(ObjectIsNumber, Operator::kNoProperties, 1, 0) \
|
| + V(ObjectIsReceiver, Operator::kNoProperties, 1, 0) \
|
| + V(ObjectIsSmi, Operator::kNoProperties, 1, 0) \
|
| + V(ObjectIsString, Operator::kNoProperties, 1, 0) \
|
| + V(ObjectIsUndetectable, Operator::kNoProperties, 1, 0) \
|
| + V(ConvertTaggedHoleToUndefined, Operator::kNoProperties, 1, 0) \
|
| + V(ReferenceEqual, Operator::kCommutative, 2, 0) \
|
| + V(StringEqual, Operator::kCommutative, 2, 0) \
|
| + V(StringLessThan, Operator::kNoProperties, 2, 0) \
|
| V(StringLessThanOrEqual, Operator::kNoProperties, 2, 0)
|
|
|
| #define SPECULATIVE_NUMBER_BINOP_LIST(V) \
|
| @@ -442,6 +423,7 @@ NumberOperationHint NumberOperationHintOf(const Operator* op) {
|
| V(CheckIf, 1, 0) \
|
| V(CheckNumber, 1, 1) \
|
| V(CheckString, 1, 1) \
|
| + V(CheckTaggedHole, 1, 1) \
|
| V(CheckTaggedPointer, 1, 1) \
|
| V(CheckTaggedSigned, 1, 1) \
|
| V(CheckedInt32Add, 2, 1) \
|
| @@ -546,19 +528,6 @@ struct SimplifiedOperatorGlobalCache final {
|
| CheckFloat64HoleNaNOperator<CheckFloat64HoleMode::kNeverReturnHole>
|
| kCheckFloat64HoleNeverReturnHoleOperator;
|
|
|
| - template <CheckTaggedHoleMode kMode>
|
| - struct CheckTaggedHoleOperator final : public Operator1<CheckTaggedHoleMode> {
|
| - CheckTaggedHoleOperator()
|
| - : Operator1<CheckTaggedHoleMode>(
|
| - IrOpcode::kCheckTaggedHole,
|
| - Operator::kFoldable | Operator::kNoThrow, "CheckTaggedHole", 1, 1,
|
| - 1, 1, 1, 0, kMode) {}
|
| - };
|
| - CheckTaggedHoleOperator<CheckTaggedHoleMode::kConvertHoleToUndefined>
|
| - kCheckTaggedHoleConvertHoleToUndefinedOperator;
|
| - CheckTaggedHoleOperator<CheckTaggedHoleMode::kNeverReturnHole>
|
| - kCheckTaggedHoleNeverReturnHoleOperator;
|
| -
|
| template <PretenureFlag kPretenure>
|
| struct AllocateOperator final : public Operator1<PretenureFlag> {
|
| AllocateOperator()
|
| @@ -706,18 +675,6 @@ const Operator* SimplifiedOperatorBuilder::CheckFloat64Hole(
|
| return nullptr;
|
| }
|
|
|
| -const Operator* SimplifiedOperatorBuilder::CheckTaggedHole(
|
| - CheckTaggedHoleMode mode) {
|
| - switch (mode) {
|
| - case CheckTaggedHoleMode::kConvertHoleToUndefined:
|
| - return &cache_.kCheckTaggedHoleConvertHoleToUndefinedOperator;
|
| - case CheckTaggedHoleMode::kNeverReturnHole:
|
| - return &cache_.kCheckTaggedHoleNeverReturnHoleOperator;
|
| - }
|
| - UNREACHABLE();
|
| - return nullptr;
|
| -}
|
| -
|
| const Operator* SimplifiedOperatorBuilder::EnsureWritableFastElements() {
|
| return &cache_.kEnsureWritableFastElements;
|
| }
|
|
|