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

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

Issue 708993003: Revert "Revert "dart2js: Add a type parameter to class Reference...."" (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 6 years, 1 month 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 117 matching lines...) Expand 10 before | Expand all | Expand 10 after
128 String BETA_CONT_LIN_OUT = """ 128 String BETA_CONT_LIN_OUT = """
129 (FunctionDefinition main ( return) 129 (FunctionDefinition main ( return)
130 (LetPrim v0 (Constant IntConstant(0))) 130 (LetPrim v0 (Constant IntConstant(0)))
131 (LetCont (k0 v1) 131 (LetCont (k0 v1)
132 (LetCont (k1 v2) (LetPrim v3 (Constant IntConstant(0))) 132 (LetCont (k1 v2) (LetPrim v3 (Constant IntConstant(0)))
133 (InvokeContinuation return v3)) 133 (InvokeContinuation return v3))
134 (InvokeStatic print v0 k1)) 134 (InvokeStatic print v0 k1))
135 (InvokeStatic print v0 k0)) 135 (InvokeStatic print v0 k0))
136 """; 136 """;
137 137
138 // Beta-cont-lin with continuation passed as arg in invoke. IR written by hand.
139
140 String ARG_BETA_CONT_LIN_IN = """
141 (FunctionDefinition main ( return)
142 (LetCont (k0 v0)
143 (LetPrim v1 (Constant IntConstant(0)))
144 (InvokeStatic print v1 return))
145 (InvokeContinuation return k0))
146 """;
147 String ARG_BETA_CONT_LIN_OUT = ARG_BETA_CONT_LIN_IN;
148
149 // Beta-cont-lin with recursive continuation. IR written by hand. 138 // Beta-cont-lin with recursive continuation. IR written by hand.
150 139
151 String RECURSIVE_BETA_CONT_LIN_IN = """ 140 String RECURSIVE_BETA_CONT_LIN_IN = """
152 (FunctionDefinition main ( return) 141 (FunctionDefinition main ( return)
153 (LetCont* (k0 v0) 142 (LetCont* (k0 v0)
154 (InvokeContinuation* k0 v0)) 143 (InvokeContinuation* k0 v0))
155 (LetPrim v1 (Constant IntConstant(0))) 144 (LetPrim v1 (Constant IntConstant(0)))
156 (InvokeContinuation k0 v1)) 145 (InvokeContinuation k0 v1))
157 """; 146 """;
158 String RECURSIVE_BETA_CONT_LIN_OUT = RECURSIVE_BETA_CONT_LIN_IN; 147 String RECURSIVE_BETA_CONT_LIN_OUT = RECURSIVE_BETA_CONT_LIN_IN;
159 148
160 // Beta-cont-lin used inside body. IR written by hand. 149 // Beta-cont-lin used inside body. IR written by hand.
161 150
162 String USED_BETA_CONT_LIN_IN = """ 151 String USED_BETA_CONT_LIN_IN = """
163 (FunctionDefinition main ( return) 152 (FunctionDefinition main ( return)
164 (LetCont (k0 v0) 153 (LetPrim v0 (Constant IntConstant(0)))
165 (LetCont (k1 v1) 154 (LetCont (k0 v1)
166 (LetCont (k2 v2) (LetPrim v3 (Constant IntConstant(0))) 155 (LetCont (k1 v2)
167 (InvokeContinuation return v3)) 156 (LetCont (k2 v3) (LetPrim v4 (Constant IntConstant(0)))
168 (InvokeStatic print v0 k2)) 157 (InvokeContinuation return v4))
169 (InvokeStatic print v0 k1)) 158 (InvokeStatic print v1 k2))
170 (LetPrim v4 159 (InvokeStatic print v1 k1))
160 (LetPrim v5
171 (CreateFunction 161 (CreateFunction
172 (FunctionDefinition f ( return) 162 (FunctionDefinition f ( return)
173 (InvokeContinuation return k0)))) 163 (InvokeContinuation return v1))))
174 (InvokeContinuation k0 v4)) 164 (InvokeContinuation k0 v0))
Kevin Millikin (Google) 2014/11/07 11:58:54 v4 is not in scope here. I've introduced a bindin
175 """; 165 """;
176 String USED_BETA_CONT_LIN_OUT = USED_BETA_CONT_LIN_IN; 166 String USED_BETA_CONT_LIN_OUT = USED_BETA_CONT_LIN_IN;
177 167
178 // Eta-cont: letcont k x = j x in K -> K[j/k]. 168 // Eta-cont: letcont k x = j x in K -> K[j/k].
179 // IR written by hand. 169 // IR written by hand.
180 170
181 String ETA_CONT_IN = """ 171 String ETA_CONT_IN = """
182 (FunctionDefinition main ( return) 172 (FunctionDefinition main ( return)
183 (LetPrim v3 (Constant IntConstant(0))) 173 (LetPrim v3 (Constant IntConstant(0)))
184 (LetCont* (k1 v1) (InvokeContinuation return v3)) 174 (LetCont* (k1 v1) (InvokeContinuation return v3))
185 (LetCont (k0 v0) (InvokeContinuation k1 v0)) 175 (LetCont (k0 v0) (InvokeContinuation k1 v0))
186 (LetPrim v4 176 (LetPrim v4
187 (CreateFunction 177 (CreateFunction
188 (FunctionDefinition f ( return) 178 (FunctionDefinition f ( return)
189 (InvokeContinuation k1 k0)))) 179 (InvokeContinuation k1 v3))))
190 (InvokeContinuation k0 v3)) 180 (InvokeContinuation k0 v3))
191 """; 181 """;
192 String ETA_CONT_OUT = """ 182 String ETA_CONT_OUT = """
193 (FunctionDefinition main ( return) 183 (FunctionDefinition main ( return)
194 (LetPrim v0 (Constant IntConstant(0))) 184 (LetPrim v0 (Constant IntConstant(0)))
195 (LetCont (k0 v1) (InvokeContinuation return v0)) 185 (LetCont (k0 v1) (InvokeContinuation return v0))
196 (InvokeContinuation k0 v0)) 186 (InvokeContinuation k0 v0))
197 """; 187 """;
198 188
199 // Beta-fun-lin and eta-fun might not apply to us, since 189 // Beta-fun-lin and eta-fun might not apply to us, since
(...skipping 13 matching lines...) Expand all
213 final unstringifier = new SExpressionUnstringifier(); 203 final unstringifier = new SExpressionUnstringifier();
214 final stringifier = new SExpressionStringifier(); 204 final stringifier = new SExpressionStringifier();
215 final optimizer = new ShrinkingReducer(); 205 final optimizer = new ShrinkingReducer();
216 206
217 FunctionDefinition f = unstringifier.unstringify(input); 207 FunctionDefinition f = unstringifier.unstringify(input);
218 optimizer.rewrite(f); 208 optimizer.rewrite(f);
219 209
220 String expected = normalizeSExpr(expectedOutput); 210 String expected = normalizeSExpr(expectedOutput);
221 String actual = normalizeSExpr(stringifier.visit(f)); 211 String actual = normalizeSExpr(stringifier.visit(f));
222 212
223 Expect.equals(expected, actual); 213 Expect.equals(expected, actual);
224 } 214 }
225 215
226 void main() { 216 void main() {
227 testShrinkingReducer(DEAD_VAL_IN, DEAD_VAL_OUT); 217 testShrinkingReducer(DEAD_VAL_IN, DEAD_VAL_OUT);
228 testShrinkingReducer(ITERATIVE_DEAD_VAL1_IN, ITERATIVE_DEAD_VAL1_OUT); 218 testShrinkingReducer(ITERATIVE_DEAD_VAL1_IN, ITERATIVE_DEAD_VAL1_OUT);
229 testShrinkingReducer(ITERATIVE_DEAD_VAL2_IN, ITERATIVE_DEAD_VAL2_OUT); 219 testShrinkingReducer(ITERATIVE_DEAD_VAL2_IN, ITERATIVE_DEAD_VAL2_OUT);
230 testShrinkingReducer(DEAD_CONT_IN, DEAD_CONT_OUT); 220 testShrinkingReducer(DEAD_CONT_IN, DEAD_CONT_OUT);
231 testShrinkingReducer(ITERATIVE_DEAD_CONT_IN, ITERATIVE_DEAD_CONT_OUT); 221 testShrinkingReducer(ITERATIVE_DEAD_CONT_IN, ITERATIVE_DEAD_CONT_OUT);
232 testShrinkingReducer(BETA_CONT_LIN_IN, BETA_CONT_LIN_OUT); 222 testShrinkingReducer(BETA_CONT_LIN_IN, BETA_CONT_LIN_OUT);
233 testShrinkingReducer(ARG_BETA_CONT_LIN_IN, ARG_BETA_CONT_LIN_OUT);
234 testShrinkingReducer(RECURSIVE_BETA_CONT_LIN_IN, RECURSIVE_BETA_CONT_LIN_OUT); 223 testShrinkingReducer(RECURSIVE_BETA_CONT_LIN_IN, RECURSIVE_BETA_CONT_LIN_OUT);
235 testShrinkingReducer(USED_BETA_CONT_LIN_IN, USED_BETA_CONT_LIN_OUT);
236 testShrinkingReducer(ETA_CONT_IN, ETA_CONT_OUT); 224 testShrinkingReducer(ETA_CONT_IN, ETA_CONT_OUT);
237 } 225 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698