| Index: pkg/compiler/lib/src/kernel/kernel_backend_strategy.dart
|
| diff --git a/pkg/compiler/lib/src/kernel/kernel_backend_strategy.dart b/pkg/compiler/lib/src/kernel/kernel_backend_strategy.dart
|
| index 4eef86d51dc527b4ecfaa058f1db377ca40208ee..4cac2bb65b588f309440a698c12d73e9c6e0a60e 100644
|
| --- a/pkg/compiler/lib/src/kernel/kernel_backend_strategy.dart
|
| +++ b/pkg/compiler/lib/src/kernel/kernel_backend_strategy.dart
|
| @@ -33,6 +33,7 @@ import '../universe/selector.dart';
|
| import '../universe/world_builder.dart';
|
| import '../universe/world_impact.dart';
|
| import '../world.dart';
|
| +import 'closure.dart';
|
| import 'element_map_impl.dart';
|
| import 'kernel_strategy.dart';
|
|
|
| @@ -146,6 +147,7 @@ class KernelSsaBuilderTask extends CompilerTask implements SsaBuilderTask {
|
|
|
| @override
|
| HGraph build(CodegenWorkItem work, ClosedWorld closedWorld) {
|
| + KernelToLocalsMap localsMap = new KernelToLocalsMapImpl(work.element);
|
| KernelSsaBuilder builder = new KernelSsaBuilder(
|
| work.element,
|
| work.element.enclosingClass,
|
| @@ -153,12 +155,12 @@ class KernelSsaBuilderTask extends CompilerTask implements SsaBuilderTask {
|
| _compiler,
|
| _elementMap,
|
| new KernelToTypeInferenceMapImpl(closedWorld),
|
| - new KernelToLocalsMapImpl(work.element),
|
| + localsMap,
|
| closedWorld,
|
| _compiler.codegenWorldBuilder,
|
| work.registry,
|
| + new KernelClosureDataLookup(_elementMap, localsMap),
|
| // TODO(johnniwinther): Support these:
|
| - const KernelClosureDataLookup(),
|
| const SourceInformationBuilder(),
|
| null, // Function node used as capture scope id.
|
| targetIsConstructorBody: false);
|
| @@ -288,7 +290,7 @@ class KernelToLocalsMapImpl implements KernelToLocalsMap {
|
| @override
|
| LoopClosureRepresentationInfo getClosureRepresentationInfoForLoop(
|
| ClosureDataLookup closureLookup, ir.TreeNode node) {
|
| - return const LoopClosureRepresentationInfo();
|
| + return closureLookup.getClosureRepresentationInfoForLoop(node);
|
| }
|
| }
|
|
|
| @@ -316,34 +318,6 @@ class KLocal implements Local {
|
| }
|
| }
|
|
|
| -/// TODO(johnniwinther,efortuna): Implement this.
|
| -class KernelClosureDataLookup implements ClosureDataLookup<ir.Node> {
|
| - const KernelClosureDataLookup();
|
| -
|
| - @override
|
| - ClosureAnalysisInfo getClosureAnalysisInfo(ir.Node node) {
|
| - return const ClosureAnalysisInfo();
|
| - }
|
| -
|
| - @override
|
| - LoopClosureRepresentationInfo getClosureRepresentationInfoForLoop(
|
| - ir.Node loopNode) {
|
| - return const LoopClosureRepresentationInfo();
|
| - }
|
| -
|
| - @override
|
| - ClosureRepresentationInfo getClosureRepresentationInfo(Entity entity) {
|
| - if (entity is MemberEntity) {
|
| - ThisLocal thisLocal;
|
| - if (entity.isInstanceMember) {
|
| - thisLocal = new ThisLocal(entity);
|
| - }
|
| - return new ClosureClassMap(null, null, null, thisLocal);
|
| - }
|
| - return const ClosureRepresentationInfo();
|
| - }
|
| -}
|
| -
|
| class KernelSorter implements Sorter {
|
| final KernelToElementMapImpl elementMap;
|
|
|
|
|