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

Unified Diff: pkg/compiler/lib/src/js_backend/backend.dart

Issue 1464773002: Remove WorldImpact from caches when no longer needed. (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Created 5 years, 1 month 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
Index: pkg/compiler/lib/src/js_backend/backend.dart
diff --git a/pkg/compiler/lib/src/js_backend/backend.dart b/pkg/compiler/lib/src/js_backend/backend.dart
index 0fed323ab40d412424e6dbe745c8ab04901a84c5..543de4d1c0e19b749952d7e97c3a173dcbf6394b 100644
--- a/pkg/compiler/lib/src/js_backend/backend.dart
+++ b/pkg/compiler/lib/src/js_backend/backend.dart
@@ -1602,7 +1602,10 @@ class JavaScriptBackend extends Backend {
}
generatedCode[element] = functionCompiler.compile(work);
- return impactTransformer.transformCodegenImpact(work.registry.worldImpact);
+ WorldImpact worldImpact =
+ impactTransformer.transformCodegenImpact(work.registry.worldImpact);
+ compiler.dumpInfoTask.registerImpact(element, worldImpact);
+ return worldImpact;
}
native.NativeEnqueuer nativeResolutionEnqueuer(Enqueuer world) {
@@ -2611,6 +2614,17 @@ class JavaScriptBackend extends Backend {
if (patchLocation == null) return null;
return platformConfigUri.resolve(patchLocation);
}
+
+ @override
+ ImpactStrategy createImpactStrategy(
+ {bool supportDeferredLoad: true,
+ bool supportDumpInfo: true}) {
+ return new JavaScriptImpactStrategy(
+ resolution,
+ compiler.dumpInfoTask,
+ supportDeferredLoad: supportDeferredLoad,
+ supportDumpInfo: supportDumpInfo);
+ }
}
/// Handling of special annotations for tests.
@@ -3079,3 +3093,38 @@ class Dependency {
const Dependency(this.constant, this.annotatedElement);
}
+
+class JavaScriptImpactStrategy extends ImpactStrategy {
+ final Resolution resolution;
+ final DumpInfoTask dumpInfoTask;
+ final bool supportDeferredLoad;
+ final bool supportDumpInfo;
+
+ JavaScriptImpactStrategy(this.resolution,
+ this.dumpInfoTask,
+ {this.supportDeferredLoad,
+ this.supportDumpInfo});
+
+ @override
+ void visitImpact(Element element,
+ WorldImpact impact,
+ WorldImpactVisitor visitor,
+ ImpactUse impactUse) {
+ if (impactUse == ResolutionEnqueuer.IMPACT_USE) {
sigurdm 2015/11/20 12:13:19 It would be nice if we could do this switching onl
Johnni Winther 2015/11/20 13:49:36 Added a TODO.
+ if (supportDeferredLoad) {
+ impact.apply(visitor);
+ } else {
+ impact.apply(visitor);
+ resolution.uncacheWorldImpact(element);
+ }
+ } else if (impactUse == DeferredLoadTask.IMPACT_USE) {
+ impact.apply(visitor);
+ resolution.uncacheWorldImpact(element);
+ } else if (impactUse == DumpInfoTask.IMPACT_USE) {
+ impact.apply(visitor);
+ dumpInfoTask.unregisterImpact(element);
+ } else {
+ impact.apply(visitor);
+ }
+ }
+}

Powered by Google App Engine
This is Rietveld 408576698