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; |