Index: src/compiler/simplified-operator.cc |
diff --git a/src/compiler/simplified-operator.cc b/src/compiler/simplified-operator.cc |
index a77931e0f3862ebaa32953b2e9fd644cb3e14885..646ff95d402daa51f1515f55d1aa722e5f693e46 100644 |
--- a/src/compiler/simplified-operator.cc |
+++ b/src/compiler/simplified-operator.cc |
@@ -305,16 +305,18 @@ CompareOperationHints::Hint CompareOperationHintOf(const Operator* op) { |
V(SpeculativeNumberMultiply) \ |
V(SpeculativeNumberModulus) |
-#define CHECKED_OP_LIST(V) \ |
- V(CheckNumber, 1) \ |
- V(CheckTaggedPointer, 1) \ |
- V(CheckTaggedSigned, 1) \ |
- V(CheckedInt32Add, 2) \ |
- V(CheckedInt32Sub, 2) \ |
- V(CheckedUint32ToInt32, 1) \ |
- V(CheckedFloat64ToInt32, 1) \ |
- V(CheckedTaggedToInt32, 1) \ |
- V(CheckedTaggedToFloat64, 1) |
+#define CHECKED_OP_LIST(V) \ |
+ V(CheckBounds, 2, 1) \ |
+ V(CheckIf, 1, 0) \ |
+ V(CheckNumber, 1, 1) \ |
+ V(CheckTaggedPointer, 1, 1) \ |
+ V(CheckTaggedSigned, 1, 1) \ |
+ V(CheckedInt32Add, 2, 1) \ |
+ V(CheckedInt32Sub, 2, 1) \ |
+ V(CheckedUint32ToInt32, 1, 1) \ |
+ V(CheckedFloat64ToInt32, 1, 1) \ |
+ V(CheckedTaggedToInt32, 1, 1) \ |
+ V(CheckedTaggedToFloat64, 1, 1) |
struct SimplifiedOperatorGlobalCache final { |
#define PURE(Name, properties, input_count) \ |
@@ -327,13 +329,13 @@ struct SimplifiedOperatorGlobalCache final { |
PURE_OP_LIST(PURE) |
#undef PURE |
-#define CHECKED(Name, value_input_count) \ |
- struct Name##Operator final : public Operator { \ |
- Name##Operator() \ |
- : Operator(IrOpcode::k##Name, \ |
- Operator::kFoldable | Operator::kNoThrow, #Name, \ |
- value_input_count, 1, 1, 1, 1, 0) {} \ |
- }; \ |
+#define CHECKED(Name, value_input_count, value_output_count) \ |
+ struct Name##Operator final : public Operator { \ |
+ Name##Operator() \ |
+ : Operator(IrOpcode::k##Name, \ |
+ Operator::kFoldable | Operator::kNoThrow, #Name, \ |
+ value_input_count, 1, 1, value_output_count, 1, 0) {} \ |
+ }; \ |
Name##Operator k##Name; |
CHECKED_OP_LIST(CHECKED) |
#undef CHECKED |
@@ -412,7 +414,7 @@ SimplifiedOperatorBuilder::SimplifiedOperatorBuilder(Zone* zone) |
PURE_OP_LIST(GET_FROM_CACHE) |
#undef GET_FROM_CACHE |
-#define GET_FROM_CACHE(Name, value_input_count) \ |
+#define GET_FROM_CACHE(Name, value_input_count, value_output_count) \ |
const Operator* SimplifiedOperatorBuilder::Name() { return &cache_.k##Name; } |
CHECKED_OP_LIST(GET_FROM_CACHE) |
#undef GET_FROM_CACHE |
@@ -447,13 +449,6 @@ const Operator* SimplifiedOperatorBuilder::ReferenceEqual(Type* type) { |
"ReferenceEqual", 2, 0, 0, 1, 0, 0); |
} |
-const Operator* SimplifiedOperatorBuilder::CheckBounds() { |
- // TODO(bmeurer): Cache this operator. Make it pure! |
- return new (zone()) |
- Operator(IrOpcode::kCheckBounds, Operator::kFoldable | Operator::kNoThrow, |
- "CheckBounds", 2, 1, 1, 1, 1, 0); |
-} |
- |
const Operator* SimplifiedOperatorBuilder::Allocate(PretenureFlag pretenure) { |
switch (pretenure) { |
case NOT_TENURED: |