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 "test/compiler-unittests/graph-unittest.h" | 5 #include "test/compiler-unittests/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 22 matching lines...) Expand all Loading... |
33 namespace compiler { | 33 namespace compiler { |
34 | 34 |
35 GraphTest::GraphTest(int num_parameters) : graph_(zone()) { | 35 GraphTest::GraphTest(int num_parameters) : graph_(zone()) { |
36 graph()->SetStart(graph()->NewNode(common()->Start(num_parameters))); | 36 graph()->SetStart(graph()->NewNode(common()->Start(num_parameters))); |
37 } | 37 } |
38 | 38 |
39 | 39 |
40 GraphTest::~GraphTest() {} | 40 GraphTest::~GraphTest() {} |
41 | 41 |
42 | 42 |
| 43 Node* GraphTest::Parameter(int32_t index) { |
| 44 return graph()->NewNode(common()->Parameter(index), graph()->start()); |
| 45 } |
| 46 |
| 47 |
| 48 Node* GraphTest::Float64Constant(double value) { |
| 49 return graph()->NewNode(common()->Float64Constant(value)); |
| 50 } |
| 51 |
| 52 |
| 53 Node* GraphTest::Int32Constant(int32_t value) { |
| 54 return graph()->NewNode(common()->Int32Constant(value)); |
| 55 } |
| 56 |
| 57 |
| 58 Node* GraphTest::NumberConstant(double value) { |
| 59 return graph()->NewNode(common()->NumberConstant(value)); |
| 60 } |
| 61 |
| 62 |
| 63 Node* GraphTest::HeapConstant(const PrintableUnique<HeapObject>& value) { |
| 64 return graph()->NewNode(common()->HeapConstant(value)); |
| 65 } |
| 66 |
| 67 |
| 68 Node* GraphTest::FalseConstant() { |
| 69 return HeapConstant(PrintableUnique<HeapObject>::CreateImmovable( |
| 70 zone(), factory()->false_value())); |
| 71 } |
| 72 |
| 73 |
| 74 Node* GraphTest::TrueConstant() { |
| 75 return HeapConstant(PrintableUnique<HeapObject>::CreateImmovable( |
| 76 zone(), factory()->true_value())); |
| 77 } |
| 78 |
| 79 |
| 80 Matcher<Node*> GraphTest::IsFalseConstant() { |
| 81 return IsHeapConstant(PrintableUnique<HeapObject>::CreateImmovable( |
| 82 zone(), factory()->false_value())); |
| 83 } |
| 84 |
| 85 |
| 86 Matcher<Node*> GraphTest::IsTrueConstant() { |
| 87 return IsHeapConstant(PrintableUnique<HeapObject>::CreateImmovable( |
| 88 zone(), factory()->true_value())); |
| 89 } |
| 90 |
43 namespace { | 91 namespace { |
44 | 92 |
45 template <typename T> | 93 template <typename T> |
46 bool PrintMatchAndExplain(const T& value, const char* value_name, | 94 bool PrintMatchAndExplain(const T& value, const char* value_name, |
47 const Matcher<T>& value_matcher, | 95 const Matcher<T>& value_matcher, |
48 MatchResultListener* listener) { | 96 MatchResultListener* listener) { |
49 StringMatchResultListener value_listener; | 97 StringMatchResultListener value_listener; |
50 if (!value_matcher.MatchAndExplain(value, &value_listener)) { | 98 if (!value_matcher.MatchAndExplain(value, &value_listener)) { |
51 *listener << "whose " << value_name << " " << value << " doesn't match"; | 99 *listener << "whose " << value_name << " " << value << " doesn't match"; |
52 if (value_listener.str() != "") { | 100 if (value_listener.str() != "") { |
(...skipping 539 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
592 IrOpcode::kHeapConstant, value_matcher)); | 640 IrOpcode::kHeapConstant, value_matcher)); |
593 } | 641 } |
594 | 642 |
595 | 643 |
596 Matcher<Node*> IsInt32Constant(const Matcher<int32_t>& value_matcher) { | 644 Matcher<Node*> IsInt32Constant(const Matcher<int32_t>& value_matcher) { |
597 return MakeMatcher( | 645 return MakeMatcher( |
598 new IsConstantMatcher<int32_t>(IrOpcode::kInt32Constant, value_matcher)); | 646 new IsConstantMatcher<int32_t>(IrOpcode::kInt32Constant, value_matcher)); |
599 } | 647 } |
600 | 648 |
601 | 649 |
| 650 Matcher<Node*> IsFloat64Constant(const Matcher<double>& value_matcher) { |
| 651 return MakeMatcher( |
| 652 new IsConstantMatcher<double>(IrOpcode::kFloat64Constant, value_matcher)); |
| 653 } |
| 654 |
| 655 |
602 Matcher<Node*> IsNumberConstant(const Matcher<double>& value_matcher) { | 656 Matcher<Node*> IsNumberConstant(const Matcher<double>& value_matcher) { |
603 return MakeMatcher( | 657 return MakeMatcher( |
604 new IsConstantMatcher<double>(IrOpcode::kNumberConstant, value_matcher)); | 658 new IsConstantMatcher<double>(IrOpcode::kNumberConstant, value_matcher)); |
605 } | 659 } |
606 | 660 |
607 | 661 |
608 Matcher<Node*> IsPhi(const Matcher<Node*>& value0_matcher, | 662 Matcher<Node*> IsPhi(const Matcher<Node*>& value0_matcher, |
609 const Matcher<Node*>& value1_matcher, | 663 const Matcher<Node*>& value1_matcher, |
610 const Matcher<Node*>& merge_matcher) { | 664 const Matcher<Node*>& merge_matcher) { |
611 return MakeMatcher( | 665 return MakeMatcher( |
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
683 IS_UNOP_MATCHER(ChangeInt32ToInt64) | 737 IS_UNOP_MATCHER(ChangeInt32ToInt64) |
684 IS_UNOP_MATCHER(ChangeUint32ToFloat64) | 738 IS_UNOP_MATCHER(ChangeUint32ToFloat64) |
685 IS_UNOP_MATCHER(ChangeUint32ToUint64) | 739 IS_UNOP_MATCHER(ChangeUint32ToUint64) |
686 IS_UNOP_MATCHER(TruncateFloat64ToInt32) | 740 IS_UNOP_MATCHER(TruncateFloat64ToInt32) |
687 IS_UNOP_MATCHER(TruncateInt64ToInt32) | 741 IS_UNOP_MATCHER(TruncateInt64ToInt32) |
688 #undef IS_UNOP_MATCHER | 742 #undef IS_UNOP_MATCHER |
689 | 743 |
690 } // namespace compiler | 744 } // namespace compiler |
691 } // namespace internal | 745 } // namespace internal |
692 } // namespace v8 | 746 } // namespace v8 |
OLD | NEW |