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

Side by Side Diff: tests/compiler/dart2js/backend_dart/opt_constprop_test.dart

Issue 827763003: Reapply "Allow LetCont to bind multiple continuations." (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 5 years, 11 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
1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 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. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 import 'dart:async'; 5 import 'dart:async';
6 import '../mock_compiler.dart'; 6 import '../mock_compiler.dart';
7 import 'sexpr_unstringifier.dart'; 7 import 'sexpr_unstringifier.dart';
8 import 'package:async_helper/async_helper.dart'; 8 import 'package:async_helper/async_helper.dart';
9 import "package:expect/expect.dart"; 9 import "package:expect/expect.dart";
10 import 'package:compiler/src/cps_ir/cps_ir_nodes_sexpr.dart'; 10 import 'package:compiler/src/cps_ir/cps_ir_nodes_sexpr.dart';
(...skipping 13 matching lines...) Expand all
24 // } else { 24 // } else {
25 // j = 3; 25 // j = 3;
26 // } 26 // }
27 // return j; 27 // return j;
28 // } 28 // }
29 29
30 String CP1_IN = """ 30 String CP1_IN = """
31 (FunctionDefinition main () return () 31 (FunctionDefinition main () return ()
32 (LetPrim (v0 (Constant (Int 1))) 32 (LetPrim (v0 (Constant (Int 1)))
33 (LetPrim (v1 (Constant (Int 1))) 33 (LetPrim (v1 (Constant (Int 1)))
34 (LetCont (k0 (v2) 34 (LetCont
35 (LetCont (k1 () 35 ((k0 (v2)
36 (LetPrim (v3 (Constant (Int 2))) 36 (LetCont
37 (InvokeContinuation return (v3)))) 37 ((k1 ()
38 (LetCont (k2 () 38 (LetPrim (v3 (Constant (Int 2)))
39 (InvokeContinuation return (v3))))
40 (k2 ()
39 (LetPrim (v4 (Constant (Int 3))) 41 (LetPrim (v4 (Constant (Int 3)))
40 (InvokeContinuation return (v4)))) 42 (InvokeContinuation return (v4)))))
41 (Branch (IsTrue v2) k1 k2)))) 43 (Branch (IsTrue v2) k1 k2))))
42 (InvokeMethod v0 == (v1) k0))))) 44 (InvokeMethod v0 == (v1) k0)))))
43 """; 45 """;
44 String CP1_OUT = """ 46 String CP1_OUT = """
45 (FunctionDefinition main () return () 47 (FunctionDefinition main () return ()
46 (LetPrim (v0 (Constant (Int 1))) 48 (LetPrim (v0 (Constant (Int 1)))
47 (LetPrim (v1 (Constant (Int 1))) 49 (LetPrim (v1 (Constant (Int 1)))
48 (LetCont (k0 (v2) 50 (LetCont
49 (LetCont (k1 () 51 ((k0 (v2)
50 (LetPrim (v3 (Constant (Int 2))) 52 (LetCont
51 (InvokeContinuation return (v3)))) 53 ((k1 ()
52 (LetCont (k2 () 54 (LetPrim (v3 (Constant (Int 2)))
55 (InvokeContinuation return (v3))))
56 (k2 ()
53 (LetPrim (v4 (Constant (Int 3))) 57 (LetPrim (v4 (Constant (Int 3)))
54 (InvokeContinuation return (v4)))) 58 (InvokeContinuation return (v4)))))
55 (InvokeContinuation k1 ())))) 59 (InvokeContinuation k1 ()))))
56 (LetPrim (v5 (Constant (Bool true))) 60 (LetPrim (v5 (Constant (Bool true)))
57 (InvokeContinuation k0 (v5))))))) 61 (InvokeContinuation k0 (v5)))))))
58 """; 62 """;
59 63
60 // CP2 represents the following incoming dart code: 64 // CP2 represents the following incoming dart code:
61 // 65 //
62 // int main() { 66 // int main() {
63 // int i = 1; 67 // int i = 1;
64 // while (true) { 68 // while (true) {
65 // if (false || false) { 69 // if (false || false) {
66 // return i; 70 // return i;
67 // } 71 // }
68 // if (true && i == 1) { 72 // if (true && i == 1) {
69 // return i; 73 // return i;
70 // } 74 // }
71 // } 75 // }
72 // return 42; 76 // return 42;
73 // } 77 // }
74 78
75 String CP2_IN = """ 79 String CP2_IN = """
76 (FunctionDefinition main () return () 80 (FunctionDefinition main () return ()
77 (LetPrim (v0 (Constant (Int 1))) 81 (LetPrim (v0 (Constant (Int 1)))
78 (LetCont* (k0 () 82 (LetCont
79 (LetCont (k1 () 83 ((rec k0 ()
80 (LetPrim (v1 (Constant (Int 42))) 84 (LetCont
81 (InvokeContinuation return (v1)))) 85 ((k1 ()
82 (LetCont (k2 () 86 (LetPrim (v1 (Constant (Int 42)))
83 (LetPrim (v2 (Constant (Bool false))) 87 (InvokeContinuation return (v1))))
84 (LetCont (k3 (v3) 88 (k2 ()
85 (LetCont (k4 () 89 (LetPrim (v2 (Constant (Bool false)))
86 (InvokeContinuation return (v0))) 90 (LetCont
87 (LetCont (k5 () 91 ((k3 (v3)
88 (LetPrim (v4 (Constant (Bool true))) 92 (LetCont
89 (LetCont (k6 (v5) 93 ((k4 ()
90 (LetCont (k7 () 94 (InvokeContinuation return (v0)))
91 (InvokeContinuation return (v0))) 95 (k5 ()
92 (LetCont (k8 () 96 (LetPrim (v4 (Constant (Bool true)))
93 (InvokeContinuation* k0 ())) 97 (LetCont
94 (Branch (IsTrue v5) k7 k8)))) 98 ((k6 (v5)
95 (LetCont (k9 () 99 (LetCont
96 (LetPrim (v6 (Constant (Int 1))) 100 ((k7 ()
97 (LetCont (k10 (v7) 101 (InvokeContinuation return (v0 )))
98 (LetCont (k11 () 102 (k8 ()
99 (LetPrim (v8 (Constant (Bool true))) 103 (InvokeContinuation* k0 ())))
100 (InvokeContinuation k6 (v8)))) 104 (Branch (IsTrue v5) k7 k8))))
101 (LetCont (k12 () 105 (LetCont
102 (LetPrim (v9 (Constant (Bool false ))) 106 ((k9 ()
103 (InvokeContinuation k6 (v9)))) 107 (LetPrim (v6 (Constant (Int 1)))
104 (Branch (IsTrue v7) k11 k12)))) 108 (LetCont
105 (InvokeMethod v0 == (v6) k10)))) 109 ((k10 (v7)
106 (LetCont (k13 () 110 (LetCont
107 (LetPrim (v10 (Constant (Bool false))) 111 ((k11 ()
108 (InvokeContinuation k6 (v10)))) 112 (LetPrim (v8 (Const ant (Bool true)))
109 (Branch (IsTrue v4) k9 k13)))))) 113 (InvokeContinuati on k6 (v8))))
110 (Branch (IsTrue v3) k4 k5)))) 114 (k12 ()
111 (LetCont (k14 () 115 (LetPrim (v9 (Const ant (Bool false)))
112 (LetPrim (v11 (Constant (Bool true))) 116 (InvokeContinuati on k6 (v9)))))
113 (InvokeContinuation k3 (v11)))) 117 (Branch (IsTrue v7) k11 k12))))
114 (LetCont (k15 () 118 (InvokeMethod v0 == (v6) k10))) )
115 (LetPrim (v12 (Constant (Bool false))) 119 (k13 ()
116 (LetCont (k16 () 120 (LetPrim (v10 (Constant (Bool false )))
117 (LetPrim (v13 (Constant (Bool true))) 121 (InvokeContinuation k6 (v10)))))
118 (InvokeContinuation k3 (v13)))) 122 (Branch (IsTrue v4) k9 k13))))))
119 (LetCont (k17 () 123 (Branch (IsTrue v3) k4 k5))))
120 (LetPrim (v14 (Constant (Bool false))) 124 (LetCont
121 (InvokeContinuation k3 (v14)))) 125 ((k14 ()
122 (Branch (IsTrue v12) k16 k17))))) 126 (LetPrim (v11 (Constant (Bool true)))
123 (Branch (IsTrue v2) k14 k15)))))) 127 (InvokeContinuation k3 (v11))))
124 (LetPrim (v15 (Constant (Bool true))) 128 (k15 ()
125 (Branch (IsTrue v15) k2 k1))))) 129 (LetPrim (v12 (Constant (Bool false)))
130 (LetCont
131 ((k16 ()
132 (LetPrim (v13 (Constant (Bool true)))
133 (InvokeContinuation k3 (v13))))
134 (k17 ()
135 (LetPrim (v14 (Constant (Bool false)))
136 (InvokeContinuation k3 (v14)))))
137 (Branch (IsTrue v12) k16 k17)))))
138 (Branch (IsTrue v2) k14 k15))))))
139 (LetPrim (v15 (Constant (Bool true)))
140 (Branch (IsTrue v15) k2 k1)))))
126 (InvokeContinuation k0 ())))) 141 (InvokeContinuation k0 ()))))
127 """; 142 """;
128 String CP2_OUT = """ 143 String CP2_OUT = """
129 (FunctionDefinition main () return () 144 (FunctionDefinition main () return ()
130 (LetPrim (v0 (Constant (Int 1))) 145 (LetPrim (v0 (Constant (Int 1)))
131 (LetCont* (k0 () 146 (LetCont
132 (LetCont (k1 () 147 ((rec k0 ()
133 (LetPrim (v1 (Constant (Int 42))) 148 (LetCont
134 (InvokeContinuation return (v1)))) 149 ((k1 ()
135 (LetCont (k2 () 150 (LetPrim (v1 (Constant (Int 42)))
136 (LetPrim (v2 (Constant (Bool false))) 151 (InvokeContinuation return (v1))))
137 (LetCont (k3 (v3) 152 (k2 ()
138 (LetCont (k4 () 153 (LetPrim (v2 (Constant (Bool false)))
139 (InvokeContinuation return (v0))) 154 (LetCont
140 (LetCont (k5 () 155 ((k3 (v3)
141 (LetPrim (v4 (Constant (Bool true))) 156 (LetCont
142 (LetCont (k6 (v5) 157 ((k4 ()
143 (LetCont (k7 () 158 (InvokeContinuation return (v0)))
144 (InvokeContinuation return (v0))) 159 (k5 ()
145 (LetCont (k8 () 160 (LetPrim (v4 (Constant (Bool true)))
146 (InvokeContinuation* k0 ())) 161 (LetCont
147 (InvokeContinuation k7 ())))) 162 ((k6 (v5)
148 (LetCont (k9 () 163 (LetCont
149 (LetPrim (v6 (Constant (Int 1))) 164 ((k7 ()
150 (LetCont (k10 (v7) 165 (InvokeContinuation return (v0 )))
151 (LetCont (k11 () 166 (k8 ()
152 (LetPrim (v8 (Constant (Bool true))) 167 (InvokeContinuation* k0 ())))
153 (InvokeContinuation k6 (v8)))) 168 (InvokeContinuation k7 ()))))
154 (LetCont (k12 () 169 (LetCont
155 (LetPrim (v9 (Constant (Bool false ))) 170 ((k9 ()
156 (InvokeContinuation k6 (v9)))) 171 (LetPrim (v6 (Constant (Int 1)))
157 (InvokeContinuation k11 ())))) 172 (LetCont
158 (LetPrim (v10 (Constant (Bool true))) 173 ((k10 (v7)
159 (InvokeContinuation k10 (v10)))))) 174 (LetCont
160 (LetCont (k13 () 175 ((k11 ()
161 (LetPrim (v11 (Constant (Bool false))) 176 (LetPrim (v8 (Const ant (Bool true)))
162 (InvokeContinuation k6 (v11)))) 177 (InvokeContinuati on k6 (v8))))
163 (InvokeContinuation k9 ())))))) 178 (k12 ()
164 (InvokeContinuation k5 ())))) 179 (LetPrim (v9 (Const ant (Bool false)))
165 (LetCont (k14 () 180 (InvokeContinuati on k6 (v9)))))
166 (LetPrim (v12 (Constant (Bool true))) 181 (InvokeContinuation k11 ()))))
167 (InvokeContinuation k3 (v12)))) 182 (LetPrim (v10 (Constant (Bool t rue)))
168 (LetCont (k15 () 183 (InvokeContinuation k10 (v10) )))))
169 (LetPrim (v13 (Constant (Bool false))) 184 (k13 ()
170 (LetCont (k16 () 185 (LetPrim (v11 (Constant (Bool false )))
171 (LetPrim (v14 (Constant (Bool true))) 186 (InvokeContinuation k6 (v11)))))
172 (InvokeContinuation k3 (v14)))) 187 (InvokeContinuation k9 ()))))))
173 (LetCont (k17 () 188 (InvokeContinuation k5 ()))))
174 (LetPrim (v15 (Constant (Bool false))) 189 (LetCont
175 (InvokeContinuation k3 (v15)))) 190 ((k14 ()
176 (InvokeContinuation k17 ()))))) 191 (LetPrim (v12 (Constant (Bool true)))
177 (InvokeContinuation k15 ())))))) 192 (InvokeContinuation k3 (v12))))
178 (LetPrim (v16 (Constant (Bool true))) 193 (k15 ()
179 (InvokeContinuation k2 ()))))) 194 (LetPrim (v13 (Constant (Bool false)))
195 (LetCont
196 ((k16 ()
197 (LetPrim (v14 (Constant (Bool true)))
198 (InvokeContinuation k3 (v14))))
199 (k17 ()
200 (LetPrim (v15 (Constant (Bool false)))
201 (InvokeContinuation k3 (v15)))))
202 (InvokeContinuation k17 ())))))
203 (InvokeContinuation k15 ()))))))
204 (LetPrim (v16 (Constant (Bool true)))
205 (InvokeContinuation k2 ())))))
180 (InvokeContinuation k0 ())))) 206 (InvokeContinuation k0 ()))))
181 """; 207 """;
182 208
183 // CP3 represents the following incoming dart code: 209 // CP3 represents the following incoming dart code:
184 // 210 //
185 // int main() { 211 // int main() {
186 // int i = 1; 212 // int i = 1;
187 // i = f(); 213 // i = f();
188 // if (i == 1) { 214 // if (i == 1) {
189 // return 42; 215 // return 42;
190 // } 216 // }
191 // return i; 217 // return i;
192 // } 218 // }
193 219
194 String CP3_IN = """ 220 String CP3_IN = """
195 (FunctionDefinition main () return () 221 (FunctionDefinition main () return ()
196 (LetPrim (v0 (Constant (Int 1))) 222 (LetPrim (v0 (Constant (Int 1)))
197 (LetCont (k0 (v1) 223 (LetCont
198 (LetPrim (v2 (Constant (Int 1))) 224 ((k0 (v1)
199 (LetCont (k1 (v3) 225 (LetPrim (v2 (Constant (Int 1)))
200 (LetCont (k2 () 226 (LetCont
201 (LetPrim (v4 (Constant (Int 42))) 227 ((k1 (v3)
202 (InvokeContinuation return (v4)))) 228 (LetCont
203 (LetCont (k3 () 229 ((k2 ()
204 (InvokeContinuation return (v1))) 230 (LetPrim (v4 (Constant (Int 42)))
205 (Branch (IsTrue v3) k2 k3)))) 231 (InvokeContinuation return (v4))))
206 (InvokeMethod v1 == (v2) k1)))) 232 (k3 ()
233 (InvokeContinuation return (v1))))
234 (Branch (IsTrue v3) k2 k3))))
235 (InvokeMethod v1 == (v2) k1)))))
207 (InvokeStatic f () k0)))) 236 (InvokeStatic f () k0))))
208 """; 237 """;
209 String CP3_OUT = CP3_IN; 238 String CP3_OUT = CP3_IN;
210 239
211 // Addition. 240 // Addition.
212 241
213 String CP4_IN = """ 242 String CP4_IN = """
214 (FunctionDefinition main () return () 243 (FunctionDefinition main () return ()
215 (LetPrim (v0 (Constant (Int 1))) 244 (LetPrim (v0 (Constant (Int 1)))
216 (LetPrim (v1 (Constant (Int 2))) 245 (LetPrim (v1 (Constant (Int 2)))
217 (LetCont (k0 (v2) 246 (LetCont
218 (InvokeContinuation return (v2))) 247 ((k0 (v2)
248 (InvokeContinuation return (v2))))
219 (InvokeMethod v0 + (v1) k0))))) 249 (InvokeMethod v0 + (v1) k0)))))
220 """; 250 """;
221 String CP4_OUT = """ 251 String CP4_OUT = """
222 (FunctionDefinition main () return () 252 (FunctionDefinition main () return ()
223 (LetPrim (v0 (Constant (Int 1))) 253 (LetPrim (v0 (Constant (Int 1)))
224 (LetPrim (v1 (Constant (Int 2))) 254 (LetPrim (v1 (Constant (Int 2)))
225 (LetCont (k0 (v2) 255 (LetCont
226 (InvokeContinuation return (v2))) 256 ((k0 (v2)
257 (InvokeContinuation return (v2))))
227 (LetPrim (v3 (Constant (Int 3))) 258 (LetPrim (v3 (Constant (Int 3)))
228 (InvokeContinuation k0 (v3))))))) 259 (InvokeContinuation k0 (v3)))))))
229 """; 260 """;
230 261
231 // Array access operator (no optimization). 262 // Array access operator (no optimization).
232 263
233 String CP5_IN = """ 264 String CP5_IN = """
234 (FunctionDefinition main () return () 265 (FunctionDefinition main () return ()
235 (LetPrim (v0 (Constant (Int 1))) 266 (LetPrim (v0 (Constant (Int 1)))
236 (LetPrim (v1 (Constant (Int 2))) 267 (LetPrim (v1 (Constant (Int 2)))
237 (LetCont (k0 (v2) 268 (LetCont
238 (InvokeContinuation return (v2))) 269 ((k0 (v2)
270 (InvokeContinuation return (v2))))
239 (InvokeMethod v0 [] (v1) k0))))) 271 (InvokeMethod v0 [] (v1) k0)))))
240 """; 272 """;
241 String CP5_OUT = CP5_IN; 273 String CP5_OUT = CP5_IN;
242 274
243 // Division by 0. 275 // Division by 0.
244 276
245 String CP6_IN = """ 277 String CP6_IN = """
246 (FunctionDefinition main () return () 278 (FunctionDefinition main () return ()
247 (LetPrim (v0 (Constant (Int 1))) 279 (LetPrim (v0 (Constant (Int 1)))
248 (LetPrim (v1 (Constant (Int 0))) 280 (LetPrim (v1 (Constant (Int 0)))
249 (LetCont (k0 (v2) 281 (LetCont
250 (InvokeContinuation return (v2))) 282 ((k0 (v2)
251 (InvokeMethod v0 / (v1) k0))))) 283 (InvokeContinuation return (v2))))
284 (InvokeMethod v0 / (v1) k0)))))
252 """; 285 """;
253 String CP6_OUT = """ 286 String CP6_OUT = """
254 (FunctionDefinition main () return () 287 (FunctionDefinition main () return ()
255 (LetPrim (v0 (Constant (Int 1))) 288 (LetPrim (v0 (Constant (Int 1)))
256 (LetPrim (v1 (Constant (Int 0))) 289 (LetPrim (v1 (Constant (Int 0)))
257 (LetCont (k0 (v2) 290 (LetCont
258 (InvokeContinuation return (v2))) 291 ((k0 (v2)
292 (InvokeContinuation return (v2))))
259 (LetPrim (v3 (Constant (Double Infinity))) 293 (LetPrim (v3 (Constant (Double Infinity)))
260 (InvokeContinuation k0 (v3))))))) 294 (InvokeContinuation k0 (v3)))))))
261 """; 295 """;
262 296
263 // Concatenate strings. 297 // Concatenate strings.
264 298
265 String CP7_IN = """ 299 String CP7_IN = """
266 (FunctionDefinition main () return () 300 (FunctionDefinition main () return ()
267 (LetPrim (v0 (Constant (String "b"))) 301 (LetPrim (v0 (Constant (String "b")))
268 (LetPrim (v1 (Constant (String "d"))) 302 (LetPrim (v1 (Constant (String "d")))
269 (LetPrim (v2 (Constant (String "a"))) 303 (LetPrim (v2 (Constant (String "a")))
270 (LetPrim (v3 (Constant (String "c"))) 304 (LetPrim (v3 (Constant (String "c")))
271 (LetPrim (v4 (Constant (String ""))) 305 (LetPrim (v4 (Constant (String "")))
272 (LetCont (k0 (v5) 306 (LetCont
273 (LetCont (k1 (v6) 307 ((k0 (v5)
274 (InvokeContinuation return (v6))) 308 (LetCont
275 (InvokeMethod v5 length () k1))) 309 ((k1 (v6)
310 (InvokeContinuation return (v6))))
311 (InvokeMethod v5 length () k1))))
276 (ConcatenateStrings (v2 v0 v3 v1 v4) k0)))))))) 312 (ConcatenateStrings (v2 v0 v3 v1 v4) k0))))))))
277 """; 313 """;
278 String CP7_OUT = """ 314 String CP7_OUT = """
279 (FunctionDefinition main () return () 315 (FunctionDefinition main () return ()
280 (LetPrim (v0 (Constant (String "b"))) 316 (LetPrim (v0 (Constant (String "b")))
281 (LetPrim (v1 (Constant (String "d"))) 317 (LetPrim (v1 (Constant (String "d")))
282 (LetPrim (v2 (Constant (String "a"))) 318 (LetPrim (v2 (Constant (String "a")))
283 (LetPrim (v3 (Constant (String "c"))) 319 (LetPrim (v3 (Constant (String "c")))
284 (LetPrim (v4 (Constant (String ""))) 320 (LetPrim (v4 (Constant (String "")))
285 (LetCont (k0 (v5) 321 (LetCont
286 (LetCont (k1 (v6) 322 ((k0 (v5)
287 (InvokeContinuation return (v6))) 323 (LetCont
288 (InvokeMethod v5 length () k1))) 324 ((k1 (v6)
325 (InvokeContinuation return (v6))))
326 (InvokeMethod v5 length () k1))))
289 (LetPrim (v7 (Constant (String "abcd"))) 327 (LetPrim (v7 (Constant (String "abcd")))
290 (InvokeContinuation k0 (v7)))))))))) 328 (InvokeContinuation k0 (v7))))))))))
291 """; 329 """;
292 330
293 // TODO(jgruber): We can't test is-check optimization because the unstringifier 331 // TODO(jgruber): We can't test is-check optimization because the unstringifier
294 // does not recreate accurate types for the TypeOperator node. 332 // does not recreate accurate types for the TypeOperator node.
295 333
296 // Simple branch removal. 334 // Simple branch removal.
297 335
298 String CP8_IN = """ 336 String CP8_IN = """
299 (FunctionDefinition main () return () 337 (FunctionDefinition main () return ()
300 (LetPrim (v0 (Constant (Int 1))) 338 (LetPrim (v0 (Constant (Int 1)))
301 (LetPrim (v1 (Constant (Int 1))) 339 (LetPrim (v1 (Constant (Int 1)))
302 (LetCont (k0 (v2) 340 (LetCont
303 (LetCont (k1 () 341 ((k0 (v2)
304 (LetPrim (v3 (Constant (Int 42))) 342 (LetCont
305 (InvokeContinuation return (v3)))) 343 ((k1 ()
306 (LetCont (k2 () 344 (LetPrim (v3 (Constant (Int 42)))
307 (InvokeContinuation return (v0))) 345 (InvokeContinuation return (v3))))
308 (Branch (IsTrue v2) k1 k2)))) 346 (k2 ()
347 (InvokeContinuation return (v0))))
348 (Branch (IsTrue v2) k1 k2))))
309 (InvokeMethod v0 == (v1) k0))))) 349 (InvokeMethod v0 == (v1) k0)))))
310 """; 350 """;
311 String CP8_OUT = """ 351 String CP8_OUT = """
312 (FunctionDefinition main () return () 352 (FunctionDefinition main () return ()
313 (LetPrim (v0 (Constant (Int 1))) 353 (LetPrim (v0 (Constant (Int 1)))
314 (LetPrim (v1 (Constant (Int 1))) 354 (LetPrim (v1 (Constant (Int 1)))
315 (LetCont (k0 (v2) 355 (LetCont
316 (LetCont (k1 () 356 ((k0 (v2)
317 (LetPrim (v3 (Constant (Int 42))) 357 (LetCont
318 (InvokeContinuation return (v3)))) 358 ((k1 ()
319 (LetCont (k2 () 359 (LetPrim (v3 (Constant (Int 42)))
320 (InvokeContinuation return (v0))) 360 (InvokeContinuation return (v3))))
321 (InvokeContinuation k1 ())))) 361 (k2 ()
362 (InvokeContinuation return (v0))))
363 (InvokeContinuation k1 ()))))
322 (LetPrim (v4 (Constant (Bool true))) 364 (LetPrim (v4 (Constant (Bool true)))
323 (InvokeContinuation k0 (v4))))))) 365 (InvokeContinuation k0 (v4)))))))
324 """; 366 """;
325 367
326 // While loop. 368 // While loop.
327 369
328 String CP9_IN = """ 370 String CP9_IN = """
329 (FunctionDefinition main () return () 371 (FunctionDefinition main () return ()
330 (LetPrim (v0 (Constant (Int 1))) 372 (LetPrim (v0 (Constant (Int 1)))
331 (LetCont* (k0 (v1) 373 (LetCont
332 (LetCont (k1 () 374 ((rec k0 (v1)
333 (InvokeContinuation return (v1))) 375 (LetCont
334 (LetCont (k2 () 376 ((k1 ()
335 (LetPrim (v2 (Constant (Int 1))) 377 (InvokeContinuation return (v1)))
336 (LetCont (k3 (v3) 378 (k2 ()
337 (LetCont (k4 (v4) 379 (LetPrim (v2 (Constant (Int 1)))
338 (LetCont (k5 () 380 (LetCont
339 (LetPrim (v5 (Constant (Int 42))) 381 ((k3 (v3)
340 (InvokeContinuation return (v5)))) 382 (LetCont
341 (LetCont (k6 () 383 ((k4 (v4)
342 (LetPrim (v6 (Constant (Int 1))) 384 (LetCont
343 (LetCont (k7 (v7) 385 ((k5 ()
344 (InvokeContinuation* k0 (v7))) 386 (LetPrim (v5 (Constant (Int 42)))
345 (InvokeMethod v1 + (v6) k7)))) 387 (InvokeContinuation return (v5))))
346 (Branch (IsTrue v4) k5 k6)))) 388 (k6 ()
347 (LetCont (k8 () 389 (LetPrim (v6 (Constant (Int 1)))
348 (LetPrim (v8 (Constant (Bool false))) 390 (LetCont
349 (InvokeContinuation k4 (v8)))) 391 ((k7 (v7)
350 (LetCont (k9 () 392 (InvokeContinuation* k0 (v7))) )
351 (LetPrim (v9 (Constant (Bool true))) 393 (InvokeMethod v1 + (v6) k7)))))
352 (InvokeContinuation k4 (v9)))) 394 (Branch (IsTrue v4) k5 k6))))
353 (Branch (IsTrue v3) k8 k9))))) 395 (LetCont
354 (InvokeMethod v1 == (v2) k3)))) 396 ((k8 ()
355 (LetPrim (v10 (Constant (Bool true))) 397 (LetPrim (v8 (Constant (Bool false)))
356 (Branch (IsTrue v10) k2 k1))))) 398 (InvokeContinuation k4 (v8))))
399 (k9 ()
400 (LetPrim (v9 (Constant (Bool true)))
401 (InvokeContinuation k4 (v9)))))
402 (Branch (IsTrue v3) k8 k9)))))
403 (InvokeMethod v1 == (v2) k3)))))
404 (LetPrim (v10 (Constant (Bool true)))
405 (Branch (IsTrue v10) k2 k1)))))
357 (InvokeContinuation k0 (v0))))) 406 (InvokeContinuation k0 (v0)))))
358 """; 407 """;
359 String CP9_OUT = """ 408 String CP9_OUT = """
360 (FunctionDefinition main () return () 409 (FunctionDefinition main () return ()
361 (LetPrim (v0 (Constant (Int 1))) 410 (LetPrim (v0 (Constant (Int 1)))
362 (LetCont* (k0 (v1) 411 (LetCont
363 (LetCont (k1 () 412 ((rec k0 (v1)
364 (InvokeContinuation return (v1))) 413 (LetCont
365 (LetCont (k2 () 414 ((k1 ()
366 (LetPrim (v2 (Constant (Int 1))) 415 (InvokeContinuation return (v1)))
367 (LetCont (k3 (v3) 416 (k2 ()
368 (LetCont (k4 (v4) 417 (LetPrim (v2 (Constant (Int 1)))
369 (LetCont (k5 () 418 (LetCont
370 (LetPrim (v5 (Constant (Int 42))) 419 ((k3 (v3)
371 (InvokeContinuation return (v5)))) 420 (LetCont
372 (LetCont (k6 () 421 ((k4 (v4)
373 (LetPrim (v6 (Constant (Int 1))) 422 (LetCont
374 (LetCont (k7 (v7) 423 ((k5 ()
375 (InvokeContinuation* k0 (v7))) 424 (LetPrim (v5 (Constant (Int 42)))
376 (InvokeMethod v1 + (v6) k7)))) 425 (InvokeContinuation return (v5))))
377 (Branch (IsTrue v4) k5 k6)))) 426 (k6 ()
378 (LetCont (k8 () 427 (LetPrim (v6 (Constant (Int 1)))
379 (LetPrim (v8 (Constant (Bool false))) 428 (LetCont
380 (InvokeContinuation k4 (v8)))) 429 ((k7 (v7)
381 (LetCont (k9 () 430 (InvokeContinuation* k0 (v7))))
382 (LetPrim (v9 (Constant (Bool true))) 431 (InvokeMethod v1 + (v6) k7)))))
383 (InvokeContinuation k4 (v9)))) 432 (Branch (IsTrue v4) k5 k6))))
384 (Branch (IsTrue v3) k8 k9))))) 433 (LetCont
385 (InvokeMethod v1 == (v2) k3)))) 434 ((k8 ()
386 (LetPrim (v10 (Constant (Bool true))) 435 (LetPrim (v8 (Constant (Bool false)))
387 (InvokeContinuation k2 ()))))) 436 (InvokeContinuation k4 (v8))))
437 (k9 ()
438 (LetPrim (v9 (Constant (Bool true)))
439 (InvokeContinuation k4 (v9)))))
440 (Branch (IsTrue v3) k8 k9)))))
441 (InvokeMethod v1 == (v2) k3)))))
442 (LetPrim (v10 (Constant (Bool true)))
443 (InvokeContinuation k2 ())))))
388 (InvokeContinuation k0 (v0))))) 444 (InvokeContinuation k0 (v0)))))
389 """; 445 """;
390 446
391 // While loop, from: 447 // While loop, from:
392 // 448 //
393 // int main() { 449 // int main() {
394 // for (int i = 0; i < 2; i++) { 450 // for (int i = 0; i < 2; i++) {
395 // print(42 + i); 451 // print(42 + i);
396 // } 452 // }
397 // } 453 // }
398 454
399 String CP10_IN = """ 455 String CP10_IN = """
400 (FunctionDefinition main () return () 456 (FunctionDefinition main () return ()
401 (LetPrim (v0 (Constant (Int 0))) 457 (LetPrim (v0 (Constant (Int 0)))
402 (LetCont* (k0 (v1) 458 (LetCont
403 (LetCont (k1 () 459 ((rec k0 (v1)
404 (LetPrim (v2 (Constant (Null))) 460 (LetCont
405 (InvokeContinuation return (v2)))) 461 ((k1 ()
406 (LetCont (k2 () 462 (LetPrim (v2 (Constant (Null)))
407 (LetPrim (v3 (Constant (Int 42))) 463 (InvokeContinuation return (v2))))
408 (LetCont (k3 (v4) 464 (k2 ()
409 (LetCont (k4 (v5) 465 (LetPrim (v3 (Constant (Int 42)))
410 (LetPrim (v6 (Constant (Int 1))) 466 (LetCont
411 (LetCont (k5 (v7) 467 ((k3 (v4)
412 (InvokeContinuation* k0 (v7))) 468 (LetCont
413 (InvokeMethod v1 + (v6) k5)))) 469 ((k4 (v5)
414 (InvokeStatic print (v4) k4))) 470 (LetPrim (v6 (Constant (Int 1)))
415 (InvokeMethod v3 + (v1) k3)))) 471 (LetCont
416 (LetPrim (v8 (Constant (Int 2))) 472 ((k5 (v7)
417 (LetCont (k6 (v9) 473 (InvokeContinuation* k0 (v7))))
418 (Branch (IsTrue v9) k2 k1)) 474 (InvokeMethod v1 + (v6) k5)))))
419 (InvokeMethod v1 < (v8) k6)))))) 475 (InvokeStatic print (v4) k4))))
476 (InvokeMethod v3 + (v1) k3)))))
477 (LetPrim (v8 (Constant (Int 2)))
478 (LetCont
479 ((k6 (v9)
480 (Branch (IsTrue v9) k2 k1)))
481 (InvokeMethod v1 < (v8) k6))))))
420 (InvokeContinuation k0 (v0))))) 482 (InvokeContinuation k0 (v0)))))
421 """; 483 """;
422 String CP10_OUT = CP10_IN; 484 String CP10_OUT = CP10_IN;
423 485
424 /// Normalizes whitespace by replacing all whitespace sequences by a single 486 /// Normalizes whitespace by replacing all whitespace sequences by a single
425 /// space and trimming leading and trailing whitespace. 487 /// space and trimming leading and trailing whitespace.
426 String normalizeSExpr(String input) { 488 String normalizeSExpr(String input) {
427 return input.replaceAll(new RegExp(r'[ \n\t]+'), ' ').trim(); 489 return input.replaceAll(new RegExp(r'[ \n\t]+'), ' ').trim();
428 } 490 }
429 491
(...skipping 27 matching lines...) Expand all
457 asyncTest(() => testConstantPropagator(CP2_IN, CP2_OUT)); 519 asyncTest(() => testConstantPropagator(CP2_IN, CP2_OUT));
458 asyncTest(() => testConstantPropagator(CP3_IN, CP3_OUT)); 520 asyncTest(() => testConstantPropagator(CP3_IN, CP3_OUT));
459 asyncTest(() => testConstantPropagator(CP4_IN, CP4_OUT)); 521 asyncTest(() => testConstantPropagator(CP4_IN, CP4_OUT));
460 asyncTest(() => testConstantPropagator(CP5_IN, CP5_OUT)); 522 asyncTest(() => testConstantPropagator(CP5_IN, CP5_OUT));
461 asyncTest(() => testConstantPropagator(CP6_IN, CP6_OUT)); 523 asyncTest(() => testConstantPropagator(CP6_IN, CP6_OUT));
462 asyncTest(() => testConstantPropagator(CP7_IN, CP7_OUT)); 524 asyncTest(() => testConstantPropagator(CP7_IN, CP7_OUT));
463 asyncTest(() => testConstantPropagator(CP8_IN, CP8_OUT)); 525 asyncTest(() => testConstantPropagator(CP8_IN, CP8_OUT));
464 asyncTest(() => testConstantPropagator(CP9_IN, CP9_OUT)); 526 asyncTest(() => testConstantPropagator(CP9_IN, CP9_OUT));
465 asyncTest(() => testConstantPropagator(CP10_IN, CP10_OUT)); 527 asyncTest(() => testConstantPropagator(CP10_IN, CP10_OUT));
466 } 528 }
OLDNEW
« no previous file with comments | « pkg/compiler/lib/src/tree_ir/tree_ir_builder.dart ('k') | tests/compiler/dart2js/backend_dart/opt_redundant_phi_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698