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

Unified Diff: pkg/compiler/lib/src/kernel/kernel_strategy.dart

Issue 2979373003: Compute closure model during resolution (Closed)
Patch Set: Rebased Created 3 years, 5 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « pkg/compiler/lib/src/kernel/element_map_impl.dart ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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);
}
}
« no previous file with comments | « pkg/compiler/lib/src/kernel/element_map_impl.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698