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

Side by Side Diff: pkg/compiler/lib/src/cps_ir/cps_ir_tracer.dart

Issue 1743283002: dart2js cps: Use definitions by default, not references. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Fix doc comments and long lines Created 4 years, 9 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
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 library dart2js.ir_tracer; 5 library dart2js.ir_tracer;
6 6
7 import 'dart:async' show EventSink; 7 import 'dart:async' show EventSink;
8 import 'cps_ir_nodes.dart' as cps_ir; 8 import 'cps_ir_nodes.dart' as cps_ir;
9 import '../tracer.dart'; 9 import '../tracer.dart';
10 10
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after
130 if (IR_TRACE_LET_CONT) { 130 if (IR_TRACE_LET_CONT) {
131 String dummy = names.name(node); 131 String dummy = names.name(node);
132 String id = names.name(node.handler); 132 String id = names.name(node.handler);
133 printStmt(dummy, "LetHandler $id = <$id>"); 133 printStmt(dummy, "LetHandler $id = <$id>");
134 } 134 }
135 visit(node.body); 135 visit(node.body);
136 } 136 }
137 137
138 visitLetMutable(cps_ir.LetMutable node) { 138 visitLetMutable(cps_ir.LetMutable node) {
139 String id = names.name(node.variable); 139 String id = names.name(node.variable);
140 printStmt(id, "LetMutable $id = ${formatReference(node.value)}"); 140 printStmt(id, "LetMutable $id = ${formatReference(node.valueRef)}");
141 visit(node.body); 141 visit(node.body);
142 } 142 }
143 143
144 visitInvokeStatic(cps_ir.InvokeStatic node) { 144 visitInvokeStatic(cps_ir.InvokeStatic node) {
145 String callName = node.selector.name; 145 String callName = node.selector.name;
146 String args = node.arguments.map(formatReference).join(', '); 146 String args = node.argumentRefs.map(formatReference).join(', ');
147 return "InvokeStatic $callName ($args)"; 147 return "InvokeStatic $callName ($args)";
148 } 148 }
149 149
150 visitInvokeMethod(cps_ir.InvokeMethod node) { 150 visitInvokeMethod(cps_ir.InvokeMethod node) {
151 String receiver = formatReference(node.receiver); 151 String receiver = formatReference(node.receiverRef);
152 String callName = node.selector.name; 152 String callName = node.selector.name;
153 String args = node.arguments.map(formatReference).join(', '); 153 String args = node.argumentRefs.map(formatReference).join(', ');
154 return "InvokeMethod $receiver $callName ($args)"; 154 return "InvokeMethod $receiver $callName ($args)";
155 } 155 }
156 156
157 visitInvokeMethodDirectly(cps_ir.InvokeMethodDirectly node) { 157 visitInvokeMethodDirectly(cps_ir.InvokeMethodDirectly node) {
158 String receiver = formatReference(node.receiver); 158 String receiver = formatReference(node.receiverRef);
159 String callName = node.selector.name; 159 String callName = node.selector.name;
160 String args = node.arguments.map(formatReference).join(', '); 160 String args = node.argumentRefs.map(formatReference).join(', ');
161 return "InvokeMethodDirectly $receiver $callName ($args)"; 161 return "InvokeMethodDirectly $receiver $callName ($args)";
162 } 162 }
163 163
164 visitInvokeConstructor(cps_ir.InvokeConstructor node) { 164 visitInvokeConstructor(cps_ir.InvokeConstructor node) {
165 String className = node.target.enclosingClass.name; 165 String className = node.target.enclosingClass.name;
166 String callName; 166 String callName;
167 if (node.target.name.isEmpty) { 167 if (node.target.name.isEmpty) {
168 callName = '${className}'; 168 callName = '${className}';
169 } else { 169 } else {
170 callName = '${className}.${node.target.name}'; 170 callName = '${className}.${node.target.name}';
171 } 171 }
172 String args = node.arguments.map(formatReference).join(', '); 172 String args = node.argumentRefs.map(formatReference).join(', ');
173 return "InvokeConstructor $callName ($args)"; 173 return "InvokeConstructor $callName ($args)";
174 } 174 }
175 175
176 visitThrow(cps_ir.Throw node) { 176 visitThrow(cps_ir.Throw node) {
177 String dummy = names.name(node); 177 String dummy = names.name(node);
178 String value = formatReference(node.value); 178 String value = formatReference(node.valueRef);
179 printStmt(dummy, "Throw $value"); 179 printStmt(dummy, "Throw $value");
180 } 180 }
181 181
182 visitRethrow(cps_ir.Rethrow node) { 182 visitRethrow(cps_ir.Rethrow node) {
183 String dummy = names.name(node); 183 String dummy = names.name(node);
184 printStmt(dummy, "Rethrow"); 184 printStmt(dummy, "Rethrow");
185 } 185 }
186 186
187 visitUnreachable(cps_ir.Unreachable node) { 187 visitUnreachable(cps_ir.Unreachable node) {
188 String dummy = names.name(node); 188 String dummy = names.name(node);
189 printStmt(dummy, 'Unreachable'); 189 printStmt(dummy, 'Unreachable');
190 } 190 }
191 191
192 visitLiteralList(cps_ir.LiteralList node) { 192 visitLiteralList(cps_ir.LiteralList node) {
193 String values = node.values.map(formatReference).join(', '); 193 String values = node.valueRefs.map(formatReference).join(', ');
194 return "LiteralList ($values)"; 194 return "LiteralList ($values)";
195 } 195 }
196 196
197 visitTypeCast(cps_ir.TypeCast node) { 197 visitTypeCast(cps_ir.TypeCast node) {
198 String value = formatReference(node.value); 198 String value = formatReference(node.valueRef);
199 String args = node.typeArguments.map(formatReference).join(', '); 199 String args = node.typeArgumentRefs.map(formatReference).join(', ');
200 return "TypeCast ($value ${node.dartType} ($args))"; 200 return "TypeCast ($value ${node.dartType} ($args))";
201 } 201 }
202 202
203 visitInvokeContinuation(cps_ir.InvokeContinuation node) { 203 visitInvokeContinuation(cps_ir.InvokeContinuation node) {
204 String dummy = names.name(node); 204 String dummy = names.name(node);
205 String kont = formatReference(node.continuation); 205 String kont = formatReference(node.continuationRef);
206 String args = node.arguments.map(formatReference).join(', '); 206 String args = node.argumentRefs.map(formatReference).join(', ');
207 printStmt(dummy, "InvokeContinuation $kont ($args)"); 207 printStmt(dummy, "InvokeContinuation $kont ($args)");
208 } 208 }
209 209
210 visitBranch(cps_ir.Branch node) { 210 visitBranch(cps_ir.Branch node) {
211 String dummy = names.name(node); 211 String dummy = names.name(node);
212 String condition = formatReference(node.condition); 212 String condition = formatReference(node.conditionRef);
213 String trueCont = formatReference(node.trueContinuation); 213 String trueCont = formatReference(node.trueContinuationRef);
214 String falseCont = formatReference(node.falseContinuation); 214 String falseCont = formatReference(node.falseContinuationRef);
215 String strict = node.isStrictCheck ? "Strict" : "NonStrict"; 215 String strict = node.isStrictCheck ? "Strict" : "NonStrict";
216 printStmt(dummy, "Branch $condition ($trueCont, $falseCont) $strict"); 216 printStmt(dummy, "Branch $condition ($trueCont, $falseCont) $strict");
217 } 217 }
218 218
219 visitAwait(cps_ir.Await node) { 219 visitAwait(cps_ir.Await node) {
220 String value = formatReference(node.input); 220 String value = formatReference(node.inputRef);
221 return 'Await $value'; 221 return 'Await $value';
222 } 222 }
223 223
224 visitYield(cps_ir.Yield node) { 224 visitYield(cps_ir.Yield node) {
225 String name = node.hasStar ? 'YieldStar' : 'Yield'; 225 String name = node.hasStar ? 'YieldStar' : 'Yield';
226 String value = formatReference(node.input); 226 String value = formatReference(node.inputRef);
227 return '$name $value'; 227 return '$name $value';
228 } 228 }
229 229
230 visitSetMutable(cps_ir.SetMutable node) { 230 visitSetMutable(cps_ir.SetMutable node) {
231 String variable = names.name(node.variable.definition); 231 String variable = names.name(node.variable);
232 String value = formatReference(node.value); 232 String value = formatReference(node.valueRef);
233 return 'SetMutable $variable := $value'; 233 return 'SetMutable $variable := $value';
234 } 234 }
235 235
236 String formatReference(cps_ir.Reference ref) { 236 String formatReference(cps_ir.Reference ref) {
237 if (ref == null) return 'null'; 237 if (ref == null) return 'null';
238 cps_ir.Definition target = ref.definition; 238 cps_ir.Definition target = ref.definition;
239 if (target is cps_ir.Continuation && target.isReturnContinuation) { 239 if (target is cps_ir.Continuation && target.isReturnContinuation) {
240 return "return"; // Do not generate a name for the return continuation 240 return "return"; // Do not generate a name for the return continuation
241 } else { 241 } else {
242 return names.name(ref.definition); 242 return names.name(ref.definition);
(...skipping 10 matching lines...) Expand all
253 253
254 visitMutableVariable(cps_ir.MutableVariable node) { 254 visitMutableVariable(cps_ir.MutableVariable node) {
255 return "MutableVariable ${names.name(node)}"; 255 return "MutableVariable ${names.name(node)}";
256 } 256 }
257 257
258 visitContinuation(cps_ir.Continuation node) { 258 visitContinuation(cps_ir.Continuation node) {
259 return "Continuation ${names.name(node)}"; 259 return "Continuation ${names.name(node)}";
260 } 260 }
261 261
262 visitSetField(cps_ir.SetField node) { 262 visitSetField(cps_ir.SetField node) {
263 String object = formatReference(node.object); 263 String object = formatReference(node.objectRef);
264 String field = node.field.name; 264 String field = node.field.name;
265 String value = formatReference(node.value); 265 String value = formatReference(node.valueRef);
266 return 'SetField $object.$field = $value'; 266 return 'SetField $object.$field = $value';
267 } 267 }
268 268
269 visitGetField(cps_ir.GetField node) { 269 visitGetField(cps_ir.GetField node) {
270 String object = formatReference(node.object); 270 String object = formatReference(node.objectRef);
271 String field = node.field.name; 271 String field = node.field.name;
272 String finalFlag = node.isFinal ? 'final' : 'non-final'; 272 String finalFlag = node.isFinal ? 'final' : 'non-final';
273 return 'GetField $object.$field $finalFlag'; 273 return 'GetField $object.$field $finalFlag';
274 } 274 }
275 275
276 visitGetStatic(cps_ir.GetStatic node) { 276 visitGetStatic(cps_ir.GetStatic node) {
277 String element = node.element.name; 277 String element = node.element.name;
278 String finalFlag = node.isFinal ? 'final' : 'non-final'; 278 String finalFlag = node.isFinal ? 'final' : 'non-final';
279 return 'GetStatic $element $finalFlag'; 279 return 'GetStatic $element $finalFlag';
280 } 280 }
281 281
282 visitSetStatic(cps_ir.SetStatic node) { 282 visitSetStatic(cps_ir.SetStatic node) {
283 String element = node.element.name; 283 String element = node.element.name;
284 String value = formatReference(node.value); 284 String value = formatReference(node.valueRef);
285 return 'SetStatic $element = $value'; 285 return 'SetStatic $element = $value';
286 } 286 }
287 287
288 visitGetLazyStatic(cps_ir.GetLazyStatic node) { 288 visitGetLazyStatic(cps_ir.GetLazyStatic node) {
289 String element = node.element.name; 289 String element = node.element.name;
290 String finalFlag = node.isFinal ? 'final' : 'non-final'; 290 String finalFlag = node.isFinal ? 'final' : 'non-final';
291 return "GetLazyStatic $element $finalFlag"; 291 return "GetLazyStatic $element $finalFlag";
292 } 292 }
293 293
294 visitCreateBox(cps_ir.CreateBox node) { 294 visitCreateBox(cps_ir.CreateBox node) {
295 return 'CreateBox'; 295 return 'CreateBox';
296 } 296 }
297 297
298 visitCreateInstance(cps_ir.CreateInstance node) { 298 visitCreateInstance(cps_ir.CreateInstance node) {
299 String className = node.classElement.name; 299 String className = node.classElement.name;
300 String arguments = node.arguments.map(formatReference).join(', '); 300 String arguments = node.argumentRefs.map(formatReference).join(', ');
301 String typeInformation = formatReference(node.typeInformation); 301 String typeInformation = formatReference(node.typeInformationRef);
302 return 'CreateInstance $className ($arguments) <$typeInformation>'; 302 return 'CreateInstance $className ($arguments) <$typeInformation>';
303 } 303 }
304 304
305 visitInterceptor(cps_ir.Interceptor node) { 305 visitInterceptor(cps_ir.Interceptor node) {
306 return 'Interceptor(${formatReference(node.input)}, ' 306 return 'Interceptor(${formatReference(node.inputRef)}, '
307 '${node.interceptedClasses})'; 307 '${node.interceptedClasses})';
308 } 308 }
309 309
310 visitGetMutable(cps_ir.GetMutable node) { 310 visitGetMutable(cps_ir.GetMutable node) {
311 String variable = names.name(node.variable.definition); 311 String variable = names.name(node.variable);
312 return 'GetMutable $variable'; 312 return 'GetMutable $variable';
313 } 313 }
314 314
315 visitReadTypeVariable(cps_ir.ReadTypeVariable node) { 315 visitReadTypeVariable(cps_ir.ReadTypeVariable node) {
316 return "ReadTypeVariable ${node.variable.element} " 316 return "ReadTypeVariable ${node.variable.element} "
317 "${formatReference(node.target)}"; 317 "${formatReference(node.targetRef)}";
318 } 318 }
319 319
320 visitReifyRuntimeType(cps_ir.ReifyRuntimeType node) { 320 visitReifyRuntimeType(cps_ir.ReifyRuntimeType node) {
321 return "ReifyRuntimeType ${formatReference(node.value)}"; 321 return "ReifyRuntimeType ${formatReference(node.valueRef)}";
322 } 322 }
323 323
324 visitTypeExpression(cps_ir.TypeExpression node) { 324 visitTypeExpression(cps_ir.TypeExpression node) {
325 return "TypeExpression ${node.kindAsString} ${node.dartType}" 325 return "TypeExpression ${node.kindAsString} ${node.dartType}"
326 "${node.arguments.map(formatReference).join(', ')}"; 326 "${node.argumentRefs.map(formatReference).join(', ')}";
327 } 327 }
328 328
329 visitCreateInvocationMirror(cps_ir.CreateInvocationMirror node) { 329 visitCreateInvocationMirror(cps_ir.CreateInvocationMirror node) {
330 String args = node.arguments.map(formatReference).join(', '); 330 String args = node.argumentRefs.map(formatReference).join(', ');
331 return "CreateInvocationMirror(${node.selector.name}, $args)"; 331 return "CreateInvocationMirror(${node.selector.name}, $args)";
332 } 332 }
333 333
334 visitTypeTest(cps_ir.TypeTest node) { 334 visitTypeTest(cps_ir.TypeTest node) {
335 String value = formatReference(node.value); 335 String value = formatReference(node.valueRef);
336 String args = node.typeArguments.map(formatReference).join(', '); 336 String args = node.typeArgumentRefs.map(formatReference).join(', ');
337 return "TypeTest ($value ${node.dartType} ($args))"; 337 return "TypeTest ($value ${node.dartType} ($args))";
338 } 338 }
339 339
340 visitTypeTestViaFlag(cps_ir.TypeTestViaFlag node) { 340 visitTypeTestViaFlag(cps_ir.TypeTestViaFlag node) {
341 String interceptor = formatReference(node.interceptor); 341 String interceptor = formatReference(node.interceptorRef);
342 return "TypeTestViaFlag ($interceptor ${node.dartType})"; 342 return "TypeTestViaFlag ($interceptor ${node.dartType})";
343 } 343 }
344 344
345 visitApplyBuiltinOperator(cps_ir.ApplyBuiltinOperator node) { 345 visitApplyBuiltinOperator(cps_ir.ApplyBuiltinOperator node) {
346 String operator = node.operator.toString(); 346 String operator = node.operator.toString();
347 String args = node.arguments.map(formatReference).join(', '); 347 String args = node.argumentRefs.map(formatReference).join(', ');
348 return 'ApplyBuiltinOperator $operator ($args)'; 348 return 'ApplyBuiltinOperator $operator ($args)';
349 } 349 }
350 350
351 visitApplyBuiltinMethod(cps_ir.ApplyBuiltinMethod node) { 351 visitApplyBuiltinMethod(cps_ir.ApplyBuiltinMethod node) {
352 String method = node.method.toString(); 352 String method = node.method.toString();
353 String receiver = formatReference(node.receiver); 353 String receiver = formatReference(node.receiverRef);
354 String args = node.arguments.map(formatReference).join(', '); 354 String args = node.argumentRefs.map(formatReference).join(', ');
355 return 'ApplyBuiltinMethod $method $receiver ($args)'; 355 return 'ApplyBuiltinMethod $method $receiver ($args)';
356 } 356 }
357 357
358 visitForeignCode(cps_ir.ForeignCode node) { 358 visitForeignCode(cps_ir.ForeignCode node) {
359 String id = names.name(node); 359 String id = names.name(node);
360 String arguments = node.arguments.map(formatReference).join(', '); 360 String arguments = node.argumentRefs.map(formatReference).join(', ');
361 printStmt(id, 361 printStmt(id,
362 "ForeignCode ${node.type} ${node.codeTemplate.source} $arguments"); 362 "ForeignCode ${node.type} ${node.codeTemplate.source} $arguments");
363 } 363 }
364 364
365 visitGetLength(cps_ir.GetLength node) { 365 visitGetLength(cps_ir.GetLength node) {
366 String object = formatReference(node.object); 366 String object = formatReference(node.objectRef);
367 String finalFlag = node.isFinal ? 'final' : 'non-final'; 367 String finalFlag = node.isFinal ? 'final' : 'non-final';
368 return 'GetLength $object $finalFlag'; 368 return 'GetLength $object $finalFlag';
369 } 369 }
370 370
371 visitGetIndex(cps_ir.GetIndex node) { 371 visitGetIndex(cps_ir.GetIndex node) {
372 String object = formatReference(node.object); 372 String object = formatReference(node.objectRef);
373 String index = formatReference(node.index); 373 String index = formatReference(node.indexRef);
374 return 'GetIndex $object $index'; 374 return 'GetIndex $object $index';
375 } 375 }
376 376
377 visitSetIndex(cps_ir.SetIndex node) { 377 visitSetIndex(cps_ir.SetIndex node) {
378 String object = formatReference(node.object); 378 String object = formatReference(node.objectRef);
379 String index = formatReference(node.index); 379 String index = formatReference(node.indexRef);
380 String value = formatReference(node.value); 380 String value = formatReference(node.valueRef);
381 return 'SetIndex $object $index $value'; 381 return 'SetIndex $object $index $value';
382 } 382 }
383 383
384 visitRefinement(cps_ir.Refinement node) { 384 visitRefinement(cps_ir.Refinement node) {
385 String value = formatReference(node.value); 385 String value = formatReference(node.value);
386 return 'Refinement $value ${node.refineType}'; 386 return 'Refinement $value ${node.refineType}';
387 } 387 }
388 388
389 visitBoundsCheck(cps_ir.BoundsCheck node) { 389 visitBoundsCheck(cps_ir.BoundsCheck node) {
390 String object = formatReference(node.object); 390 String object = formatReference(node.objectRef);
391 String index = node.index == null 391 String index = node.indexRef == null
392 ? 'no-index' 392 ? 'no-index'
393 : formatReference(node.index); 393 : formatReference(node.indexRef);
394 String length = node.length == null 394 String length = node.lengthRef == null
395 ? 'no-length' 395 ? 'no-length'
396 : formatReference(node.length); 396 : formatReference(node.lengthRef);
397 return 'BoundsCheck $object $index $length ${node.checkString}'; 397 return 'BoundsCheck $object $index $length ${node.checkString}';
398 } 398 }
399 399
400 visitReceiverCheck(cps_ir.ReceiverCheck node) { 400 visitReceiverCheck(cps_ir.ReceiverCheck node) {
401 String value = formatReference(node.value); 401 String value = formatReference(node.valueRef);
402 String condition = formatReference(node.condition); 402 String condition = formatReference(node.conditionRef);
403 return 'ReceiverCheck $value $condition ${node.selector} ' 403 return 'ReceiverCheck $value $condition ${node.selector} '
404 '${node.flagString}'; 404 '${node.flagString}';
405 } 405 }
406 } 406 }
407 407
408 /** 408 /**
409 * Invents (and remembers) names for Continuations, Parameters, etc. 409 * Invents (and remembers) names for Continuations, Parameters, etc.
410 * The names must match the conventions used by IR Hydra, e.g. 410 * The names must match the conventions used by IR Hydra, e.g.
411 * Continuations and Functions must have names of form B### since they 411 * Continuations and Functions must have names of form B### since they
412 * are visualized as basic blocks. 412 * are visualized as basic blocks.
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
503 } 503 }
504 504
505 void addEdgeToContinuation(cps_ir.Reference continuation) { 505 void addEdgeToContinuation(cps_ir.Reference continuation) {
506 cps_ir.Definition target = continuation.definition; 506 cps_ir.Definition target = continuation.definition;
507 if (target is cps_ir.Continuation && !target.isReturnContinuation) { 507 if (target is cps_ir.Continuation && !target.isReturnContinuation) {
508 currentBlock.addEdgeTo(getBlock(target)); 508 currentBlock.addEdgeTo(getBlock(target));
509 } 509 }
510 } 510 }
511 511
512 visitInvokeContinuation(cps_ir.InvokeContinuation exp) { 512 visitInvokeContinuation(cps_ir.InvokeContinuation exp) {
513 addEdgeToContinuation(exp.continuation); 513 addEdgeToContinuation(exp.continuationRef);
514 } 514 }
515 515
516 visitInvokeStatic(cps_ir.InvokeStatic node) { 516 visitInvokeStatic(cps_ir.InvokeStatic node) {
517 unexpectedNode(node); 517 unexpectedNode(node);
518 } 518 }
519 519
520 visitInvokeMethod(cps_ir.InvokeMethod node) { 520 visitInvokeMethod(cps_ir.InvokeMethod node) {
521 unexpectedNode(node); 521 unexpectedNode(node);
522 } 522 }
523 523
(...skipping 12 matching lines...) Expand all
536 } 536 }
537 537
538 visitUnreachable(cps_ir.Unreachable node) { 538 visitUnreachable(cps_ir.Unreachable node) {
539 } 539 }
540 540
541 visitGetLazyStatic(cps_ir.GetLazyStatic node) { 541 visitGetLazyStatic(cps_ir.GetLazyStatic node) {
542 unexpectedNode(node); 542 unexpectedNode(node);
543 } 543 }
544 544
545 visitBranch(cps_ir.Branch exp) { 545 visitBranch(cps_ir.Branch exp) {
546 cps_ir.Continuation trueTarget = exp.trueContinuation.definition; 546 cps_ir.Continuation trueTarget = exp.trueContinuation;
547 if (!trueTarget.isReturnContinuation) { 547 if (!trueTarget.isReturnContinuation) {
548 currentBlock.addEdgeTo(getBlock(trueTarget)); 548 currentBlock.addEdgeTo(getBlock(trueTarget));
549 } 549 }
550 cps_ir.Continuation falseTarget = exp.falseContinuation.definition; 550 cps_ir.Continuation falseTarget = exp.falseContinuation;
551 if (!falseTarget.isReturnContinuation) { 551 if (!falseTarget.isReturnContinuation) {
552 currentBlock.addEdgeTo(getBlock(falseTarget)); 552 currentBlock.addEdgeTo(getBlock(falseTarget));
553 } 553 }
554 } 554 }
555 555
556 visitTypeCast(cps_ir.TypeCast node) { 556 visitTypeCast(cps_ir.TypeCast node) {
557 unexpectedNode(node); 557 unexpectedNode(node);
558 } 558 }
559 559
560 visitContinuation(cps_ir.Continuation c) { 560 visitContinuation(cps_ir.Continuation c) {
(...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after
683 } 683 }
684 684
685 visitBoundsCheck(cps_ir.BoundsCheck node) { 685 visitBoundsCheck(cps_ir.BoundsCheck node) {
686 unexpectedNode(node); 686 unexpectedNode(node);
687 } 687 }
688 688
689 visitReceiverCheck(cps_ir.ReceiverCheck node) { 689 visitReceiverCheck(cps_ir.ReceiverCheck node) {
690 unexpectedNode(node); 690 unexpectedNode(node);
691 } 691 }
692 } 692 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698