Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(199)

Side by Side Diff: tests/compiler/dart2js/value_range_test.dart

Issue 10968060: Add a value range analysis phase to remove bounds checks. (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 8 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file.
4
5 #import("compiler_helper.dart");
6
7 const int REMOVED = 0;
8 const int ABOVE_ZERO = 1;
9 const int BELOW_LENGTH = 2;
10 const int KEPT = 3;
11
12 final List TESTS = [
13 """
14 main() {
15 var a = new List();
16 var sum = 0;
17 for (int i = 0; i < a.length; i++) {
18 sum += a[i];
19 }
20 return sum;
21 }
22 """,
23 REMOVED,
24
25 """
26 main(value) {
27 var a = new List();
28 var sum = 0;
29 for (int i = 0; i < value; i++) {
30 sum += a[i];
31 }
32 return sum;
33 }
34 """,
35 ABOVE_ZERO,
36
37 """
38 main(check) {
39 // Make sure value is an int.
40 var value = check ? 42 : 54;
41 var a = new List(value);
42 var sum = 0;
43 for (int i = 0; i < value; i++) {
44 sum += a[i];
45 }
46 return sum;
47 }
48 """,
49 REMOVED,
50
51 """
52 main() {
53 var a = new List();
54 return a[0];
55 }
56 """,
57 KEPT,
58
59 """
60 main() {
61 var a = new List();
62 return a.removeLast();
63 }
64 """,
65 KEPT,
66
67 """
68 main() {
69 var a = new List(4);
70 return a[0];
71 }
72 """,
73 REMOVED,
74
75 """
76 main() {
77 var a = new List(4);
78 return a.removeLast();
79 }
80 """,
81 REMOVED,
82
83 """
84 main(value) {
85 var a = new List(value);
86 return a[value];
87 }
88 """,
89 KEPT,
90
91 """
92 main(value) {
93 var a = new List(1024);
94 return a[1023 & value];
95 }
96 """,
97 REMOVED,
98
99 """
100 main(value) {
101 var a = new List(1024);
102 return a[1024 & value];
103 }
104 """,
105 ABOVE_ZERO
106 ];
107
108 expect(String code, int kind) {
109 String generated = compile(code);
110 switch (kind) {
111 case REMOVED:
112 Expect.isTrue(!generated.contains('ioore'));
113 break;
114
115 case ABOVE_ZERO:
116 Expect.isTrue(!generated.contains('> 0'));
117 break;
118
119 case BELOW_LENGTH:
120 Expect.isTrue(!generated.contains('||'));
121 break;
122
123 case KEPT:
124 Expect.isTrue(generated.contains('ioore'));
125 break;
126 }
127 }
128
129
130 main() {
131 for (int i = 0; i < TESTS.length; i += 2) {
132 expect(TESTS[i], TESTS[i + 1]);
133 }
134 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698