| OLD | NEW | 
|    1 // Copyright 2014 the V8 project authors. All rights reserved. |    1 // Copyright 2014 the V8 project authors. All rights reserved. | 
|    2 // Use of this source code is governed by a BSD-style license that can be |    2 // Use of this source code is governed by a BSD-style license that can be | 
|    3 // found in the LICENSE file. |    3 // found in the LICENSE file. | 
|    4  |    4  | 
|    5 #include "src/compiler/graph-unittest.h" |    5 #include "src/compiler/graph-unittest.h" | 
|    6  |    6  | 
|    7 #include <ostream>  // NOLINT(readability/streams) |    7 #include <ostream>  // NOLINT(readability/streams) | 
|    8  |    8  | 
|    9 #include "src/compiler/node-properties-inl.h" |    9 #include "src/compiler/node-properties-inl.h" | 
|   10  |   10  | 
| (...skipping 267 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  278                                  listener)); |  278                                  listener)); | 
|  279   } |  279   } | 
|  280  |  280  | 
|  281  private: |  281  private: | 
|  282   const Matcher<T> value_matcher_; |  282   const Matcher<T> value_matcher_; | 
|  283 }; |  283 }; | 
|  284  |  284  | 
|  285  |  285  | 
|  286 class IsPhiMatcher FINAL : public NodeMatcher { |  286 class IsPhiMatcher FINAL : public NodeMatcher { | 
|  287  public: |  287  public: | 
|  288   IsPhiMatcher(const Matcher<Node*>& value0_matcher, |  288   IsPhiMatcher(const Matcher<MachineType>& type_matcher, | 
 |  289                const Matcher<Node*>& value0_matcher, | 
|  289                const Matcher<Node*>& value1_matcher, |  290                const Matcher<Node*>& value1_matcher, | 
|  290                const Matcher<Node*>& control_matcher) |  291                const Matcher<Node*>& control_matcher) | 
|  291       : NodeMatcher(IrOpcode::kPhi), |  292       : NodeMatcher(IrOpcode::kPhi), | 
 |  293         type_matcher_(type_matcher), | 
|  292         value0_matcher_(value0_matcher), |  294         value0_matcher_(value0_matcher), | 
|  293         value1_matcher_(value1_matcher), |  295         value1_matcher_(value1_matcher), | 
|  294         control_matcher_(control_matcher) {} |  296         control_matcher_(control_matcher) {} | 
|  295  |  297  | 
|  296   virtual void DescribeTo(std::ostream* os) const OVERRIDE { |  298   virtual void DescribeTo(std::ostream* os) const OVERRIDE { | 
|  297     NodeMatcher::DescribeTo(os); |  299     NodeMatcher::DescribeTo(os); | 
|  298     *os << " whose value0 ("; |  300     *os << " whose type ("; | 
 |  301     type_matcher_.DescribeTo(os); | 
 |  302     *os << "), value0 ("; | 
|  299     value0_matcher_.DescribeTo(os); |  303     value0_matcher_.DescribeTo(os); | 
|  300     *os << "), value1 ("; |  304     *os << "), value1 ("; | 
|  301     value1_matcher_.DescribeTo(os); |  305     value1_matcher_.DescribeTo(os); | 
|  302     *os << ") and control ("; |  306     *os << ") and control ("; | 
|  303     control_matcher_.DescribeTo(os); |  307     control_matcher_.DescribeTo(os); | 
|  304     *os << ")"; |  308     *os << ")"; | 
|  305   } |  309   } | 
|  306  |  310  | 
|  307   virtual bool MatchAndExplain(Node* node, MatchResultListener* listener) const |  311   virtual bool MatchAndExplain(Node* node, MatchResultListener* listener) const | 
|  308       OVERRIDE { |  312       OVERRIDE { | 
|  309     return (NodeMatcher::MatchAndExplain(node, listener) && |  313     return (NodeMatcher::MatchAndExplain(node, listener) && | 
 |  314             PrintMatchAndExplain(OpParameter<MachineType>(node), "type", | 
 |  315                                  type_matcher_, listener) && | 
|  310             PrintMatchAndExplain(NodeProperties::GetValueInput(node, 0), |  316             PrintMatchAndExplain(NodeProperties::GetValueInput(node, 0), | 
|  311                                  "value0", value0_matcher_, listener) && |  317                                  "value0", value0_matcher_, listener) && | 
|  312             PrintMatchAndExplain(NodeProperties::GetValueInput(node, 1), |  318             PrintMatchAndExplain(NodeProperties::GetValueInput(node, 1), | 
|  313                                  "value1", value1_matcher_, listener) && |  319                                  "value1", value1_matcher_, listener) && | 
|  314             PrintMatchAndExplain(NodeProperties::GetControlInput(node), |  320             PrintMatchAndExplain(NodeProperties::GetControlInput(node), | 
|  315                                  "control", control_matcher_, listener)); |  321                                  "control", control_matcher_, listener)); | 
|  316   } |  322   } | 
|  317  |  323  | 
|  318  private: |  324  private: | 
 |  325   const Matcher<MachineType> type_matcher_; | 
|  319   const Matcher<Node*> value0_matcher_; |  326   const Matcher<Node*> value0_matcher_; | 
|  320   const Matcher<Node*> value1_matcher_; |  327   const Matcher<Node*> value1_matcher_; | 
|  321   const Matcher<Node*> control_matcher_; |  328   const Matcher<Node*> control_matcher_; | 
|  322 }; |  329 }; | 
|  323  |  330  | 
|  324  |  331  | 
|  325 class IsProjectionMatcher FINAL : public NodeMatcher { |  332 class IsProjectionMatcher FINAL : public NodeMatcher { | 
|  326  public: |  333  public: | 
|  327   IsProjectionMatcher(const Matcher<int32_t>& index_matcher, |  334   IsProjectionMatcher(const Matcher<int32_t>& index_matcher, | 
|  328                       const Matcher<Node*>& base_matcher) |  335                       const Matcher<Node*>& base_matcher) | 
| (...skipping 333 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  662       new IsConstantMatcher<double>(IrOpcode::kFloat64Constant, value_matcher)); |  669       new IsConstantMatcher<double>(IrOpcode::kFloat64Constant, value_matcher)); | 
|  663 } |  670 } | 
|  664  |  671  | 
|  665  |  672  | 
|  666 Matcher<Node*> IsNumberConstant(const Matcher<double>& value_matcher) { |  673 Matcher<Node*> IsNumberConstant(const Matcher<double>& value_matcher) { | 
|  667   return MakeMatcher( |  674   return MakeMatcher( | 
|  668       new IsConstantMatcher<double>(IrOpcode::kNumberConstant, value_matcher)); |  675       new IsConstantMatcher<double>(IrOpcode::kNumberConstant, value_matcher)); | 
|  669 } |  676 } | 
|  670  |  677  | 
|  671  |  678  | 
|  672 Matcher<Node*> IsPhi(const Matcher<Node*>& value0_matcher, |  679 Matcher<Node*> IsPhi(const Matcher<MachineType>& type_matcher, | 
 |  680                      const Matcher<Node*>& value0_matcher, | 
|  673                      const Matcher<Node*>& value1_matcher, |  681                      const Matcher<Node*>& value1_matcher, | 
|  674                      const Matcher<Node*>& merge_matcher) { |  682                      const Matcher<Node*>& merge_matcher) { | 
|  675   return MakeMatcher( |  683   return MakeMatcher(new IsPhiMatcher(type_matcher, value0_matcher, | 
|  676       new IsPhiMatcher(value0_matcher, value1_matcher, merge_matcher)); |  684                                       value1_matcher, merge_matcher)); | 
|  677 } |  685 } | 
|  678  |  686  | 
|  679  |  687  | 
|  680 Matcher<Node*> IsProjection(const Matcher<int32_t>& index_matcher, |  688 Matcher<Node*> IsProjection(const Matcher<int32_t>& index_matcher, | 
|  681                             const Matcher<Node*>& base_matcher) { |  689                             const Matcher<Node*>& base_matcher) { | 
|  682   return MakeMatcher(new IsProjectionMatcher(index_matcher, base_matcher)); |  690   return MakeMatcher(new IsProjectionMatcher(index_matcher, base_matcher)); | 
|  683 } |  691 } | 
|  684  |  692  | 
|  685  |  693  | 
|  686 Matcher<Node*> IsCall(const Matcher<CallDescriptor*>& descriptor_matcher, |  694 Matcher<Node*> IsCall(const Matcher<CallDescriptor*>& descriptor_matcher, | 
| (...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  748 IS_UNOP_MATCHER(ChangeInt32ToInt64) |  756 IS_UNOP_MATCHER(ChangeInt32ToInt64) | 
|  749 IS_UNOP_MATCHER(ChangeUint32ToFloat64) |  757 IS_UNOP_MATCHER(ChangeUint32ToFloat64) | 
|  750 IS_UNOP_MATCHER(ChangeUint32ToUint64) |  758 IS_UNOP_MATCHER(ChangeUint32ToUint64) | 
|  751 IS_UNOP_MATCHER(TruncateFloat64ToInt32) |  759 IS_UNOP_MATCHER(TruncateFloat64ToInt32) | 
|  752 IS_UNOP_MATCHER(TruncateInt64ToInt32) |  760 IS_UNOP_MATCHER(TruncateInt64ToInt32) | 
|  753 #undef IS_UNOP_MATCHER |  761 #undef IS_UNOP_MATCHER | 
|  754  |  762  | 
|  755 }  // namespace compiler |  763 }  // namespace compiler | 
|  756 }  // namespace internal |  764 }  // namespace internal | 
|  757 }  // namespace v8 |  765 }  // namespace v8 | 
| OLD | NEW |