| Index: src/compiler/simplified-operator.cc
|
| diff --git a/src/compiler/simplified-operator.cc b/src/compiler/simplified-operator.cc
|
| index dbb29eadddb64ff62aad54f7737f5b726dca521f..8432d21d952ff7b4fd4ae5ff968a75b000cdec01 100644
|
| --- a/src/compiler/simplified-operator.cc
|
| +++ b/src/compiler/simplified-operator.cc
|
| @@ -174,9 +174,6 @@ const ElementAccess& ElementAccessOf(const Operator* op) {
|
| V(NumberToInt32, Operator::kNoProperties, 1) \
|
| V(NumberToUint32, Operator::kNoProperties, 1) \
|
| V(PlainPrimitiveToNumber, Operator::kNoProperties, 1) \
|
| - V(StringEqual, Operator::kCommutative, 2) \
|
| - V(StringLessThan, Operator::kNoProperties, 2) \
|
| - V(StringLessThanOrEqual, Operator::kNoProperties, 2) \
|
| V(ChangeTaggedToInt32, Operator::kNoProperties, 1) \
|
| V(ChangeTaggedToUint32, Operator::kNoProperties, 1) \
|
| V(ChangeTaggedToFloat64, Operator::kNoProperties, 1) \
|
| @@ -187,6 +184,10 @@ const ElementAccess& ElementAccessOf(const Operator* op) {
|
| V(ChangeBitToBool, Operator::kNoProperties, 1) \
|
| V(ObjectIsSmi, Operator::kNoProperties, 1)
|
|
|
| +#define NO_THROW_OP_LIST(V) \
|
| + V(StringEqual, Operator::kCommutative, 2) \
|
| + V(StringLessThan, Operator::kNoThrow, 2) \
|
| + V(StringLessThanOrEqual, Operator::kNoThrow, 2)
|
|
|
| struct SimplifiedOperatorGlobalCache final {
|
| #define PURE(Name, properties, input_count) \
|
| @@ -199,6 +200,16 @@ struct SimplifiedOperatorGlobalCache final {
|
| PURE_OP_LIST(PURE)
|
| #undef PURE
|
|
|
| +#define NO_THROW(Name, properties, input_count) \
|
| + struct Name##Operator final : public Operator { \
|
| + Name##Operator() \
|
| + : Operator(IrOpcode::k##Name, Operator::kNoThrow | properties, #Name, \
|
| + input_count, 1, 1, 1, 1, 0) {} \
|
| + }; \
|
| + Name##Operator k##Name;
|
| + NO_THROW_OP_LIST(NO_THROW)
|
| +#undef NO_THROW
|
| +
|
| #define BUFFER_ACCESS(Type, type, TYPE, ctype, size) \
|
| struct LoadBuffer##Type##Operator final : public Operator1<BufferAccess> { \
|
| LoadBuffer##Type##Operator() \
|
| @@ -229,10 +240,11 @@ SimplifiedOperatorBuilder::SimplifiedOperatorBuilder(Zone* zone)
|
| : cache_(kCache.Get()), zone_(zone) {}
|
|
|
|
|
| -#define PURE(Name, properties, input_count) \
|
| +#define GET_FROM_CACHE(Name, properties, input_count) \
|
| const Operator* SimplifiedOperatorBuilder::Name() { return &cache_.k##Name; }
|
| -PURE_OP_LIST(PURE)
|
| -#undef PURE
|
| +PURE_OP_LIST(GET_FROM_CACHE)
|
| +NO_THROW_OP_LIST(GET_FROM_CACHE)
|
| +#undef GET_FROM_CACHE
|
|
|
|
|
| const Operator* SimplifiedOperatorBuilder::ReferenceEqual(Type* type) {
|
|
|