OLD | NEW |
1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2016, 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 'package:kernel/ast.dart' as ir; | 5 import 'package:kernel/ast.dart' as ir; |
6 | 6 |
| 7 import '../closure.dart' show LoopClosureRepresentationInfo; |
7 import '../elements/elements.dart' show JumpTarget, LabelDefinition; | 8 import '../elements/elements.dart' show JumpTarget, LabelDefinition; |
8 import '../io/source_information.dart'; | 9 import '../io/source_information.dart'; |
9 import '../tree/tree.dart' as ast; | 10 import '../tree/tree.dart' as ast; |
10 import '../closure.dart' show LoopClosureRepresentationInfo; | |
11 | 11 |
12 import 'builder.dart'; | 12 import 'builder.dart'; |
13 import 'builder_kernel.dart'; | 13 import 'builder_kernel.dart'; |
14 import 'graph_builder.dart'; | 14 import 'graph_builder.dart'; |
15 import 'jump_handler.dart'; | 15 import 'jump_handler.dart'; |
16 import 'kernel_ast_adapter.dart'; | 16 import 'kernel_ast_adapter.dart'; |
17 import 'locals_handler.dart'; | 17 import 'locals_handler.dart'; |
18 import 'nodes.dart'; | 18 import 'nodes.dart'; |
19 | 19 |
20 /// Builds the SSA graph for loop nodes. | 20 /// Builds the SSA graph for loop nodes. |
(...skipping 332 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
353 KernelLoopHandler(KernelSsaBuilder builder) | 353 KernelLoopHandler(KernelSsaBuilder builder) |
354 : this.builder = builder, | 354 : this.builder = builder, |
355 super(builder); | 355 super(builder); |
356 | 356 |
357 @override | 357 @override |
358 JumpHandler createJumpHandler(ir.TreeNode node, {bool isLoopJump}) => | 358 JumpHandler createJumpHandler(ir.TreeNode node, {bool isLoopJump}) => |
359 builder.createJumpHandler(node, isLoopJump: isLoopJump); | 359 builder.createJumpHandler(node, isLoopJump: isLoopJump); |
360 | 360 |
361 @override | 361 @override |
362 JumpTarget getTargetDefinition(ir.TreeNode node) => | 362 JumpTarget getTargetDefinition(ir.TreeNode node) => |
363 astAdapter.getJumpTarget(node); | 363 builder.localsMap.getJumpTarget(node); |
364 | 364 |
365 @override | 365 @override |
366 int loopKind(ir.TreeNode node) => node.accept(new _KernelLoopTypeVisitor()); | 366 int loopKind(ir.TreeNode node) => node.accept(new _KernelLoopTypeVisitor()); |
367 | 367 |
368 // TODO(het): return the actual source information | 368 // TODO(het): return the actual source information |
369 @override | 369 @override |
370 SourceInformation loopSourceInformation(ir.TreeNode node) => null; | 370 SourceInformation loopSourceInformation(ir.TreeNode node) => null; |
371 } | 371 } |
372 | 372 |
373 class _KernelLoopTypeVisitor extends ir.Visitor<int> { | 373 class _KernelLoopTypeVisitor extends ir.Visitor<int> { |
(...skipping 12 matching lines...) Expand all Loading... |
386 HLoopBlockInformation.DO_WHILE_LOOP; | 386 HLoopBlockInformation.DO_WHILE_LOOP; |
387 | 387 |
388 @override | 388 @override |
389 int visitForInStatement(ir.ForInStatement node) => | 389 int visitForInStatement(ir.ForInStatement node) => |
390 HLoopBlockInformation.FOR_IN_LOOP; | 390 HLoopBlockInformation.FOR_IN_LOOP; |
391 | 391 |
392 @override | 392 @override |
393 int visitSwitchStatement(ir.SwitchStatement node) => | 393 int visitSwitchStatement(ir.SwitchStatement node) => |
394 HLoopBlockInformation.SWITCH_CONTINUE_LOOP; | 394 HLoopBlockInformation.SWITCH_CONTINUE_LOOP; |
395 } | 395 } |
OLD | NEW |