| 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/unittests/compiler/node-test-utils.h" | 5 #include "test/unittests/compiler/node-test-utils.h" |
| 6 | 6 |
| 7 #include "src/compiler/node-properties-inl.h" | 7 #include "src/compiler/node-properties-inl.h" |
| 8 #include "src/compiler/simplified-operator.h" | 8 #include "src/compiler/simplified-operator.h" |
| 9 | 9 |
| 10 using testing::_; | 10 using testing::_; |
| (...skipping 515 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 526 } | 526 } |
| 527 | 527 |
| 528 private: | 528 private: |
| 529 const Matcher<FieldAccess> access_matcher_; | 529 const Matcher<FieldAccess> access_matcher_; |
| 530 const Matcher<Node*> base_matcher_; | 530 const Matcher<Node*> base_matcher_; |
| 531 const Matcher<Node*> effect_matcher_; | 531 const Matcher<Node*> effect_matcher_; |
| 532 const Matcher<Node*> control_matcher_; | 532 const Matcher<Node*> control_matcher_; |
| 533 }; | 533 }; |
| 534 | 534 |
| 535 | 535 |
| 536 class IsLoadBufferMatcher FINAL : public NodeMatcher { |
| 537 public: |
| 538 IsLoadBufferMatcher(const Matcher<BufferAccess>& access_matcher, |
| 539 const Matcher<Node*>& buffer_matcher, |
| 540 const Matcher<Node*>& offset_matcher, |
| 541 const Matcher<Node*>& length_matcher, |
| 542 const Matcher<Node*>& effect_matcher, |
| 543 const Matcher<Node*>& control_matcher) |
| 544 : NodeMatcher(IrOpcode::kLoadBuffer), |
| 545 access_matcher_(access_matcher), |
| 546 buffer_matcher_(buffer_matcher), |
| 547 offset_matcher_(offset_matcher), |
| 548 length_matcher_(length_matcher), |
| 549 effect_matcher_(effect_matcher), |
| 550 control_matcher_(control_matcher) {} |
| 551 |
| 552 virtual void DescribeTo(std::ostream* os) const OVERRIDE { |
| 553 NodeMatcher::DescribeTo(os); |
| 554 *os << " whose access ("; |
| 555 access_matcher_.DescribeTo(os); |
| 556 *os << "), buffer ("; |
| 557 buffer_matcher_.DescribeTo(os); |
| 558 *os << "), offset ("; |
| 559 offset_matcher_.DescribeTo(os); |
| 560 *os << "), length ("; |
| 561 length_matcher_.DescribeTo(os); |
| 562 *os << "), effect ("; |
| 563 effect_matcher_.DescribeTo(os); |
| 564 *os << ") and control ("; |
| 565 control_matcher_.DescribeTo(os); |
| 566 *os << ")"; |
| 567 } |
| 568 |
| 569 virtual bool MatchAndExplain(Node* node, |
| 570 MatchResultListener* listener) const OVERRIDE { |
| 571 return (NodeMatcher::MatchAndExplain(node, listener) && |
| 572 PrintMatchAndExplain(BufferAccessOf(node->op()), "access", |
| 573 access_matcher_, listener) && |
| 574 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 0), |
| 575 "buffer", buffer_matcher_, listener) && |
| 576 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 1), |
| 577 "offset", offset_matcher_, listener) && |
| 578 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 2), |
| 579 "length", length_matcher_, listener) && |
| 580 PrintMatchAndExplain(NodeProperties::GetEffectInput(node), "effect", |
| 581 effect_matcher_, listener) && |
| 582 PrintMatchAndExplain(NodeProperties::GetControlInput(node), |
| 583 "control", control_matcher_, listener)); |
| 584 } |
| 585 |
| 586 private: |
| 587 const Matcher<BufferAccess> access_matcher_; |
| 588 const Matcher<Node*> buffer_matcher_; |
| 589 const Matcher<Node*> offset_matcher_; |
| 590 const Matcher<Node*> length_matcher_; |
| 591 const Matcher<Node*> effect_matcher_; |
| 592 const Matcher<Node*> control_matcher_; |
| 593 }; |
| 594 |
| 595 |
| 596 class IsStoreBufferMatcher FINAL : public NodeMatcher { |
| 597 public: |
| 598 IsStoreBufferMatcher(const Matcher<BufferAccess>& access_matcher, |
| 599 const Matcher<Node*>& buffer_matcher, |
| 600 const Matcher<Node*>& offset_matcher, |
| 601 const Matcher<Node*>& length_matcher, |
| 602 const Matcher<Node*>& value_matcher, |
| 603 const Matcher<Node*>& effect_matcher, |
| 604 const Matcher<Node*>& control_matcher) |
| 605 : NodeMatcher(IrOpcode::kStoreBuffer), |
| 606 access_matcher_(access_matcher), |
| 607 buffer_matcher_(buffer_matcher), |
| 608 offset_matcher_(offset_matcher), |
| 609 length_matcher_(length_matcher), |
| 610 value_matcher_(value_matcher), |
| 611 effect_matcher_(effect_matcher), |
| 612 control_matcher_(control_matcher) {} |
| 613 |
| 614 virtual void DescribeTo(std::ostream* os) const OVERRIDE { |
| 615 NodeMatcher::DescribeTo(os); |
| 616 *os << " whose access ("; |
| 617 access_matcher_.DescribeTo(os); |
| 618 *os << "), buffer ("; |
| 619 buffer_matcher_.DescribeTo(os); |
| 620 *os << "), offset ("; |
| 621 offset_matcher_.DescribeTo(os); |
| 622 *os << "), length ("; |
| 623 length_matcher_.DescribeTo(os); |
| 624 *os << "), value ("; |
| 625 value_matcher_.DescribeTo(os); |
| 626 *os << "), effect ("; |
| 627 effect_matcher_.DescribeTo(os); |
| 628 *os << ") and control ("; |
| 629 control_matcher_.DescribeTo(os); |
| 630 *os << ")"; |
| 631 } |
| 632 |
| 633 virtual bool MatchAndExplain(Node* node, |
| 634 MatchResultListener* listener) const OVERRIDE { |
| 635 return (NodeMatcher::MatchAndExplain(node, listener) && |
| 636 PrintMatchAndExplain(BufferAccessOf(node->op()), "access", |
| 637 access_matcher_, listener) && |
| 638 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 0), |
| 639 "buffer", buffer_matcher_, listener) && |
| 640 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 1), |
| 641 "offset", offset_matcher_, listener) && |
| 642 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 2), |
| 643 "length", length_matcher_, listener) && |
| 644 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 3), |
| 645 "value", value_matcher_, listener) && |
| 646 PrintMatchAndExplain(NodeProperties::GetEffectInput(node), "effect", |
| 647 effect_matcher_, listener) && |
| 648 PrintMatchAndExplain(NodeProperties::GetControlInput(node), |
| 649 "control", control_matcher_, listener)); |
| 650 } |
| 651 |
| 652 private: |
| 653 const Matcher<BufferAccess> access_matcher_; |
| 654 const Matcher<Node*> buffer_matcher_; |
| 655 const Matcher<Node*> offset_matcher_; |
| 656 const Matcher<Node*> length_matcher_; |
| 657 const Matcher<Node*> value_matcher_; |
| 658 const Matcher<Node*> effect_matcher_; |
| 659 const Matcher<Node*> control_matcher_; |
| 660 }; |
| 661 |
| 662 |
| 536 class IsLoadElementMatcher FINAL : public NodeMatcher { | 663 class IsLoadElementMatcher FINAL : public NodeMatcher { |
| 537 public: | 664 public: |
| 538 IsLoadElementMatcher(const Matcher<ElementAccess>& access_matcher, | 665 IsLoadElementMatcher(const Matcher<ElementAccess>& access_matcher, |
| 539 const Matcher<Node*>& base_matcher, | 666 const Matcher<Node*>& base_matcher, |
| 540 const Matcher<Node*>& index_matcher, | 667 const Matcher<Node*>& index_matcher, |
| 541 const Matcher<Node*>& length_matcher, | 668 const Matcher<Node*>& effect_matcher, |
| 542 const Matcher<Node*>& effect_matcher) | 669 const Matcher<Node*>& control_matcher) |
| 543 : NodeMatcher(IrOpcode::kLoadElement), | 670 : NodeMatcher(IrOpcode::kLoadElement), |
| 544 access_matcher_(access_matcher), | 671 access_matcher_(access_matcher), |
| 545 base_matcher_(base_matcher), | 672 base_matcher_(base_matcher), |
| 546 index_matcher_(index_matcher), | 673 index_matcher_(index_matcher), |
| 547 length_matcher_(length_matcher), | 674 effect_matcher_(effect_matcher), |
| 548 effect_matcher_(effect_matcher) {} | 675 control_matcher_(control_matcher) {} |
| 549 | 676 |
| 550 virtual void DescribeTo(std::ostream* os) const OVERRIDE { | 677 virtual void DescribeTo(std::ostream* os) const OVERRIDE { |
| 551 NodeMatcher::DescribeTo(os); | 678 NodeMatcher::DescribeTo(os); |
| 552 *os << " whose access ("; | 679 *os << " whose access ("; |
| 553 access_matcher_.DescribeTo(os); | 680 access_matcher_.DescribeTo(os); |
| 554 *os << "), base ("; | 681 *os << "), base ("; |
| 555 base_matcher_.DescribeTo(os); | 682 base_matcher_.DescribeTo(os); |
| 556 *os << "), index ("; | 683 *os << "), index ("; |
| 557 index_matcher_.DescribeTo(os); | 684 index_matcher_.DescribeTo(os); |
| 558 *os << "), length ("; | 685 *os << "), effect ("; |
| 559 length_matcher_.DescribeTo(os); | |
| 560 *os << ") and effect ("; | |
| 561 effect_matcher_.DescribeTo(os); | 686 effect_matcher_.DescribeTo(os); |
| 687 *os << ") and control ("; |
| 688 control_matcher_.DescribeTo(os); |
| 562 *os << ")"; | 689 *os << ")"; |
| 563 } | 690 } |
| 564 | 691 |
| 565 virtual bool MatchAndExplain(Node* node, | 692 virtual bool MatchAndExplain(Node* node, |
| 566 MatchResultListener* listener) const OVERRIDE { | 693 MatchResultListener* listener) const OVERRIDE { |
| 567 return (NodeMatcher::MatchAndExplain(node, listener) && | 694 return (NodeMatcher::MatchAndExplain(node, listener) && |
| 568 PrintMatchAndExplain(OpParameter<ElementAccess>(node), "access", | 695 PrintMatchAndExplain(OpParameter<ElementAccess>(node), "access", |
| 569 access_matcher_, listener) && | 696 access_matcher_, listener) && |
| 570 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 0), "base", | 697 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 0), "base", |
| 571 base_matcher_, listener) && | 698 base_matcher_, listener) && |
| 572 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 1), | 699 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 1), |
| 573 "index", index_matcher_, listener) && | 700 "index", index_matcher_, listener) && |
| 574 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 2), | |
| 575 "length", length_matcher_, listener) && | |
| 576 PrintMatchAndExplain(NodeProperties::GetEffectInput(node), "effect", | 701 PrintMatchAndExplain(NodeProperties::GetEffectInput(node), "effect", |
| 577 effect_matcher_, listener)); | 702 effect_matcher_, listener) && |
| 703 PrintMatchAndExplain(NodeProperties::GetControlInput(node), |
| 704 "control", control_matcher_, listener)); |
| 578 } | 705 } |
| 579 | 706 |
| 580 private: | 707 private: |
| 581 const Matcher<ElementAccess> access_matcher_; | 708 const Matcher<ElementAccess> access_matcher_; |
| 582 const Matcher<Node*> base_matcher_; | 709 const Matcher<Node*> base_matcher_; |
| 583 const Matcher<Node*> index_matcher_; | 710 const Matcher<Node*> index_matcher_; |
| 584 const Matcher<Node*> length_matcher_; | |
| 585 const Matcher<Node*> effect_matcher_; | 711 const Matcher<Node*> effect_matcher_; |
| 712 const Matcher<Node*> control_matcher_; |
| 586 }; | 713 }; |
| 587 | 714 |
| 588 | 715 |
| 589 class IsStoreElementMatcher FINAL : public NodeMatcher { | 716 class IsStoreElementMatcher FINAL : public NodeMatcher { |
| 590 public: | 717 public: |
| 591 IsStoreElementMatcher(const Matcher<ElementAccess>& access_matcher, | 718 IsStoreElementMatcher(const Matcher<ElementAccess>& access_matcher, |
| 592 const Matcher<Node*>& base_matcher, | 719 const Matcher<Node*>& base_matcher, |
| 593 const Matcher<Node*>& index_matcher, | 720 const Matcher<Node*>& index_matcher, |
| 594 const Matcher<Node*>& length_matcher, | |
| 595 const Matcher<Node*>& value_matcher, | 721 const Matcher<Node*>& value_matcher, |
| 596 const Matcher<Node*>& effect_matcher, | 722 const Matcher<Node*>& effect_matcher, |
| 597 const Matcher<Node*>& control_matcher) | 723 const Matcher<Node*>& control_matcher) |
| 598 : NodeMatcher(IrOpcode::kStoreElement), | 724 : NodeMatcher(IrOpcode::kStoreElement), |
| 599 access_matcher_(access_matcher), | 725 access_matcher_(access_matcher), |
| 600 base_matcher_(base_matcher), | 726 base_matcher_(base_matcher), |
| 601 index_matcher_(index_matcher), | 727 index_matcher_(index_matcher), |
| 602 length_matcher_(length_matcher), | |
| 603 value_matcher_(value_matcher), | 728 value_matcher_(value_matcher), |
| 604 effect_matcher_(effect_matcher), | 729 effect_matcher_(effect_matcher), |
| 605 control_matcher_(control_matcher) {} | 730 control_matcher_(control_matcher) {} |
| 606 | 731 |
| 607 virtual void DescribeTo(std::ostream* os) const OVERRIDE { | 732 virtual void DescribeTo(std::ostream* os) const OVERRIDE { |
| 608 NodeMatcher::DescribeTo(os); | 733 NodeMatcher::DescribeTo(os); |
| 609 *os << " whose access ("; | 734 *os << " whose access ("; |
| 610 access_matcher_.DescribeTo(os); | 735 access_matcher_.DescribeTo(os); |
| 611 *os << "), base ("; | 736 *os << "), base ("; |
| 612 base_matcher_.DescribeTo(os); | 737 base_matcher_.DescribeTo(os); |
| 613 *os << "), index ("; | 738 *os << "), index ("; |
| 614 index_matcher_.DescribeTo(os); | 739 index_matcher_.DescribeTo(os); |
| 615 *os << "), length ("; | |
| 616 length_matcher_.DescribeTo(os); | |
| 617 *os << "), value ("; | 740 *os << "), value ("; |
| 618 value_matcher_.DescribeTo(os); | 741 value_matcher_.DescribeTo(os); |
| 619 *os << "), effect ("; | 742 *os << "), effect ("; |
| 620 effect_matcher_.DescribeTo(os); | 743 effect_matcher_.DescribeTo(os); |
| 621 *os << ") and control ("; | 744 *os << ") and control ("; |
| 622 control_matcher_.DescribeTo(os); | 745 control_matcher_.DescribeTo(os); |
| 623 *os << ")"; | 746 *os << ")"; |
| 624 } | 747 } |
| 625 | 748 |
| 626 virtual bool MatchAndExplain(Node* node, | 749 virtual bool MatchAndExplain(Node* node, |
| 627 MatchResultListener* listener) const OVERRIDE { | 750 MatchResultListener* listener) const OVERRIDE { |
| 628 return (NodeMatcher::MatchAndExplain(node, listener) && | 751 return (NodeMatcher::MatchAndExplain(node, listener) && |
| 629 PrintMatchAndExplain(OpParameter<ElementAccess>(node), "access", | 752 PrintMatchAndExplain(OpParameter<ElementAccess>(node), "access", |
| 630 access_matcher_, listener) && | 753 access_matcher_, listener) && |
| 631 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 0), "base", | 754 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 0), "base", |
| 632 base_matcher_, listener) && | 755 base_matcher_, listener) && |
| 633 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 1), | 756 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 1), |
| 634 "index", index_matcher_, listener) && | 757 "index", index_matcher_, listener) && |
| 635 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 2), | 758 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 2), |
| 636 "length", length_matcher_, listener) && | |
| 637 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 3), | |
| 638 "value", value_matcher_, listener) && | 759 "value", value_matcher_, listener) && |
| 639 PrintMatchAndExplain(NodeProperties::GetEffectInput(node), "effect", | 760 PrintMatchAndExplain(NodeProperties::GetEffectInput(node), "effect", |
| 640 effect_matcher_, listener) && | 761 effect_matcher_, listener) && |
| 641 PrintMatchAndExplain(NodeProperties::GetControlInput(node), | 762 PrintMatchAndExplain(NodeProperties::GetControlInput(node), |
| 642 "control", control_matcher_, listener)); | 763 "control", control_matcher_, listener)); |
| 643 } | 764 } |
| 644 | 765 |
| 645 private: | 766 private: |
| 646 const Matcher<ElementAccess> access_matcher_; | 767 const Matcher<ElementAccess> access_matcher_; |
| 647 const Matcher<Node*> base_matcher_; | 768 const Matcher<Node*> base_matcher_; |
| 648 const Matcher<Node*> index_matcher_; | 769 const Matcher<Node*> index_matcher_; |
| 649 const Matcher<Node*> length_matcher_; | |
| 650 const Matcher<Node*> value_matcher_; | 770 const Matcher<Node*> value_matcher_; |
| 651 const Matcher<Node*> effect_matcher_; | 771 const Matcher<Node*> effect_matcher_; |
| 652 const Matcher<Node*> control_matcher_; | 772 const Matcher<Node*> control_matcher_; |
| 653 }; | 773 }; |
| 654 | 774 |
| 655 | 775 |
| 656 class IsLoadMatcher FINAL : public NodeMatcher { | 776 class IsLoadMatcher FINAL : public NodeMatcher { |
| 657 public: | 777 public: |
| 658 IsLoadMatcher(const Matcher<LoadRepresentation>& rep_matcher, | 778 IsLoadMatcher(const Matcher<LoadRepresentation>& rep_matcher, |
| 659 const Matcher<Node*>& base_matcher, | 779 const Matcher<Node*>& base_matcher, |
| (...skipping 345 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1005 | 1125 |
| 1006 Matcher<Node*> IsLoadField(const Matcher<FieldAccess>& access_matcher, | 1126 Matcher<Node*> IsLoadField(const Matcher<FieldAccess>& access_matcher, |
| 1007 const Matcher<Node*>& base_matcher, | 1127 const Matcher<Node*>& base_matcher, |
| 1008 const Matcher<Node*>& effect_matcher, | 1128 const Matcher<Node*>& effect_matcher, |
| 1009 const Matcher<Node*>& control_matcher) { | 1129 const Matcher<Node*>& control_matcher) { |
| 1010 return MakeMatcher(new IsLoadFieldMatcher(access_matcher, base_matcher, | 1130 return MakeMatcher(new IsLoadFieldMatcher(access_matcher, base_matcher, |
| 1011 effect_matcher, control_matcher)); | 1131 effect_matcher, control_matcher)); |
| 1012 } | 1132 } |
| 1013 | 1133 |
| 1014 | 1134 |
| 1135 Matcher<Node*> IsLoadBuffer(const Matcher<BufferAccess>& access_matcher, |
| 1136 const Matcher<Node*>& buffer_matcher, |
| 1137 const Matcher<Node*>& offset_matcher, |
| 1138 const Matcher<Node*>& length_matcher, |
| 1139 const Matcher<Node*>& effect_matcher, |
| 1140 const Matcher<Node*>& control_matcher) { |
| 1141 return MakeMatcher(new IsLoadBufferMatcher(access_matcher, buffer_matcher, |
| 1142 offset_matcher, length_matcher, |
| 1143 effect_matcher, control_matcher)); |
| 1144 } |
| 1145 |
| 1146 |
| 1147 Matcher<Node*> IsStoreBuffer(const Matcher<BufferAccess>& access_matcher, |
| 1148 const Matcher<Node*>& buffer_matcher, |
| 1149 const Matcher<Node*>& offset_matcher, |
| 1150 const Matcher<Node*>& length_matcher, |
| 1151 const Matcher<Node*>& value_matcher, |
| 1152 const Matcher<Node*>& effect_matcher, |
| 1153 const Matcher<Node*>& control_matcher) { |
| 1154 return MakeMatcher(new IsStoreBufferMatcher( |
| 1155 access_matcher, buffer_matcher, offset_matcher, length_matcher, |
| 1156 value_matcher, effect_matcher, control_matcher)); |
| 1157 } |
| 1158 |
| 1159 |
| 1015 Matcher<Node*> IsLoadElement(const Matcher<ElementAccess>& access_matcher, | 1160 Matcher<Node*> IsLoadElement(const Matcher<ElementAccess>& access_matcher, |
| 1016 const Matcher<Node*>& base_matcher, | 1161 const Matcher<Node*>& base_matcher, |
| 1017 const Matcher<Node*>& index_matcher, | 1162 const Matcher<Node*>& index_matcher, |
| 1018 const Matcher<Node*>& length_matcher, | 1163 const Matcher<Node*>& effect_matcher, |
| 1019 const Matcher<Node*>& effect_matcher) { | 1164 const Matcher<Node*>& control_matcher) { |
| 1020 return MakeMatcher(new IsLoadElementMatcher(access_matcher, base_matcher, | 1165 return MakeMatcher(new IsLoadElementMatcher(access_matcher, base_matcher, |
| 1021 index_matcher, length_matcher, | 1166 index_matcher, effect_matcher, |
| 1022 effect_matcher)); | 1167 control_matcher)); |
| 1023 } | 1168 } |
| 1024 | 1169 |
| 1025 | 1170 |
| 1026 Matcher<Node*> IsStoreElement(const Matcher<ElementAccess>& access_matcher, | 1171 Matcher<Node*> IsStoreElement(const Matcher<ElementAccess>& access_matcher, |
| 1027 const Matcher<Node*>& base_matcher, | 1172 const Matcher<Node*>& base_matcher, |
| 1028 const Matcher<Node*>& index_matcher, | 1173 const Matcher<Node*>& index_matcher, |
| 1029 const Matcher<Node*>& length_matcher, | |
| 1030 const Matcher<Node*>& value_matcher, | 1174 const Matcher<Node*>& value_matcher, |
| 1031 const Matcher<Node*>& effect_matcher, | 1175 const Matcher<Node*>& effect_matcher, |
| 1032 const Matcher<Node*>& control_matcher) { | 1176 const Matcher<Node*>& control_matcher) { |
| 1033 return MakeMatcher(new IsStoreElementMatcher( | 1177 return MakeMatcher(new IsStoreElementMatcher( |
| 1034 access_matcher, base_matcher, index_matcher, length_matcher, | 1178 access_matcher, base_matcher, index_matcher, value_matcher, |
| 1035 value_matcher, effect_matcher, control_matcher)); | 1179 effect_matcher, control_matcher)); |
| 1036 } | 1180 } |
| 1037 | 1181 |
| 1038 | 1182 |
| 1039 Matcher<Node*> IsLoad(const Matcher<LoadRepresentation>& rep_matcher, | 1183 Matcher<Node*> IsLoad(const Matcher<LoadRepresentation>& rep_matcher, |
| 1040 const Matcher<Node*>& base_matcher, | 1184 const Matcher<Node*>& base_matcher, |
| 1041 const Matcher<Node*>& index_matcher, | 1185 const Matcher<Node*>& index_matcher, |
| 1042 const Matcher<Node*>& effect_matcher, | 1186 const Matcher<Node*>& effect_matcher, |
| 1043 const Matcher<Node*>& control_matcher) { | 1187 const Matcher<Node*>& control_matcher) { |
| 1044 return MakeMatcher(new IsLoadMatcher(rep_matcher, base_matcher, index_matcher, | 1188 return MakeMatcher(new IsLoadMatcher(rep_matcher, base_matcher, index_matcher, |
| 1045 effect_matcher, control_matcher)); | 1189 effect_matcher, control_matcher)); |
| (...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1118 IS_UNOP_MATCHER(Float64Ceil) | 1262 IS_UNOP_MATCHER(Float64Ceil) |
| 1119 IS_UNOP_MATCHER(Float64RoundTruncate) | 1263 IS_UNOP_MATCHER(Float64RoundTruncate) |
| 1120 IS_UNOP_MATCHER(Float64RoundTiesAway) | 1264 IS_UNOP_MATCHER(Float64RoundTiesAway) |
| 1121 IS_UNOP_MATCHER(NumberToInt32) | 1265 IS_UNOP_MATCHER(NumberToInt32) |
| 1122 IS_UNOP_MATCHER(NumberToUint32) | 1266 IS_UNOP_MATCHER(NumberToUint32) |
| 1123 #undef IS_UNOP_MATCHER | 1267 #undef IS_UNOP_MATCHER |
| 1124 | 1268 |
| 1125 } // namespace compiler | 1269 } // namespace compiler |
| 1126 } // namespace internal | 1270 } // namespace internal |
| 1127 } // namespace v8 | 1271 } // namespace v8 |
| OLD | NEW |