| Index: pkg/compiler/lib/src/dump_info.dart
|
| diff --git a/pkg/compiler/lib/src/dump_info.dart b/pkg/compiler/lib/src/dump_info.dart
|
| index 65a29e61acf345243db910d7df572a68439a85ee..da5a987a90a1cacfcdd8a9585f185fb794c28509 100644
|
| --- a/pkg/compiler/lib/src/dump_info.dart
|
| +++ b/pkg/compiler/lib/src/dump_info.dart
|
| @@ -419,21 +419,15 @@ class DumpInfoTask extends CompilerTask implements InfoReporter {
|
| }
|
|
|
| void reportInlined(Element element, Element inlinedFrom) {
|
| + element = element.declaration;
|
| + inlinedFrom = inlinedFrom.declaration;
|
| +
|
| inlineCount.putIfAbsent(element, () => 0);
|
| inlineCount[element] += 1;
|
| inlineMap.putIfAbsent(inlinedFrom, () => new List<Element>());
|
| inlineMap[inlinedFrom].add(element);
|
| }
|
|
|
| - final Map<Element, Set<Element>> _dependencies = {};
|
| - void registerDependency(Element target) {
|
| - if (compiler.options.dumpInfo) {
|
| - _dependencies
|
| - .putIfAbsent(compiler.currentElement, () => new Set())
|
| - .add(target);
|
| - }
|
| - }
|
| -
|
| void registerImpact(Element element, WorldImpact impact) {
|
| if (compiler.options.dumpInfo) {
|
| impacts[element] = impact;
|
| @@ -552,6 +546,8 @@ class DumpInfoTask extends CompilerTask implements InfoReporter {
|
| Stopwatch stopwatch = new Stopwatch();
|
| stopwatch.start();
|
|
|
| + AllInfo result = infoCollector.result;
|
| +
|
| // Recursively build links to function uses
|
| Iterable<Element> functionElements =
|
| infoCollector._elementToInfo.keys.where((k) => k is FunctionElement);
|
| @@ -566,6 +562,21 @@ class DumpInfoTask extends CompilerTask implements InfoReporter {
|
| info.uses.add(new DependencyInfo(useInfo, '${selection.mask}'));
|
| }
|
| }
|
| +
|
| + // Recursively build links to field uses
|
| + Iterable<Element> fieldElements =
|
| + infoCollector._elementToInfo.keys.where((k) => k is FieldElement);
|
| + for (FieldElement element in fieldElements) {
|
| + FieldInfo info = infoCollector._elementToInfo[element];
|
| + Iterable<Selection> uses = getRetaining(element, closedWorld);
|
| + // Don't bother recording an empty list of dependencies.
|
| + for (Selection selection in uses) {
|
| + Info useInfo = infoCollector._elementToInfo[selection.selectedElement];
|
| + if (useInfo == null) continue;
|
| + info.uses.add(new DependencyInfo(useInfo, '${selection.mask}'));
|
| + }
|
| + }
|
| +
|
| // Notify the impact strategy impacts are no longer needed for dump info.
|
| compiler.impactStrategy.onImpactUsed(IMPACT_USE);
|
|
|
| @@ -580,17 +591,6 @@ class DumpInfoTask extends CompilerTask implements InfoReporter {
|
| }
|
| }
|
|
|
| - AllInfo result = infoCollector.result;
|
| -
|
| - for (Element element in _dependencies.keys) {
|
| - var a = infoCollector._elementToInfo[element];
|
| - if (a == null) continue;
|
| - result.dependencies[a] = _dependencies[element]
|
| - .map((o) => infoCollector._elementToInfo[o])
|
| - .where((o) => o != null)
|
| - .toList();
|
| - }
|
| -
|
| result.deferredFiles = compiler.deferredLoadTask.computeDeferredMap();
|
| stopwatch.stop();
|
| result.program = new ProgramInfo(
|
|
|