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

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

Issue 853083005: Revert "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 'sexpr_unstringifier.dart'; 5 import 'sexpr_unstringifier.dart';
6 import "package:expect/expect.dart"; 6 import "package:expect/expect.dart";
7 import 'package:compiler/src/cps_ir/cps_ir_nodes.dart'; 7 import 'package:compiler/src/cps_ir/cps_ir_nodes.dart';
8 import 'package:compiler/src/cps_ir/cps_ir_nodes_sexpr.dart'; 8 import 'package:compiler/src/cps_ir/cps_ir_nodes_sexpr.dart';
9 import 'package:compiler/src/cps_ir/optimizers.dart'; 9 import 'package:compiler/src/cps_ir/optimizers.dart';
10 10
(...skipping 26 matching lines...) Expand all
37 // int main() { 37 // int main() {
38 // int i = 42; 38 // int i = 42;
39 // int j = i + 1; 39 // int j = i + 1;
40 // return 0; 40 // return 0;
41 // } 41 // }
42 42
43 String ITERATIVE_DEAD_VAL1_IN = """ 43 String ITERATIVE_DEAD_VAL1_IN = """
44 (FunctionDefinition main () return () 44 (FunctionDefinition main () return ()
45 (LetPrim (v0 (Constant (Int 42))) 45 (LetPrim (v0 (Constant (Int 42)))
46 (LetPrim (v1 (Constant (Int 1))) 46 (LetPrim (v1 (Constant (Int 1)))
47 (LetCont ((k0 (v2) 47 (LetCont (k0 (v2)
48 (LetPrim (v3 (Constant (Int 0))) 48 (LetPrim (v3 (Constant (Int 0)))
49 (InvokeContinuation return (v3))))) 49 (InvokeContinuation return (v3))))
50 (InvokeMethod v0 + (v1) k0))))) 50 (InvokeMethod v0 + (v1) k0)))))
51 """; 51 """;
52 String ITERATIVE_DEAD_VAL1_OUT = ITERATIVE_DEAD_VAL1_IN; 52 String ITERATIVE_DEAD_VAL1_OUT = ITERATIVE_DEAD_VAL1_IN;
53 53
54 // Iterative dead-val. IR written by hand. 54 // Iterative dead-val. IR written by hand.
55 55
56 String ITERATIVE_DEAD_VAL2_IN = """ 56 String ITERATIVE_DEAD_VAL2_IN = """
57 (FunctionDefinition main () return () 57 (FunctionDefinition main () return ()
58 (LetPrim (v0 (Constant (Int 42))) 58 (LetPrim (v0 (Constant (Int 42)))
59 (LetPrim (v1 59 (LetPrim (v1
60 (CreateFunction 60 (CreateFunction
61 (FunctionDefinition f (i) return () 61 (FunctionDefinition f (i) return ()
62 (InvokeContinuation return (v0))))) 62 (InvokeContinuation return (v0)))))
63 (LetPrim (v2 (Constant (Int 0))) 63 (LetPrim (v2 (Constant (Int 0)))
64 (InvokeContinuation return (v2)))))) 64 (InvokeContinuation return (v2))))))
65 """; 65 """;
66 String ITERATIVE_DEAD_VAL2_OUT = """ 66 String ITERATIVE_DEAD_VAL2_OUT = """
67 (FunctionDefinition main () return () 67 (FunctionDefinition main () return ()
68 (LetPrim (v0 (Constant (Int 0))) 68 (LetPrim (v0 (Constant (Int 0)))
69 (InvokeContinuation return (v0)))) 69 (InvokeContinuation return (v0))))
70 """; 70 """;
71 71
72 // Basic dead-cont: letcont k x = L in K -> K (k not free in K). 72 // Basic dead-cont: letcont k x = L in K -> K (k not free in K).
73 // IR written by hand. 73 // IR written by hand.
74 74
75 String DEAD_CONT_IN = """ 75 String DEAD_CONT_IN = """
76 (FunctionDefinition main () return () 76 (FunctionDefinition main () return ()
77 (LetPrim (v4 (Constant (Int 0))) 77 (LetPrim (v4 (Constant (Int 0)))
78 (LetCont ((k0 (v0) 78 (LetCont (k0 (v0)
79 (InvokeConstructor List () return))) 79 (InvokeConstructor List () return))
80 (LetCont ((k1 (v1) 80 (LetCont (k1 (v1)
81 (LetCont ((k2 (v2) 81 (LetCont (k2 (v2)
82 (LetPrim (v3 (Constant (Int 0))) 82 (LetPrim (v3 (Constant (Int 0)))
83 (InvokeContinuation return (v3))))) 83 (InvokeContinuation return (v3))))
84 (InvokeStatic print (v4) k2)))) 84 (InvokeStatic print (v4) k2)))
85 (InvokeStatic print (v4) k1))))) 85 (InvokeStatic print (v4) k1)))))
86 """; 86 """;
87 String DEAD_CONT_OUT = """ 87 String DEAD_CONT_OUT = """
88 (FunctionDefinition main () return () 88 (FunctionDefinition main () return ()
89 (LetPrim (v0 (Constant (Int 0))) 89 (LetPrim (v0 (Constant (Int 0)))
90 (LetCont ((k0 (v1) 90 (LetCont (k0 (v1)
91 (LetCont ((k1 (v2) 91 (LetCont (k1 (v2)
92 (LetPrim (v3 (Constant (Int 0))) 92 (LetPrim (v3 (Constant (Int 0)))
93 (InvokeContinuation return (v3))))) 93 (InvokeContinuation return (v3))))
94 (InvokeStatic print (v0) k1)))) 94 (InvokeStatic print (v0) k1)))
95 (InvokeStatic print (v0) k0)))) 95 (InvokeStatic print (v0) k0))))
96 """; 96 """;
97 97
98 // Iterative dead-cont. IR written by hand. 98 // Iterative dead-cont. IR written by hand.
99 99
100 String ITERATIVE_DEAD_CONT_IN = """ 100 String ITERATIVE_DEAD_CONT_IN = """
101 (FunctionDefinition main () return () 101 (FunctionDefinition main () return ()
102 (LetPrim (v4 (Constant (Int 0))) 102 (LetPrim (v4 (Constant (Int 0)))
103 (LetCont ((k0 (v0) 103 (LetCont (k0 (v0)
104 (InvokeConstructor List () return))) 104 (InvokeConstructor List () return))
105 (LetCont ((k3 (v5) 105 (LetCont (k3 (v5)
106 (InvokeContinuation k0 (v5)))) 106 (InvokeContinuation k0 (v5)))
107 (LetCont ((k1 (v1) 107 (LetCont (k1 (v1)
108 (LetCont ((k2 (v2) 108 (LetCont (k2 (v2)
109 (LetPrim (v3 (Constant (Int 0))) 109 (LetPrim (v3 (Constant (Int 0)))
110 (InvokeContinuation return (v3))))) 110 (InvokeContinuation return (v3))))
111 (InvokeStatic print (v4) k2)))) 111 (InvokeStatic print (v4) k2)))
112 (InvokeStatic print (v4) k1)))))) 112 (InvokeStatic print (v4) k1))))))
113 """; 113 """;
114 String ITERATIVE_DEAD_CONT_OUT = """ 114 String ITERATIVE_DEAD_CONT_OUT = """
115 (FunctionDefinition main () return () 115 (FunctionDefinition main () return ()
116 (LetPrim (v0 (Constant (Int 0))) 116 (LetPrim (v0 (Constant (Int 0)))
117 (LetCont ((k0 (v1) 117 (LetCont (k0 (v1)
118 (LetCont ((k1 (v2) 118 (LetCont (k1 (v2)
119 (LetPrim (v3 (Constant (Int 0))) 119 (LetPrim (v3 (Constant (Int 0)))
120 (InvokeContinuation return (v3))))) 120 (InvokeContinuation return (v3))))
121 (InvokeStatic print (v0) k1)))) 121 (InvokeStatic print (v0) k1)))
122 (InvokeStatic print (v0) k0)))) 122 (InvokeStatic print (v0) k0))))
123 """; 123 """;
124 124
125 // Beta-cont-lin: letcont k x = K in C[k y] -> C[K[y/x]] (k not free in C). 125 // Beta-cont-lin: letcont k x = K in C[k y] -> C[K[y/x]] (k not free in C).
126 // IR written by hand. 126 // IR written by hand.
127 127
128 String BETA_CONT_LIN_IN = """ 128 String BETA_CONT_LIN_IN = """
129 (FunctionDefinition main () return () 129 (FunctionDefinition main () return ()
130 (LetCont ((k0 (v0) 130 (LetCont (k0 (v0)
131 (LetCont ((k1 (v1) 131 (LetCont (k1 (v1)
132 (LetCont ((k2 (v2) 132 (LetCont (k2 (v2)
133 (LetPrim (v3 (Constant (Int 0))) 133 (LetPrim (v3 (Constant (Int 0)))
134 (InvokeContinuation return (v3))))) 134 (InvokeContinuation return (v3))))
135 (InvokeStatic print (v0) k2)))) 135 (InvokeStatic print (v0) k2)))
136 (InvokeStatic print (v0) k1)))) 136 (InvokeStatic print (v0) k1)))
137 (LetPrim (v4 (Constant (Int 0))) 137 (LetPrim (v4 (Constant (Int 0)))
138 (InvokeContinuation k0 (v4))))) 138 (InvokeContinuation k0 (v4)))))
139 """; 139 """;
140 String BETA_CONT_LIN_OUT = """ 140 String BETA_CONT_LIN_OUT = """
141 (FunctionDefinition main () return () 141 (FunctionDefinition main () return ()
142 (LetPrim (v0 (Constant (Int 0))) 142 (LetPrim (v0 (Constant (Int 0)))
143 (LetCont ((k0 (v1) 143 (LetCont (k0 (v1)
144 (LetCont ((k1 (v2) 144 (LetCont (k1 (v2)
145 (LetPrim (v3 (Constant (Int 0))) 145 (LetPrim (v3 (Constant (Int 0)))
146 (InvokeContinuation return (v3))))) 146 (InvokeContinuation return (v3))))
147 (InvokeStatic print (v0) k1)))) 147 (InvokeStatic print (v0) k1)))
148 (InvokeStatic print (v0) k0)))) 148 (InvokeStatic print (v0) k0))))
149 """; 149 """;
150 150
151 // Beta-cont-lin with recursive continuation. IR written by hand. 151 // Beta-cont-lin with recursive continuation. IR written by hand.
152 152
153 String RECURSIVE_BETA_CONT_LIN_IN = """ 153 String RECURSIVE_BETA_CONT_LIN_IN = """
154 (FunctionDefinition main () return () 154 (FunctionDefinition main () return ()
155 (LetCont ((rec k0 (v0) 155 (LetCont* (k0 (v0)
156 (InvokeContinuation* k0 (v0)))) 156 (InvokeContinuation* k0 (v0)))
157 (LetPrim (v1 (Constant (Int 0))) 157 (LetPrim (v1 (Constant (Int 0)))
158 (InvokeContinuation k0 (v1))))) 158 (InvokeContinuation k0 (v1)))))
159 """; 159 """;
160 String RECURSIVE_BETA_CONT_LIN_OUT = RECURSIVE_BETA_CONT_LIN_IN; 160 String RECURSIVE_BETA_CONT_LIN_OUT = RECURSIVE_BETA_CONT_LIN_IN;
161 161
162 // Beta-cont-lin used inside body. IR written by hand. 162 // Beta-cont-lin used inside body. IR written by hand.
163 163
164 String USED_BETA_CONT_LIN_IN = """ 164 String USED_BETA_CONT_LIN_IN = """
165 (FunctionDefinition main () return () 165 (FunctionDefinition main () return ()
166 (LetPrim (v0 (Constant (Int 0))) 166 (LetPrim (v0 (Constant (Int 0)))
167 (LetCont ((k0 (v1) 167 (LetCont (k0 (v1)
168 (LetCont ((k1 (v2) 168 (LetCont (k1 (v2)
169 (LetCont ((k2 (v3) 169 (LetCont (k2 (v3)
170 (LetPrim (v4 (Constant (Int 0))) 170 (LetPrim (v4 (Constant (Int 0)))
171 (InvokeContinuation return (v4))))) 171 (InvokeContinuation return (v4))))
172 (InvokeStatic print (v1) k2)))) 172 (InvokeStatic print (v1) k2)))
173 (InvokeStatic print (v1) k1)))) 173 (InvokeStatic print (v1) k1)))
174 (LetPrim (v5 174 (LetPrim (v5
175 (CreateFunction 175 (CreateFunction
176 (FunctionDefinition f () return () 176 (FunctionDefinition f () return ()
177 (InvokeContinuation return (v1))))) 177 (InvokeContinuation return (v1)))))
178 (InvokeContinuation k0 (v0)))))) 178 (InvokeContinuation k0 (v0))))))
179 """; 179 """;
180 String USED_BETA_CONT_LIN_OUT = """ 180 String USED_BETA_CONT_LIN_OUT = """
181 (FunctionDefinition main () return () 181 (FunctionDefinition main () return ()
182 (LetPrim (v0 (Constant (Int 0))) 182 (LetPrim (v0 (Constant (Int 0)))
183 (LetCont ((k0 (v1) 183 (LetCont (k0 (v1)
184 (LetCont ((k1 (v2) 184 (LetCont (k1 (v2)
185 (LetPrim (v3 (Constant (Int 0))) 185 (LetPrim (v3 (Constant (Int 0)))
186 (InvokeContinuation return (v3))))) 186 (InvokeContinuation return (v3))))
187 (InvokeStatic print (v0) k1)))) 187 (InvokeStatic print (v0) k1)))
188 (InvokeStatic print (v0) k0)))) 188 (InvokeStatic print (v0) k0))))
189 """; 189 """;
190 190
191 // Eta-cont: letcont k x = j x in K -> K[j/k]. 191 // Eta-cont: letcont k x = j x in K -> K[j/k].
192 // IR written by hand. 192 // IR written by hand.
193 193
194 String ETA_CONT_IN = """ 194 String ETA_CONT_IN = """
195 (FunctionDefinition main () return () 195 (FunctionDefinition main () return ()
196 (LetPrim (v3 (Constant (Int 0))) 196 (LetPrim (v3 (Constant (Int 0)))
197 (LetCont ((rec k1 (v1) 197 (LetCont* (k1 (v1)
198 (InvokeContinuation return (v3)))) 198 (InvokeContinuation return (v3)))
199 (LetCont ((k0 (v0) 199 (LetCont (k0 (v0)
200 (InvokeContinuation k1 (v0)))) 200 (InvokeContinuation k1 (v0)))
201 (LetPrim (v4 201 (LetPrim (v4
202 (CreateFunction 202 (CreateFunction
203 (FunctionDefinition f () return () 203 (FunctionDefinition f () return ()
204 (InvokeContinuation k1 (v3))))) 204 (InvokeContinuation k1 (v3)))))
205 (InvokeContinuation k0 (v3))))))) 205 (InvokeContinuation k0 (v3)))))))
206 """; 206 """;
207 String ETA_CONT_OUT = """ 207 String ETA_CONT_OUT = """
208 (FunctionDefinition main () return () 208 (FunctionDefinition main () return ()
209 (LetPrim (v0 (Constant (Int 0))) 209 (LetPrim (v0 (Constant (Int 0)))
210 (LetCont ((k0 (v1) 210 (LetCont (k0 (v1)
211 (InvokeContinuation return (v0)))) 211 (InvokeContinuation return (v0)))
212 (InvokeContinuation k0 (v0))))) 212 (InvokeContinuation k0 (v0)))))
213 """; 213 """;
214 214
215 // Beta-fun-lin and eta-fun might not apply to us, since 215 // Beta-fun-lin and eta-fun might not apply to us, since
216 // a. in (InvokeMethod v0 call k0), v0 might carry state, and 216 // a. in (InvokeMethod v0 call k0), v0 might carry state, and
217 // b. there is no way to generate static nested functions that we could 217 // b. there is no way to generate static nested functions that we could
218 // use InvokeStatic on. 218 // use InvokeStatic on.
219 219
220 /// Normalizes whitespace by replacing all whitespace sequences by a single 220 /// Normalizes whitespace by replacing all whitespace sequences by a single
221 /// space and trimming leading and trailing whitespace. 221 /// space and trimming leading and trailing whitespace.
(...skipping 21 matching lines...) Expand all
243 testShrinkingReducer(DEAD_VAL_IN, DEAD_VAL_OUT); 243 testShrinkingReducer(DEAD_VAL_IN, DEAD_VAL_OUT);
244 testShrinkingReducer(ITERATIVE_DEAD_VAL1_IN, ITERATIVE_DEAD_VAL1_OUT); 244 testShrinkingReducer(ITERATIVE_DEAD_VAL1_IN, ITERATIVE_DEAD_VAL1_OUT);
245 testShrinkingReducer(ITERATIVE_DEAD_VAL2_IN, ITERATIVE_DEAD_VAL2_OUT); 245 testShrinkingReducer(ITERATIVE_DEAD_VAL2_IN, ITERATIVE_DEAD_VAL2_OUT);
246 testShrinkingReducer(DEAD_CONT_IN, DEAD_CONT_OUT); 246 testShrinkingReducer(DEAD_CONT_IN, DEAD_CONT_OUT);
247 testShrinkingReducer(ITERATIVE_DEAD_CONT_IN, ITERATIVE_DEAD_CONT_OUT); 247 testShrinkingReducer(ITERATIVE_DEAD_CONT_IN, ITERATIVE_DEAD_CONT_OUT);
248 testShrinkingReducer(BETA_CONT_LIN_IN, BETA_CONT_LIN_OUT); 248 testShrinkingReducer(BETA_CONT_LIN_IN, BETA_CONT_LIN_OUT);
249 testShrinkingReducer(RECURSIVE_BETA_CONT_LIN_IN, RECURSIVE_BETA_CONT_LIN_OUT); 249 testShrinkingReducer(RECURSIVE_BETA_CONT_LIN_IN, RECURSIVE_BETA_CONT_LIN_OUT);
250 testShrinkingReducer(USED_BETA_CONT_LIN_IN, USED_BETA_CONT_LIN_OUT); 250 testShrinkingReducer(USED_BETA_CONT_LIN_IN, USED_BETA_CONT_LIN_OUT);
251 testShrinkingReducer(ETA_CONT_IN, ETA_CONT_OUT); 251 testShrinkingReducer(ETA_CONT_IN, ETA_CONT_OUT);
252 } 252 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698