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/v8.h" | 5 #include "src/v8.h" |
6 #include "test/cctest/cctest.h" | 6 #include "test/cctest/cctest.h" |
7 | 7 |
8 #include "src/compiler/common-operator.h" | 8 #include "src/compiler/common-operator.h" |
9 #include "src/compiler/generic-node-inl.h" | 9 #include "src/compiler/generic-node-inl.h" |
10 #include "src/compiler/generic-node.h" | 10 #include "src/compiler/generic-node.h" |
(...skipping 587 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
598 | 598 |
599 BasicBlock* loop1[] = {B, C, D, E}; | 599 BasicBlock* loop1[] = {B, C, D, E}; |
600 CheckLoopContains(loop1, 4); | 600 CheckLoopContains(loop1, 4); |
601 } | 601 } |
602 | 602 |
603 | 603 |
604 TEST(BuildScheduleEmpty) { | 604 TEST(BuildScheduleEmpty) { |
605 HandleAndZoneScope scope; | 605 HandleAndZoneScope scope; |
606 Graph graph(scope.main_zone()); | 606 Graph graph(scope.main_zone()); |
607 CommonOperatorBuilder builder(scope.main_zone()); | 607 CommonOperatorBuilder builder(scope.main_zone()); |
608 graph.SetStart(graph.NewNode(builder.Start())); | 608 graph.SetStart(graph.NewNode(builder.Start(0))); |
609 graph.SetEnd(graph.NewNode(builder.End(), graph.start())); | 609 graph.SetEnd(graph.NewNode(builder.End(), graph.start())); |
610 | 610 |
611 Scheduler scheduler(scope.main_zone()); | 611 Scheduler scheduler(scope.main_zone()); |
612 USE(scheduler.NewSchedule(&graph)); | 612 USE(scheduler.NewSchedule(&graph)); |
613 } | 613 } |
614 | 614 |
615 | 615 |
616 TEST(BuildScheduleOneParameter) { | 616 TEST(BuildScheduleOneParameter) { |
617 HandleAndZoneScope scope; | 617 HandleAndZoneScope scope; |
618 Graph graph(scope.main_zone()); | 618 Graph graph(scope.main_zone()); |
619 CommonOperatorBuilder builder(scope.main_zone()); | 619 CommonOperatorBuilder builder(scope.main_zone()); |
620 graph.SetStart(graph.NewNode(builder.Start())); | 620 graph.SetStart(graph.NewNode(builder.Start(0))); |
621 | 621 |
622 Node* p1 = graph.NewNode(builder.Parameter(0)); | 622 Node* p1 = graph.NewNode(builder.Parameter(0), graph.start()); |
623 Node* ret = graph.NewNode(builder.Return(), p1, graph.start(), graph.start()); | 623 Node* ret = graph.NewNode(builder.Return(), p1, graph.start(), graph.start()); |
624 | 624 |
625 graph.SetEnd(graph.NewNode(builder.End(), ret)); | 625 graph.SetEnd(graph.NewNode(builder.End(), ret)); |
626 | 626 |
627 Scheduler scheduler(scope.main_zone()); | 627 Scheduler scheduler(scope.main_zone()); |
628 USE(scheduler.NewSchedule(&graph)); | 628 USE(scheduler.NewSchedule(&graph)); |
629 } | 629 } |
630 | 630 |
631 | 631 |
632 static int GetScheduledNodeCount(Schedule* schedule) { | 632 static int GetScheduledNodeCount(Schedule* schedule) { |
(...skipping 24 matching lines...) Expand all Loading... |
657 OFStream os(stdout); | 657 OFStream os(stdout); |
658 os << *schedule << endl; | 658 os << *schedule << endl; |
659 } | 659 } |
660 | 660 |
661 | 661 |
662 TEST(BuildScheduleIfSplit) { | 662 TEST(BuildScheduleIfSplit) { |
663 HandleAndZoneScope scope; | 663 HandleAndZoneScope scope; |
664 Graph graph(scope.main_zone()); | 664 Graph graph(scope.main_zone()); |
665 CommonOperatorBuilder builder(scope.main_zone()); | 665 CommonOperatorBuilder builder(scope.main_zone()); |
666 JSOperatorBuilder js_builder(scope.main_zone()); | 666 JSOperatorBuilder js_builder(scope.main_zone()); |
667 graph.SetStart(graph.NewNode(builder.Start())); | 667 graph.SetStart(graph.NewNode(builder.Start(3))); |
668 | 668 |
669 Node* p1 = graph.NewNode(builder.Parameter(0)); | 669 Node* p1 = graph.NewNode(builder.Parameter(0), graph.start()); |
670 Node* p2 = graph.NewNode(builder.Parameter(1)); | 670 Node* p2 = graph.NewNode(builder.Parameter(1), graph.start()); |
671 Node* p3 = graph.NewNode(builder.Parameter(2)); | 671 Node* p3 = graph.NewNode(builder.Parameter(2), graph.start()); |
672 Node* p4 = graph.NewNode(builder.Parameter(3)); | 672 Node* p4 = graph.NewNode(builder.Parameter(3), graph.start()); |
673 Node* p5 = graph.NewNode(builder.Parameter(4)); | 673 Node* p5 = graph.NewNode(builder.Parameter(4), graph.start()); |
674 Node* cmp = graph.NewNode(js_builder.LessThanOrEqual(), p1, p2, p3, | 674 Node* cmp = graph.NewNode(js_builder.LessThanOrEqual(), p1, p2, p3, |
675 graph.start(), graph.start()); | 675 graph.start(), graph.start()); |
676 Node* branch = graph.NewNode(builder.Branch(), cmp, graph.start()); | 676 Node* branch = graph.NewNode(builder.Branch(), cmp, graph.start()); |
677 Node* true_branch = graph.NewNode(builder.IfTrue(), branch); | 677 Node* true_branch = graph.NewNode(builder.IfTrue(), branch); |
678 Node* false_branch = graph.NewNode(builder.IfFalse(), branch); | 678 Node* false_branch = graph.NewNode(builder.IfFalse(), branch); |
679 | 679 |
680 Node* ret1 = graph.NewNode(builder.Return(), p4, graph.start(), true_branch); | 680 Node* ret1 = graph.NewNode(builder.Return(), p4, graph.start(), true_branch); |
681 Node* ret2 = graph.NewNode(builder.Return(), p5, graph.start(), false_branch); | 681 Node* ret2 = graph.NewNode(builder.Return(), p5, graph.start(), false_branch); |
682 Node* merge = graph.NewNode(builder.Merge(2), ret1, ret2); | 682 Node* merge = graph.NewNode(builder.Merge(2), ret1, ret2); |
683 graph.SetEnd(graph.NewNode(builder.End(), merge)); | 683 graph.SetEnd(graph.NewNode(builder.End(), merge)); |
(...skipping 24 matching lines...) Expand all Loading... |
708 PrintableUnique<Object>::CreateUninitialized(scope.main_zone(), object); | 708 PrintableUnique<Object>::CreateUninitialized(scope.main_zone(), object); |
709 | 709 |
710 // Manually transcripted code for: | 710 // Manually transcripted code for: |
711 // function turbo_fan_test(a, b, c, y) { | 711 // function turbo_fan_test(a, b, c, y) { |
712 // if (a < b) { | 712 // if (a < b) { |
713 // return a + b - c * c - a + y; | 713 // return a + b - c * c - a + y; |
714 // } else { | 714 // } else { |
715 // return c * c - a; | 715 // return c * c - a; |
716 // } | 716 // } |
717 // } | 717 // } |
| 718 op = common_builder.Start(0); |
| 719 Node* n0 = graph.NewNode(op); |
| 720 USE(n0); |
718 Node* nil = graph.NewNode(common_builder.Dead()); | 721 Node* nil = graph.NewNode(common_builder.Dead()); |
719 op = common_builder.End(); | 722 op = common_builder.End(); |
720 Node* n23 = graph.NewNode(op, nil); | 723 Node* n23 = graph.NewNode(op, nil); |
721 USE(n23); | 724 USE(n23); |
722 op = common_builder.Merge(2); | 725 op = common_builder.Merge(2); |
723 Node* n22 = graph.NewNode(op, nil, nil); | 726 Node* n22 = graph.NewNode(op, nil, nil); |
724 USE(n22); | 727 USE(n22); |
725 op = common_builder.Return(); | 728 op = common_builder.Return(); |
726 Node* n16 = graph.NewNode(op, nil, nil, nil); | 729 Node* n16 = graph.NewNode(op, nil, nil, nil); |
727 USE(n16); | 730 USE(n16); |
728 op = js_builder.Add(); | 731 op = js_builder.Add(); |
729 Node* n15 = graph.NewNode(op, nil, nil, nil, nil, nil); | 732 Node* n15 = graph.NewNode(op, nil, nil, nil, nil, nil); |
730 USE(n15); | 733 USE(n15); |
731 op = js_builder.Subtract(); | 734 op = js_builder.Subtract(); |
732 Node* n14 = graph.NewNode(op, nil, nil, nil, nil, nil); | 735 Node* n14 = graph.NewNode(op, nil, nil, nil, nil, nil); |
733 USE(n14); | 736 USE(n14); |
734 op = js_builder.Subtract(); | 737 op = js_builder.Subtract(); |
735 Node* n13 = graph.NewNode(op, nil, nil, nil, nil, nil); | 738 Node* n13 = graph.NewNode(op, nil, nil, nil, nil, nil); |
736 USE(n13); | 739 USE(n13); |
737 op = js_builder.Add(); | 740 op = js_builder.Add(); |
738 Node* n11 = graph.NewNode(op, nil, nil, nil, nil, nil); | 741 Node* n11 = graph.NewNode(op, nil, nil, nil, nil, nil); |
739 USE(n11); | 742 USE(n11); |
740 op = common_builder.Parameter(0); | 743 op = common_builder.Parameter(0); |
741 Node* n2 = graph.NewNode(op); | 744 Node* n2 = graph.NewNode(op, n0); |
742 USE(n2); | 745 USE(n2); |
743 n11->ReplaceInput(0, n2); | 746 n11->ReplaceInput(0, n2); |
744 op = common_builder.Parameter(0); | 747 op = common_builder.Parameter(0); |
745 Node* n3 = graph.NewNode(op); | 748 Node* n3 = graph.NewNode(op, n0); |
746 USE(n3); | 749 USE(n3); |
747 n11->ReplaceInput(1, n3); | 750 n11->ReplaceInput(1, n3); |
748 op = common_builder.HeapConstant(unique_constant); | 751 op = common_builder.HeapConstant(unique_constant); |
749 Node* n7 = graph.NewNode(op); | 752 Node* n7 = graph.NewNode(op); |
750 USE(n7); | 753 USE(n7); |
751 n11->ReplaceInput(2, n7); | 754 n11->ReplaceInput(2, n7); |
752 op = js_builder.LessThan(); | 755 op = js_builder.LessThan(); |
753 Node* n8 = graph.NewNode(op, nil, nil, nil, nil, nil); | 756 Node* n8 = graph.NewNode(op, nil, nil, nil, nil, nil); |
754 USE(n8); | 757 USE(n8); |
755 n8->ReplaceInput(0, n2); | 758 n8->ReplaceInput(0, n2); |
756 n8->ReplaceInput(1, n3); | 759 n8->ReplaceInput(1, n3); |
757 n8->ReplaceInput(2, n7); | 760 n8->ReplaceInput(2, n7); |
758 op = common_builder.Start(); | |
759 Node* n0 = graph.NewNode(op); | |
760 USE(n0); | |
761 n8->ReplaceInput(3, n0); | 761 n8->ReplaceInput(3, n0); |
762 n8->ReplaceInput(4, n0); | 762 n8->ReplaceInput(4, n0); |
763 n11->ReplaceInput(3, n8); | 763 n11->ReplaceInput(3, n8); |
764 op = common_builder.IfTrue(); | 764 op = common_builder.IfTrue(); |
765 Node* n10 = graph.NewNode(op, nil); | 765 Node* n10 = graph.NewNode(op, nil); |
766 USE(n10); | 766 USE(n10); |
767 op = common_builder.Branch(); | 767 op = common_builder.Branch(); |
768 Node* n9 = graph.NewNode(op, nil, nil); | 768 Node* n9 = graph.NewNode(op, nil, nil); |
769 USE(n9); | 769 USE(n9); |
770 n9->ReplaceInput(0, n8); | 770 n9->ReplaceInput(0, n8); |
771 n9->ReplaceInput(1, n0); | 771 n9->ReplaceInput(1, n0); |
772 n10->ReplaceInput(0, n9); | 772 n10->ReplaceInput(0, n9); |
773 n11->ReplaceInput(4, n10); | 773 n11->ReplaceInput(4, n10); |
774 n13->ReplaceInput(0, n11); | 774 n13->ReplaceInput(0, n11); |
775 op = js_builder.Multiply(); | 775 op = js_builder.Multiply(); |
776 Node* n12 = graph.NewNode(op, nil, nil, nil, nil, nil); | 776 Node* n12 = graph.NewNode(op, nil, nil, nil, nil, nil); |
777 USE(n12); | 777 USE(n12); |
778 op = common_builder.Parameter(0); | 778 op = common_builder.Parameter(0); |
779 Node* n4 = graph.NewNode(op); | 779 Node* n4 = graph.NewNode(op, n0); |
780 USE(n4); | 780 USE(n4); |
781 n12->ReplaceInput(0, n4); | 781 n12->ReplaceInput(0, n4); |
782 n12->ReplaceInput(1, n4); | 782 n12->ReplaceInput(1, n4); |
783 n12->ReplaceInput(2, n7); | 783 n12->ReplaceInput(2, n7); |
784 n12->ReplaceInput(3, n11); | 784 n12->ReplaceInput(3, n11); |
785 n12->ReplaceInput(4, n10); | 785 n12->ReplaceInput(4, n10); |
786 n13->ReplaceInput(1, n12); | 786 n13->ReplaceInput(1, n12); |
787 n13->ReplaceInput(2, n7); | 787 n13->ReplaceInput(2, n7); |
788 n13->ReplaceInput(3, n12); | 788 n13->ReplaceInput(3, n12); |
789 n13->ReplaceInput(4, n10); | 789 n13->ReplaceInput(4, n10); |
790 n14->ReplaceInput(0, n13); | 790 n14->ReplaceInput(0, n13); |
791 n14->ReplaceInput(1, n2); | 791 n14->ReplaceInput(1, n2); |
792 n14->ReplaceInput(2, n7); | 792 n14->ReplaceInput(2, n7); |
793 n14->ReplaceInput(3, n13); | 793 n14->ReplaceInput(3, n13); |
794 n14->ReplaceInput(4, n10); | 794 n14->ReplaceInput(4, n10); |
795 n15->ReplaceInput(0, n14); | 795 n15->ReplaceInput(0, n14); |
796 op = common_builder.Parameter(0); | 796 op = common_builder.Parameter(0); |
797 Node* n5 = graph.NewNode(op); | 797 Node* n5 = graph.NewNode(op, n0); |
798 USE(n5); | 798 USE(n5); |
799 n15->ReplaceInput(1, n5); | 799 n15->ReplaceInput(1, n5); |
800 n15->ReplaceInput(2, n7); | 800 n15->ReplaceInput(2, n7); |
801 n15->ReplaceInput(3, n14); | 801 n15->ReplaceInput(3, n14); |
802 n15->ReplaceInput(4, n10); | 802 n15->ReplaceInput(4, n10); |
803 n16->ReplaceInput(0, n15); | 803 n16->ReplaceInput(0, n15); |
804 n16->ReplaceInput(1, n15); | 804 n16->ReplaceInput(1, n15); |
805 n16->ReplaceInput(2, n10); | 805 n16->ReplaceInput(2, n10); |
806 n22->ReplaceInput(0, n16); | 806 n22->ReplaceInput(0, n16); |
807 op = common_builder.Return(); | 807 op = common_builder.Return(); |
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
860 PrintableUnique<Object> unique_constant = | 860 PrintableUnique<Object> unique_constant = |
861 PrintableUnique<Object>::CreateUninitialized(scope.main_zone(), object); | 861 PrintableUnique<Object>::CreateUninitialized(scope.main_zone(), object); |
862 | 862 |
863 // Manually transcripted code for: | 863 // Manually transcripted code for: |
864 // function turbo_fan_test(a, b) { | 864 // function turbo_fan_test(a, b) { |
865 // while (a < b) { | 865 // while (a < b) { |
866 // a++; | 866 // a++; |
867 // } | 867 // } |
868 // return a; | 868 // return a; |
869 // } | 869 // } |
| 870 op = common_builder.Start(0); |
| 871 Node* n0 = graph.NewNode(op); |
| 872 USE(n0); |
870 Node* nil = graph.NewNode(common_builder.Dead()); | 873 Node* nil = graph.NewNode(common_builder.Dead()); |
871 op = common_builder.End(); | 874 op = common_builder.End(); |
872 Node* n20 = graph.NewNode(op, nil); | 875 Node* n20 = graph.NewNode(op, nil); |
873 USE(n20); | 876 USE(n20); |
874 op = common_builder.Return(); | 877 op = common_builder.Return(); |
875 Node* n19 = graph.NewNode(op, nil, nil, nil); | 878 Node* n19 = graph.NewNode(op, nil, nil, nil); |
876 USE(n19); | 879 USE(n19); |
877 op = common_builder.Phi(2); | 880 op = common_builder.Phi(2); |
878 Node* n8 = graph.NewNode(op, nil, nil, nil); | 881 Node* n8 = graph.NewNode(op, nil, nil, nil); |
879 USE(n8); | 882 USE(n8); |
880 op = common_builder.Parameter(0); | 883 op = common_builder.Parameter(0); |
881 Node* n2 = graph.NewNode(op); | 884 Node* n2 = graph.NewNode(op, n0); |
882 USE(n2); | 885 USE(n2); |
883 n8->ReplaceInput(0, n2); | 886 n8->ReplaceInput(0, n2); |
884 op = js_builder.Add(); | 887 op = js_builder.Add(); |
885 Node* n18 = graph.NewNode(op, nil, nil, nil, nil, nil); | 888 Node* n18 = graph.NewNode(op, nil, nil, nil, nil, nil); |
886 USE(n18); | 889 USE(n18); |
887 op = js_builder.ToNumber(); | 890 op = js_builder.ToNumber(); |
888 Node* n16 = graph.NewNode(op, nil, nil, nil, nil); | 891 Node* n16 = graph.NewNode(op, nil, nil, nil, nil); |
889 USE(n16); | 892 USE(n16); |
890 n16->ReplaceInput(0, n8); | 893 n16->ReplaceInput(0, n8); |
891 op = common_builder.HeapConstant(unique_constant); | 894 op = common_builder.HeapConstant(unique_constant); |
892 Node* n5 = graph.NewNode(op); | 895 Node* n5 = graph.NewNode(op); |
893 USE(n5); | 896 USE(n5); |
894 n16->ReplaceInput(1, n5); | 897 n16->ReplaceInput(1, n5); |
895 op = js_builder.LessThan(); | 898 op = js_builder.LessThan(); |
896 Node* n12 = graph.NewNode(op, nil, nil, nil, nil, nil); | 899 Node* n12 = graph.NewNode(op, nil, nil, nil, nil, nil); |
897 USE(n12); | 900 USE(n12); |
898 n12->ReplaceInput(0, n8); | 901 n12->ReplaceInput(0, n8); |
899 op = common_builder.Phi(2); | 902 op = common_builder.Phi(2); |
900 Node* n9 = graph.NewNode(op, nil, nil, nil); | 903 Node* n9 = graph.NewNode(op, nil, nil, nil); |
901 USE(n9); | 904 USE(n9); |
902 op = common_builder.Parameter(0); | 905 op = common_builder.Parameter(0); |
903 Node* n3 = graph.NewNode(op); | 906 Node* n3 = graph.NewNode(op, n0); |
904 USE(n3); | 907 USE(n3); |
905 n9->ReplaceInput(0, n3); | 908 n9->ReplaceInput(0, n3); |
906 n9->ReplaceInput(1, n9); | 909 n9->ReplaceInput(1, n9); |
907 op = common_builder.Loop(2); | 910 op = common_builder.Loop(2); |
908 Node* n6 = graph.NewNode(op, nil, nil); | 911 Node* n6 = graph.NewNode(op, nil, nil); |
909 USE(n6); | 912 USE(n6); |
910 op = common_builder.Start(); | |
911 Node* n0 = graph.NewNode(op); | |
912 USE(n0); | |
913 n6->ReplaceInput(0, n0); | 913 n6->ReplaceInput(0, n0); |
914 op = common_builder.IfTrue(); | 914 op = common_builder.IfTrue(); |
915 Node* n14 = graph.NewNode(op, nil); | 915 Node* n14 = graph.NewNode(op, nil); |
916 USE(n14); | 916 USE(n14); |
917 op = common_builder.Branch(); | 917 op = common_builder.Branch(); |
918 Node* n13 = graph.NewNode(op, nil, nil); | 918 Node* n13 = graph.NewNode(op, nil, nil); |
919 USE(n13); | 919 USE(n13); |
920 n13->ReplaceInput(0, n12); | 920 n13->ReplaceInput(0, n12); |
921 n13->ReplaceInput(1, n6); | 921 n13->ReplaceInput(1, n6); |
922 n14->ReplaceInput(0, n13); | 922 n14->ReplaceInput(0, n13); |
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
986 // a++; | 986 // a++; |
987 // while (c < b) { | 987 // while (c < b) { |
988 // c++; | 988 // c++; |
989 // } | 989 // } |
990 // } | 990 // } |
991 // while (a < b) { | 991 // while (a < b) { |
992 // a += 2; | 992 // a += 2; |
993 // } | 993 // } |
994 // return a; | 994 // return a; |
995 // } | 995 // } |
| 996 op = common_builder.Start(0); |
| 997 Node* n0 = graph.NewNode(op); |
| 998 USE(n0); |
996 Node* nil = graph.NewNode(common_builder.Dead()); | 999 Node* nil = graph.NewNode(common_builder.Dead()); |
997 op = common_builder.End(); | 1000 op = common_builder.End(); |
998 Node* n46 = graph.NewNode(op, nil); | 1001 Node* n46 = graph.NewNode(op, nil); |
999 USE(n46); | 1002 USE(n46); |
1000 op = common_builder.Return(); | 1003 op = common_builder.Return(); |
1001 Node* n45 = graph.NewNode(op, nil, nil, nil); | 1004 Node* n45 = graph.NewNode(op, nil, nil, nil); |
1002 USE(n45); | 1005 USE(n45); |
1003 op = common_builder.Phi(2); | 1006 op = common_builder.Phi(2); |
1004 Node* n35 = graph.NewNode(op, nil, nil, nil); | 1007 Node* n35 = graph.NewNode(op, nil, nil, nil); |
1005 USE(n35); | 1008 USE(n35); |
1006 op = common_builder.Phi(2); | 1009 op = common_builder.Phi(2); |
1007 Node* n9 = graph.NewNode(op, nil, nil, nil); | 1010 Node* n9 = graph.NewNode(op, nil, nil, nil); |
1008 USE(n9); | 1011 USE(n9); |
1009 op = common_builder.Parameter(0); | 1012 op = common_builder.Parameter(0); |
1010 Node* n2 = graph.NewNode(op); | 1013 Node* n2 = graph.NewNode(op, n0); |
1011 USE(n2); | 1014 USE(n2); |
1012 n9->ReplaceInput(0, n2); | 1015 n9->ReplaceInput(0, n2); |
1013 op = common_builder.Phi(2); | 1016 op = common_builder.Phi(2); |
1014 Node* n23 = graph.NewNode(op, nil, nil, nil); | 1017 Node* n23 = graph.NewNode(op, nil, nil, nil); |
1015 USE(n23); | 1018 USE(n23); |
1016 op = js_builder.Add(); | 1019 op = js_builder.Add(); |
1017 Node* n20 = graph.NewNode(op, nil, nil, nil, nil, nil); | 1020 Node* n20 = graph.NewNode(op, nil, nil, nil, nil, nil); |
1018 USE(n20); | 1021 USE(n20); |
1019 op = js_builder.ToNumber(); | 1022 op = js_builder.ToNumber(); |
1020 Node* n18 = graph.NewNode(op, nil, nil, nil, nil); | 1023 Node* n18 = graph.NewNode(op, nil, nil, nil, nil); |
1021 USE(n18); | 1024 USE(n18); |
1022 n18->ReplaceInput(0, n9); | 1025 n18->ReplaceInput(0, n9); |
1023 op = common_builder.HeapConstant(unique_constant); | 1026 op = common_builder.HeapConstant(unique_constant); |
1024 Node* n6 = graph.NewNode(op); | 1027 Node* n6 = graph.NewNode(op); |
1025 USE(n6); | 1028 USE(n6); |
1026 n18->ReplaceInput(1, n6); | 1029 n18->ReplaceInput(1, n6); |
1027 op = js_builder.LessThan(); | 1030 op = js_builder.LessThan(); |
1028 Node* n14 = graph.NewNode(op, nil, nil, nil, nil, nil); | 1031 Node* n14 = graph.NewNode(op, nil, nil, nil, nil, nil); |
1029 USE(n14); | 1032 USE(n14); |
1030 n14->ReplaceInput(0, n9); | 1033 n14->ReplaceInput(0, n9); |
1031 op = common_builder.Phi(2); | 1034 op = common_builder.Phi(2); |
1032 Node* n10 = graph.NewNode(op, nil, nil, nil); | 1035 Node* n10 = graph.NewNode(op, nil, nil, nil); |
1033 USE(n10); | 1036 USE(n10); |
1034 op = common_builder.Parameter(0); | 1037 op = common_builder.Parameter(0); |
1035 Node* n3 = graph.NewNode(op); | 1038 Node* n3 = graph.NewNode(op, n0); |
1036 USE(n3); | 1039 USE(n3); |
1037 n10->ReplaceInput(0, n3); | 1040 n10->ReplaceInput(0, n3); |
1038 op = common_builder.Phi(2); | 1041 op = common_builder.Phi(2); |
1039 Node* n24 = graph.NewNode(op, nil, nil, nil); | 1042 Node* n24 = graph.NewNode(op, nil, nil, nil); |
1040 USE(n24); | 1043 USE(n24); |
1041 n24->ReplaceInput(0, n10); | 1044 n24->ReplaceInput(0, n10); |
1042 n24->ReplaceInput(1, n24); | 1045 n24->ReplaceInput(1, n24); |
1043 op = common_builder.Loop(2); | 1046 op = common_builder.Loop(2); |
1044 Node* n21 = graph.NewNode(op, nil, nil); | 1047 Node* n21 = graph.NewNode(op, nil, nil); |
1045 USE(n21); | 1048 USE(n21); |
1046 op = common_builder.IfTrue(); | 1049 op = common_builder.IfTrue(); |
1047 Node* n16 = graph.NewNode(op, nil); | 1050 Node* n16 = graph.NewNode(op, nil); |
1048 USE(n16); | 1051 USE(n16); |
1049 op = common_builder.Branch(); | 1052 op = common_builder.Branch(); |
1050 Node* n15 = graph.NewNode(op, nil, nil); | 1053 Node* n15 = graph.NewNode(op, nil, nil); |
1051 USE(n15); | 1054 USE(n15); |
1052 n15->ReplaceInput(0, n14); | 1055 n15->ReplaceInput(0, n14); |
1053 op = common_builder.Loop(2); | 1056 op = common_builder.Loop(2); |
1054 Node* n7 = graph.NewNode(op, nil, nil); | 1057 Node* n7 = graph.NewNode(op, nil, nil); |
1055 USE(n7); | 1058 USE(n7); |
1056 op = common_builder.Start(); | |
1057 Node* n0 = graph.NewNode(op); | |
1058 USE(n0); | |
1059 n7->ReplaceInput(0, n0); | 1059 n7->ReplaceInput(0, n0); |
1060 op = common_builder.IfFalse(); | 1060 op = common_builder.IfFalse(); |
1061 Node* n30 = graph.NewNode(op, nil); | 1061 Node* n30 = graph.NewNode(op, nil); |
1062 USE(n30); | 1062 USE(n30); |
1063 op = common_builder.Branch(); | 1063 op = common_builder.Branch(); |
1064 Node* n28 = graph.NewNode(op, nil, nil); | 1064 Node* n28 = graph.NewNode(op, nil, nil); |
1065 USE(n28); | 1065 USE(n28); |
1066 op = js_builder.LessThan(); | 1066 op = js_builder.LessThan(); |
1067 Node* n27 = graph.NewNode(op, nil, nil, nil, nil, nil); | 1067 Node* n27 = graph.NewNode(op, nil, nil, nil, nil, nil); |
1068 USE(n27); | 1068 USE(n27); |
1069 op = common_builder.Phi(2); | 1069 op = common_builder.Phi(2); |
1070 Node* n25 = graph.NewNode(op, nil, nil, nil); | 1070 Node* n25 = graph.NewNode(op, nil, nil, nil); |
1071 USE(n25); | 1071 USE(n25); |
1072 op = common_builder.Phi(2); | 1072 op = common_builder.Phi(2); |
1073 Node* n11 = graph.NewNode(op, nil, nil, nil); | 1073 Node* n11 = graph.NewNode(op, nil, nil, nil); |
1074 USE(n11); | 1074 USE(n11); |
1075 op = common_builder.Parameter(0); | 1075 op = common_builder.Parameter(0); |
1076 Node* n4 = graph.NewNode(op); | 1076 Node* n4 = graph.NewNode(op, n0); |
1077 USE(n4); | 1077 USE(n4); |
1078 n11->ReplaceInput(0, n4); | 1078 n11->ReplaceInput(0, n4); |
1079 n11->ReplaceInput(1, n25); | 1079 n11->ReplaceInput(1, n25); |
1080 n11->ReplaceInput(2, n7); | 1080 n11->ReplaceInput(2, n7); |
1081 n25->ReplaceInput(0, n11); | 1081 n25->ReplaceInput(0, n11); |
1082 op = js_builder.Add(); | 1082 op = js_builder.Add(); |
1083 Node* n32 = graph.NewNode(op, nil, nil, nil, nil, nil); | 1083 Node* n32 = graph.NewNode(op, nil, nil, nil, nil, nil); |
1084 USE(n32); | 1084 USE(n32); |
1085 op = js_builder.ToNumber(); | 1085 op = js_builder.ToNumber(); |
1086 Node* n31 = graph.NewNode(op, nil, nil, nil, nil); | 1086 Node* n31 = graph.NewNode(op, nil, nil, nil, nil); |
(...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1243 // while (c < b) { | 1243 // while (c < b) { |
1244 // c++; | 1244 // c++; |
1245 // if (d == 0) break; | 1245 // if (d == 0) break; |
1246 // a++; | 1246 // a++; |
1247 // } | 1247 // } |
1248 // if (a == 1) continue; | 1248 // if (a == 1) continue; |
1249 // d++; | 1249 // d++; |
1250 // } | 1250 // } |
1251 // return a + d; | 1251 // return a + d; |
1252 // } | 1252 // } |
| 1253 op = common_builder.Start(0); |
| 1254 Node* n0 = graph.NewNode(op); |
| 1255 USE(n0); |
1253 Node* nil = graph.NewNode(common_builder.Dead()); | 1256 Node* nil = graph.NewNode(common_builder.Dead()); |
1254 op = common_builder.End(); | 1257 op = common_builder.End(); |
1255 Node* n58 = graph.NewNode(op, nil); | 1258 Node* n58 = graph.NewNode(op, nil); |
1256 USE(n58); | 1259 USE(n58); |
1257 op = common_builder.Return(); | 1260 op = common_builder.Return(); |
1258 Node* n57 = graph.NewNode(op, nil, nil, nil); | 1261 Node* n57 = graph.NewNode(op, nil, nil, nil); |
1259 USE(n57); | 1262 USE(n57); |
1260 op = js_builder.Add(); | 1263 op = js_builder.Add(); |
1261 Node* n56 = graph.NewNode(op, nil, nil, nil, nil, nil); | 1264 Node* n56 = graph.NewNode(op, nil, nil, nil, nil, nil); |
1262 USE(n56); | 1265 USE(n56); |
1263 op = common_builder.Phi(2); | 1266 op = common_builder.Phi(2); |
1264 Node* n10 = graph.NewNode(op, nil, nil, nil); | 1267 Node* n10 = graph.NewNode(op, nil, nil, nil); |
1265 USE(n10); | 1268 USE(n10); |
1266 op = common_builder.Parameter(0); | 1269 op = common_builder.Parameter(0); |
1267 Node* n2 = graph.NewNode(op); | 1270 Node* n2 = graph.NewNode(op, n0); |
1268 USE(n2); | 1271 USE(n2); |
1269 n10->ReplaceInput(0, n2); | 1272 n10->ReplaceInput(0, n2); |
1270 op = common_builder.Phi(2); | 1273 op = common_builder.Phi(2); |
1271 Node* n25 = graph.NewNode(op, nil, nil, nil); | 1274 Node* n25 = graph.NewNode(op, nil, nil, nil); |
1272 USE(n25); | 1275 USE(n25); |
1273 op = js_builder.Add(); | 1276 op = js_builder.Add(); |
1274 Node* n22 = graph.NewNode(op, nil, nil, nil, nil, nil); | 1277 Node* n22 = graph.NewNode(op, nil, nil, nil, nil, nil); |
1275 USE(n22); | 1278 USE(n22); |
1276 op = js_builder.ToNumber(); | 1279 op = js_builder.ToNumber(); |
1277 Node* n20 = graph.NewNode(op, nil, nil, nil, nil); | 1280 Node* n20 = graph.NewNode(op, nil, nil, nil, nil); |
1278 USE(n20); | 1281 USE(n20); |
1279 n20->ReplaceInput(0, n10); | 1282 n20->ReplaceInput(0, n10); |
1280 op = common_builder.HeapConstant(unique_constant); | 1283 op = common_builder.HeapConstant(unique_constant); |
1281 Node* n6 = graph.NewNode(op); | 1284 Node* n6 = graph.NewNode(op); |
1282 USE(n6); | 1285 USE(n6); |
1283 n20->ReplaceInput(1, n6); | 1286 n20->ReplaceInput(1, n6); |
1284 op = js_builder.LessThan(); | 1287 op = js_builder.LessThan(); |
1285 Node* n16 = graph.NewNode(op, nil, nil, nil, nil, nil); | 1288 Node* n16 = graph.NewNode(op, nil, nil, nil, nil, nil); |
1286 USE(n16); | 1289 USE(n16); |
1287 n16->ReplaceInput(0, n10); | 1290 n16->ReplaceInput(0, n10); |
1288 op = common_builder.Phi(2); | 1291 op = common_builder.Phi(2); |
1289 Node* n11 = graph.NewNode(op, nil, nil, nil); | 1292 Node* n11 = graph.NewNode(op, nil, nil, nil); |
1290 USE(n11); | 1293 USE(n11); |
1291 op = common_builder.Parameter(0); | 1294 op = common_builder.Parameter(0); |
1292 Node* n3 = graph.NewNode(op); | 1295 Node* n3 = graph.NewNode(op, n0); |
1293 USE(n3); | 1296 USE(n3); |
1294 n11->ReplaceInput(0, n3); | 1297 n11->ReplaceInput(0, n3); |
1295 op = common_builder.Phi(2); | 1298 op = common_builder.Phi(2); |
1296 Node* n26 = graph.NewNode(op, nil, nil, nil); | 1299 Node* n26 = graph.NewNode(op, nil, nil, nil); |
1297 USE(n26); | 1300 USE(n26); |
1298 n26->ReplaceInput(0, n11); | 1301 n26->ReplaceInput(0, n11); |
1299 n26->ReplaceInput(1, n26); | 1302 n26->ReplaceInput(1, n26); |
1300 op = common_builder.Loop(2); | 1303 op = common_builder.Loop(2); |
1301 Node* n23 = graph.NewNode(op, nil, nil); | 1304 Node* n23 = graph.NewNode(op, nil, nil); |
1302 USE(n23); | 1305 USE(n23); |
1303 op = common_builder.IfTrue(); | 1306 op = common_builder.IfTrue(); |
1304 Node* n18 = graph.NewNode(op, nil); | 1307 Node* n18 = graph.NewNode(op, nil); |
1305 USE(n18); | 1308 USE(n18); |
1306 op = common_builder.Branch(); | 1309 op = common_builder.Branch(); |
1307 Node* n17 = graph.NewNode(op, nil, nil); | 1310 Node* n17 = graph.NewNode(op, nil, nil); |
1308 USE(n17); | 1311 USE(n17); |
1309 n17->ReplaceInput(0, n16); | 1312 n17->ReplaceInput(0, n16); |
1310 op = common_builder.Loop(2); | 1313 op = common_builder.Loop(2); |
1311 Node* n8 = graph.NewNode(op, nil, nil); | 1314 Node* n8 = graph.NewNode(op, nil, nil); |
1312 USE(n8); | 1315 USE(n8); |
1313 op = common_builder.Start(); | |
1314 Node* n0 = graph.NewNode(op); | |
1315 USE(n0); | |
1316 n8->ReplaceInput(0, n0); | 1316 n8->ReplaceInput(0, n0); |
1317 op = common_builder.Merge(2); | 1317 op = common_builder.Merge(2); |
1318 Node* n53 = graph.NewNode(op, nil, nil); | 1318 Node* n53 = graph.NewNode(op, nil, nil); |
1319 USE(n53); | 1319 USE(n53); |
1320 op = common_builder.IfTrue(); | 1320 op = common_builder.IfTrue(); |
1321 Node* n49 = graph.NewNode(op, nil); | 1321 Node* n49 = graph.NewNode(op, nil); |
1322 USE(n49); | 1322 USE(n49); |
1323 op = common_builder.Branch(); | 1323 op = common_builder.Branch(); |
1324 Node* n48 = graph.NewNode(op, nil, nil); | 1324 Node* n48 = graph.NewNode(op, nil, nil); |
1325 USE(n48); | 1325 USE(n48); |
(...skipping 12 matching lines...) Expand all Loading... |
1338 op = js_builder.LessThan(); | 1338 op = js_builder.LessThan(); |
1339 Node* n30 = graph.NewNode(op, nil, nil, nil, nil, nil); | 1339 Node* n30 = graph.NewNode(op, nil, nil, nil, nil, nil); |
1340 USE(n30); | 1340 USE(n30); |
1341 op = common_builder.Phi(2); | 1341 op = common_builder.Phi(2); |
1342 Node* n27 = graph.NewNode(op, nil, nil, nil); | 1342 Node* n27 = graph.NewNode(op, nil, nil, nil); |
1343 USE(n27); | 1343 USE(n27); |
1344 op = common_builder.Phi(2); | 1344 op = common_builder.Phi(2); |
1345 Node* n12 = graph.NewNode(op, nil, nil, nil); | 1345 Node* n12 = graph.NewNode(op, nil, nil, nil); |
1346 USE(n12); | 1346 USE(n12); |
1347 op = common_builder.Parameter(0); | 1347 op = common_builder.Parameter(0); |
1348 Node* n4 = graph.NewNode(op); | 1348 Node* n4 = graph.NewNode(op, n0); |
1349 USE(n4); | 1349 USE(n4); |
1350 n12->ReplaceInput(0, n4); | 1350 n12->ReplaceInput(0, n4); |
1351 op = common_builder.Phi(2); | 1351 op = common_builder.Phi(2); |
1352 Node* n41 = graph.NewNode(op, nil, nil, nil); | 1352 Node* n41 = graph.NewNode(op, nil, nil, nil); |
1353 USE(n41); | 1353 USE(n41); |
1354 n41->ReplaceInput(0, n27); | 1354 n41->ReplaceInput(0, n27); |
1355 op = js_builder.Add(); | 1355 op = js_builder.Add(); |
1356 Node* n35 = graph.NewNode(op, nil, nil, nil, nil, nil); | 1356 Node* n35 = graph.NewNode(op, nil, nil, nil, nil, nil); |
1357 USE(n35); | 1357 USE(n35); |
1358 op = js_builder.ToNumber(); | 1358 op = js_builder.ToNumber(); |
(...skipping 214 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1573 PrintableUnique<Object> unique_constant = | 1573 PrintableUnique<Object> unique_constant = |
1574 PrintableUnique<Object>::CreateUninitialized(scope.main_zone(), object); | 1574 PrintableUnique<Object>::CreateUninitialized(scope.main_zone(), object); |
1575 | 1575 |
1576 // Manually transcripted code for: | 1576 // Manually transcripted code for: |
1577 // function turbo_fan_test(a, b, c) { | 1577 // function turbo_fan_test(a, b, c) { |
1578 // while (a < b) { | 1578 // while (a < b) { |
1579 // a += b + c; | 1579 // a += b + c; |
1580 // } | 1580 // } |
1581 // return a; | 1581 // return a; |
1582 // } | 1582 // } |
| 1583 op = common_builder.Start(0); |
| 1584 Node* n0 = graph.NewNode(op); |
| 1585 USE(n0); |
1583 Node* nil = graph.NewNode(common_builder.Dead()); | 1586 Node* nil = graph.NewNode(common_builder.Dead()); |
1584 op = common_builder.End(); | 1587 op = common_builder.End(); |
1585 Node* n22 = graph.NewNode(op, nil); | 1588 Node* n22 = graph.NewNode(op, nil); |
1586 USE(n22); | 1589 USE(n22); |
1587 op = common_builder.Return(); | 1590 op = common_builder.Return(); |
1588 Node* n21 = graph.NewNode(op, nil, nil, nil); | 1591 Node* n21 = graph.NewNode(op, nil, nil, nil); |
1589 USE(n21); | 1592 USE(n21); |
1590 op = common_builder.Phi(2); | 1593 op = common_builder.Phi(2); |
1591 Node* n9 = graph.NewNode(op, nil, nil, nil); | 1594 Node* n9 = graph.NewNode(op, nil, nil, nil); |
1592 USE(n9); | 1595 USE(n9); |
1593 op = common_builder.Parameter(0); | 1596 op = common_builder.Parameter(0); |
1594 Node* n2 = graph.NewNode(op); | 1597 Node* n2 = graph.NewNode(op, n0); |
1595 USE(n2); | 1598 USE(n2); |
1596 n9->ReplaceInput(0, n2); | 1599 n9->ReplaceInput(0, n2); |
1597 op = js_builder.Add(); | 1600 op = js_builder.Add(); |
1598 Node* n20 = graph.NewNode(op, nil, nil, nil, nil, nil); | 1601 Node* n20 = graph.NewNode(op, nil, nil, nil, nil, nil); |
1599 USE(n20); | 1602 USE(n20); |
1600 n20->ReplaceInput(0, n9); | 1603 n20->ReplaceInput(0, n9); |
1601 op = machine_builder.Int32Add(); | 1604 op = machine_builder.Int32Add(); |
1602 Node* n19 = graph.NewNode(op, nil, nil); | 1605 Node* n19 = graph.NewNode(op, nil, nil); |
1603 USE(n19); | 1606 USE(n19); |
1604 op = common_builder.Phi(2); | 1607 op = common_builder.Phi(2); |
1605 Node* n10 = graph.NewNode(op, nil, nil, nil); | 1608 Node* n10 = graph.NewNode(op, nil, nil, nil); |
1606 USE(n10); | 1609 USE(n10); |
1607 op = common_builder.Parameter(0); | 1610 op = common_builder.Parameter(0); |
1608 Node* n3 = graph.NewNode(op); | 1611 Node* n3 = graph.NewNode(op, n0); |
1609 USE(n3); | 1612 USE(n3); |
1610 n10->ReplaceInput(0, n3); | 1613 n10->ReplaceInput(0, n3); |
1611 n10->ReplaceInput(1, n10); | 1614 n10->ReplaceInput(1, n10); |
1612 op = common_builder.Loop(2); | 1615 op = common_builder.Loop(2); |
1613 Node* n7 = graph.NewNode(op, nil, nil); | 1616 Node* n7 = graph.NewNode(op, nil, nil); |
1614 USE(n7); | 1617 USE(n7); |
1615 op = common_builder.Start(); | |
1616 Node* n0 = graph.NewNode(op); | |
1617 USE(n0); | |
1618 n7->ReplaceInput(0, n0); | 1618 n7->ReplaceInput(0, n0); |
1619 op = common_builder.IfTrue(); | 1619 op = common_builder.IfTrue(); |
1620 Node* n17 = graph.NewNode(op, nil); | 1620 Node* n17 = graph.NewNode(op, nil); |
1621 USE(n17); | 1621 USE(n17); |
1622 op = common_builder.Branch(); | 1622 op = common_builder.Branch(); |
1623 Node* n16 = graph.NewNode(op, nil, nil); | 1623 Node* n16 = graph.NewNode(op, nil, nil); |
1624 USE(n16); | 1624 USE(n16); |
1625 op = js_builder.ToBoolean(); | 1625 op = js_builder.ToBoolean(); |
1626 Node* n15 = graph.NewNode(op, nil, nil, nil, nil); | 1626 Node* n15 = graph.NewNode(op, nil, nil, nil, nil); |
1627 USE(n15); | 1627 USE(n15); |
(...skipping 21 matching lines...) Expand all Loading... |
1649 n16->ReplaceInput(0, n15); | 1649 n16->ReplaceInput(0, n15); |
1650 n16->ReplaceInput(1, n7); | 1650 n16->ReplaceInput(1, n7); |
1651 n17->ReplaceInput(0, n16); | 1651 n17->ReplaceInput(0, n16); |
1652 n7->ReplaceInput(1, n17); | 1652 n7->ReplaceInput(1, n17); |
1653 n10->ReplaceInput(2, n7); | 1653 n10->ReplaceInput(2, n7); |
1654 n19->ReplaceInput(0, n2); | 1654 n19->ReplaceInput(0, n2); |
1655 op = common_builder.Phi(2); | 1655 op = common_builder.Phi(2); |
1656 Node* n11 = graph.NewNode(op, nil, nil, nil); | 1656 Node* n11 = graph.NewNode(op, nil, nil, nil); |
1657 USE(n11); | 1657 USE(n11); |
1658 op = common_builder.Parameter(0); | 1658 op = common_builder.Parameter(0); |
1659 Node* n4 = graph.NewNode(op); | 1659 Node* n4 = graph.NewNode(op, n0); |
1660 USE(n4); | 1660 USE(n4); |
1661 n11->ReplaceInput(0, n4); | 1661 n11->ReplaceInput(0, n4); |
1662 n11->ReplaceInput(1, n11); | 1662 n11->ReplaceInput(1, n11); |
1663 n11->ReplaceInput(2, n7); | 1663 n11->ReplaceInput(2, n7); |
1664 n19->ReplaceInput(1, n3); | 1664 n19->ReplaceInput(1, n3); |
1665 n20->ReplaceInput(1, n19); | 1665 n20->ReplaceInput(1, n19); |
1666 n20->ReplaceInput(2, n6); | 1666 n20->ReplaceInput(2, n6); |
1667 n20->ReplaceInput(3, n19); | 1667 n20->ReplaceInput(3, n19); |
1668 n20->ReplaceInput(4, n17); | 1668 n20->ReplaceInput(4, n17); |
1669 n9->ReplaceInput(1, n20); | 1669 n9->ReplaceInput(1, n20); |
(...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1823 CHECK(!call_block->deferred_); | 1823 CHECK(!call_block->deferred_); |
1824 CHECK(!cont_block->deferred_); | 1824 CHECK(!cont_block->deferred_); |
1825 // The lazy deopt block contains framestate + bailout (and nothing else). | 1825 // The lazy deopt block contains framestate + bailout (and nothing else). |
1826 CHECK_EQ(deoptimization_node, deopt_block->control_input_); | 1826 CHECK_EQ(deoptimization_node, deopt_block->control_input_); |
1827 CHECK_EQ(2, static_cast<int>(deopt_block->nodes_.size())); | 1827 CHECK_EQ(2, static_cast<int>(deopt_block->nodes_.size())); |
1828 CHECK_EQ(lazy_deopt_node, deopt_block->nodes_[0]); | 1828 CHECK_EQ(lazy_deopt_node, deopt_block->nodes_[0]); |
1829 CHECK_EQ(state_node, deopt_block->nodes_[1]); | 1829 CHECK_EQ(state_node, deopt_block->nodes_[1]); |
1830 } | 1830 } |
1831 | 1831 |
1832 #endif | 1832 #endif |
OLD | NEW |