| Index: src/compiler/node-matchers.h
|
| diff --git a/src/compiler/node-matchers.h b/src/compiler/node-matchers.h
|
| index 718803f314243bec661bccf0dbf99e495f16d724..3e64ddd4f7b337202cd93ceac55a1911f3a26181 100644
|
| --- a/src/compiler/node-matchers.h
|
| +++ b/src/compiler/node-matchers.h
|
| @@ -96,6 +96,41 @@ typedef FloatMatcher<double, IrOpcode::kFloat64Constant> Float64Matcher;
|
| typedef FloatMatcher<double, IrOpcode::kNumberConstant> NumberMatcher;
|
|
|
|
|
| +// A pattern matcher for any numberic constant.
|
| +struct NumericValueMatcher : public NodeMatcher {
|
| + explicit NumericValueMatcher(Node* const node) : NodeMatcher(node) {
|
| + switch (opcode()) {
|
| + case IrOpcode::kInt32Constant:
|
| + has_value_ = true;
|
| + value_ = OpParameter<int32_t>(node);
|
| + break;
|
| + case IrOpcode::kFloat32Constant:
|
| + has_value_ = true;
|
| + value_ = OpParameter<float>(node);
|
| + break;
|
| + case IrOpcode::kFloat64Constant:
|
| + case IrOpcode::kNumberConstant:
|
| + has_value_ = true;
|
| + value_ = OpParameter<double>(node);
|
| + break;
|
| + default:
|
| + has_value_ = false;
|
| + break;
|
| + }
|
| + }
|
| +
|
| + bool HasValue() const { return has_value_; }
|
| + double Value() const {
|
| + DCHECK(HasValue());
|
| + return value_;
|
| + }
|
| +
|
| + private:
|
| + double value_;
|
| + bool has_value_;
|
| +};
|
| +
|
| +
|
| // A pattern matcher for heap object constants.
|
| template <typename T>
|
| struct HeapObjectMatcher FINAL
|
|
|