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 662 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
673 | 673 |
674 | 674 |
675 TEST(BuildScheduleIfSplitWithEffects) { | 675 TEST(BuildScheduleIfSplitWithEffects) { |
676 HandleAndZoneScope scope; | 676 HandleAndZoneScope scope; |
677 Isolate* isolate = scope.main_isolate(); | 677 Isolate* isolate = scope.main_isolate(); |
678 Graph graph(scope.main_zone()); | 678 Graph graph(scope.main_zone()); |
679 CommonOperatorBuilder common_builder(scope.main_zone()); | 679 CommonOperatorBuilder common_builder(scope.main_zone()); |
680 JSOperatorBuilder js_builder(scope.main_zone()); | 680 JSOperatorBuilder js_builder(scope.main_zone()); |
681 const Operator* op; | 681 const Operator* op; |
682 | 682 |
683 Handle<Object> object = | 683 Handle<HeapObject> object = |
684 Handle<Object>(isolate->heap()->undefined_value(), isolate); | 684 Handle<HeapObject>(isolate->heap()->undefined_value(), isolate); |
685 Unique<Object> unique_constant = Unique<Object>::CreateUninitialized(object); | 685 Unique<HeapObject> unique_constant = |
| 686 Unique<HeapObject>::CreateUninitialized(object); |
686 | 687 |
687 // Manually transcripted code for: | 688 // Manually transcripted code for: |
688 // function turbo_fan_test(a, b, c, y) { | 689 // function turbo_fan_test(a, b, c, y) { |
689 // if (a < b) { | 690 // if (a < b) { |
690 // return a + b - c * c - a + y; | 691 // return a + b - c * c - a + y; |
691 // } else { | 692 // } else { |
692 // return c * c - a; | 693 // return c * c - a; |
693 // } | 694 // } |
694 // } | 695 // } |
695 op = common_builder.Start(0); | 696 op = common_builder.Start(0); |
(...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
818 | 819 |
819 | 820 |
820 TEST(BuildScheduleSimpleLoop) { | 821 TEST(BuildScheduleSimpleLoop) { |
821 HandleAndZoneScope scope; | 822 HandleAndZoneScope scope; |
822 Isolate* isolate = scope.main_isolate(); | 823 Isolate* isolate = scope.main_isolate(); |
823 Graph graph(scope.main_zone()); | 824 Graph graph(scope.main_zone()); |
824 CommonOperatorBuilder common_builder(scope.main_zone()); | 825 CommonOperatorBuilder common_builder(scope.main_zone()); |
825 JSOperatorBuilder js_builder(scope.main_zone()); | 826 JSOperatorBuilder js_builder(scope.main_zone()); |
826 const Operator* op; | 827 const Operator* op; |
827 | 828 |
828 Handle<Object> object = | 829 Handle<HeapObject> object = |
829 Handle<Object>(isolate->heap()->undefined_value(), isolate); | 830 Handle<HeapObject>(isolate->heap()->undefined_value(), isolate); |
830 Unique<Object> unique_constant = Unique<Object>::CreateUninitialized(object); | 831 Unique<HeapObject> unique_constant = |
| 832 Unique<HeapObject>::CreateUninitialized(object); |
831 | 833 |
832 // Manually transcripted code for: | 834 // Manually transcripted code for: |
833 // function turbo_fan_test(a, b) { | 835 // function turbo_fan_test(a, b) { |
834 // while (a < b) { | 836 // while (a < b) { |
835 // a++; | 837 // a++; |
836 // } | 838 // } |
837 // return a; | 839 // return a; |
838 // } | 840 // } |
839 op = common_builder.Start(0); | 841 op = common_builder.Start(0); |
840 Node* n0 = graph.NewNode(op); | 842 Node* n0 = graph.NewNode(op); |
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
930 | 932 |
931 | 933 |
932 TEST(BuildScheduleComplexLoops) { | 934 TEST(BuildScheduleComplexLoops) { |
933 HandleAndZoneScope scope; | 935 HandleAndZoneScope scope; |
934 Isolate* isolate = scope.main_isolate(); | 936 Isolate* isolate = scope.main_isolate(); |
935 Graph graph(scope.main_zone()); | 937 Graph graph(scope.main_zone()); |
936 CommonOperatorBuilder common_builder(scope.main_zone()); | 938 CommonOperatorBuilder common_builder(scope.main_zone()); |
937 JSOperatorBuilder js_builder(scope.main_zone()); | 939 JSOperatorBuilder js_builder(scope.main_zone()); |
938 const Operator* op; | 940 const Operator* op; |
939 | 941 |
940 Handle<Object> object = | 942 Handle<HeapObject> object = |
941 Handle<Object>(isolate->heap()->undefined_value(), isolate); | 943 Handle<HeapObject>(isolate->heap()->undefined_value(), isolate); |
942 Unique<Object> unique_constant = Unique<Object>::CreateUninitialized(object); | 944 Unique<HeapObject> unique_constant = |
| 945 Unique<HeapObject>::CreateUninitialized(object); |
943 | 946 |
944 // Manually transcripted code for: | 947 // Manually transcripted code for: |
945 // function turbo_fan_test(a, b, c) { | 948 // function turbo_fan_test(a, b, c) { |
946 // while (a < b) { | 949 // while (a < b) { |
947 // a++; | 950 // a++; |
948 // while (c < b) { | 951 // while (c < b) { |
949 // c++; | 952 // c++; |
950 // } | 953 // } |
951 // } | 954 // } |
952 // while (a < b) { | 955 // while (a < b) { |
(...skipping 224 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1177 | 1180 |
1178 | 1181 |
1179 TEST(BuildScheduleBreakAndContinue) { | 1182 TEST(BuildScheduleBreakAndContinue) { |
1180 HandleAndZoneScope scope; | 1183 HandleAndZoneScope scope; |
1181 Isolate* isolate = scope.main_isolate(); | 1184 Isolate* isolate = scope.main_isolate(); |
1182 Graph graph(scope.main_zone()); | 1185 Graph graph(scope.main_zone()); |
1183 CommonOperatorBuilder common_builder(scope.main_zone()); | 1186 CommonOperatorBuilder common_builder(scope.main_zone()); |
1184 JSOperatorBuilder js_builder(scope.main_zone()); | 1187 JSOperatorBuilder js_builder(scope.main_zone()); |
1185 const Operator* op; | 1188 const Operator* op; |
1186 | 1189 |
1187 Handle<Object> object = | 1190 Handle<HeapObject> object = |
1188 Handle<Object>(isolate->heap()->undefined_value(), isolate); | 1191 Handle<HeapObject>(isolate->heap()->undefined_value(), isolate); |
1189 Unique<Object> unique_constant = Unique<Object>::CreateUninitialized(object); | 1192 Unique<HeapObject> unique_constant = |
| 1193 Unique<HeapObject>::CreateUninitialized(object); |
1190 | 1194 |
1191 // Manually transcripted code for: | 1195 // Manually transcripted code for: |
1192 // function turbo_fan_test(a, b, c) { | 1196 // function turbo_fan_test(a, b, c) { |
1193 // var d = 0; | 1197 // var d = 0; |
1194 // while (a < b) { | 1198 // while (a < b) { |
1195 // a++; | 1199 // a++; |
1196 // while (c < b) { | 1200 // while (c < b) { |
1197 // c++; | 1201 // c++; |
1198 // if (d == 0) break; | 1202 // if (d == 0) break; |
1199 // a++; | 1203 // a++; |
(...skipping 307 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1507 | 1511 |
1508 TEST(BuildScheduleSimpleLoopWithCodeMotion) { | 1512 TEST(BuildScheduleSimpleLoopWithCodeMotion) { |
1509 HandleAndZoneScope scope; | 1513 HandleAndZoneScope scope; |
1510 Isolate* isolate = scope.main_isolate(); | 1514 Isolate* isolate = scope.main_isolate(); |
1511 Graph graph(scope.main_zone()); | 1515 Graph graph(scope.main_zone()); |
1512 CommonOperatorBuilder common_builder(scope.main_zone()); | 1516 CommonOperatorBuilder common_builder(scope.main_zone()); |
1513 JSOperatorBuilder js_builder(scope.main_zone()); | 1517 JSOperatorBuilder js_builder(scope.main_zone()); |
1514 MachineOperatorBuilder machine_builder; | 1518 MachineOperatorBuilder machine_builder; |
1515 const Operator* op; | 1519 const Operator* op; |
1516 | 1520 |
1517 Handle<Object> object = | 1521 Handle<HeapObject> object = |
1518 Handle<Object>(isolate->heap()->undefined_value(), isolate); | 1522 Handle<HeapObject>(isolate->heap()->undefined_value(), isolate); |
1519 Unique<Object> unique_constant = Unique<Object>::CreateUninitialized(object); | 1523 Unique<HeapObject> unique_constant = |
| 1524 Unique<HeapObject>::CreateUninitialized(object); |
1520 | 1525 |
1521 // Manually transcripted code for: | 1526 // Manually transcripted code for: |
1522 // function turbo_fan_test(a, b, c) { | 1527 // function turbo_fan_test(a, b, c) { |
1523 // while (a < b) { | 1528 // while (a < b) { |
1524 // a += b + c; | 1529 // a += b + c; |
1525 // } | 1530 // } |
1526 // return a; | 1531 // return a; |
1527 // } | 1532 // } |
1528 op = common_builder.Start(0); | 1533 op = common_builder.Start(0); |
1529 Node* n0 = graph.NewNode(op); | 1534 Node* n0 = graph.NewNode(op); |
(...skipping 176 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1706 Node* d3 = CreateDiamond(&graph, &common, add); | 1711 Node* d3 = CreateDiamond(&graph, &common, add); |
1707 Node* ret = graph.NewNode(common.Return(), d3, start, start); | 1712 Node* ret = graph.NewNode(common.Return(), d3, start, start); |
1708 Node* end = graph.NewNode(common.End(), ret, start); | 1713 Node* end = graph.NewNode(common.End(), ret, start); |
1709 | 1714 |
1710 graph.SetEnd(end); | 1715 graph.SetEnd(end); |
1711 | 1716 |
1712 ComputeAndVerifySchedule(33, &graph); | 1717 ComputeAndVerifySchedule(33, &graph); |
1713 } | 1718 } |
1714 | 1719 |
1715 #endif | 1720 #endif |
OLD | NEW |