Chromium Code Reviews| 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); |
| + } |
| + } |
| +} |