Index: pkg/compiler/lib/src/kernel/kernel_strategy.dart |
diff --git a/pkg/compiler/lib/src/kernel/kernel_strategy.dart b/pkg/compiler/lib/src/kernel/kernel_strategy.dart |
index b1258ea2dcbd65715878ea608e0812b121541638..1a407902fbdbcabc53ac2a1f17be4a843420f14d 100644 |
--- a/pkg/compiler/lib/src/kernel/kernel_strategy.dart |
+++ b/pkg/compiler/lib/src/kernel/kernel_strategy.dart |
@@ -25,6 +25,7 @@ import '../js_backend/mirrors_data.dart'; |
import '../js_backend/native_data.dart'; |
import '../js_backend/no_such_method_registry.dart'; |
import '../js_backend/runtime_types.dart'; |
+import '../js_model/closure.dart' show ClosureModel; |
import '../library_loader.dart'; |
import '../native/enqueue.dart' show NativeResolutionEnqueuer; |
import '../native/resolver.dart'; |
@@ -46,6 +47,9 @@ class KernelFrontEndStrategy extends FrontendStrategyBase { |
KernelAnnotationProcessor _annotationProcesser; |
+ final Map<MemberEntity, ClosureModel> closureModels = |
+ <MemberEntity, ClosureModel>{}; |
+ |
KernelFrontEndStrategy( |
this._options, DiagnosticReporter reporter, env.Environment environment) |
: _elementMap = |
@@ -136,8 +140,8 @@ class KernelFrontEndStrategy extends FrontendStrategyBase { |
NativeBasicData nativeBasicData, |
NativeDataBuilder nativeDataBuilder, |
ImpactTransformer impactTransformer) { |
- return new KernelWorkItemBuilder( |
- elementMap, nativeBasicData, nativeDataBuilder, impactTransformer); |
+ return new KernelWorkItemBuilder(elementMap, nativeBasicData, |
+ nativeDataBuilder, impactTransformer, closureModels); |
} |
@override |
@@ -150,16 +154,21 @@ class KernelWorkItemBuilder implements WorkItemBuilder { |
final KernelToElementMapForImpactImpl _elementMap; |
final ImpactTransformer _impactTransformer; |
final NativeMemberResolver _nativeMemberResolver; |
+ final Map<MemberEntity, ClosureModel> closureModels; |
- KernelWorkItemBuilder(this._elementMap, NativeBasicData nativeBasicData, |
- NativeDataBuilder nativeDataBuilder, this._impactTransformer) |
+ KernelWorkItemBuilder( |
+ this._elementMap, |
+ NativeBasicData nativeBasicData, |
+ NativeDataBuilder nativeDataBuilder, |
+ this._impactTransformer, |
+ this.closureModels) |
: _nativeMemberResolver = new KernelNativeMemberResolver( |
_elementMap, nativeBasicData, nativeDataBuilder); |
@override |
WorkItem createWorkItem(MemberEntity entity) { |
- return new KernelWorkItem( |
- _elementMap, _impactTransformer, _nativeMemberResolver, entity); |
+ return new KernelWorkItem(_elementMap, _impactTransformer, |
+ _nativeMemberResolver, entity, closureModels); |
} |
} |
@@ -168,14 +177,19 @@ class KernelWorkItem implements ResolutionWorkItem { |
final ImpactTransformer _impactTransformer; |
final NativeMemberResolver _nativeMemberResolver; |
final MemberEntity element; |
+ final Map<MemberEntity, ClosureModel> closureModels; |
KernelWorkItem(this._elementMap, this._impactTransformer, |
- this._nativeMemberResolver, this.element); |
+ this._nativeMemberResolver, this.element, this.closureModels); |
@override |
WorldImpact run() { |
_nativeMemberResolver.resolveNativeMember(element); |
ResolutionImpact impact = _elementMap.computeWorldImpact(element); |
+ ClosureModel closureModel = _elementMap.computeClosureModel(element); |
+ if (closureModel != null) { |
+ closureModels[element] = closureModel; |
+ } |
return _impactTransformer.transformResolutionImpact(impact); |
} |
} |