| OLD | NEW | 
|    1 // Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file |    1 // Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file | 
|    2 // for details. All rights reserved. Use of this source code is governed by a |    2 // for details. All rights reserved. Use of this source code is governed by a | 
|    3 // BSD-style license that can be found in the LICENSE file. |    3 // BSD-style license that can be found in the LICENSE file. | 
|    4  |    4  | 
|    5 library dump_info; |    5 library dump_info; | 
|    6  |    6  | 
|    7 import 'dart:convert' show |    7 import 'dart:convert' | 
|    8     ChunkedConversionSink, |    8     show ChunkedConversionSink, HtmlEscape, JsonEncoder, StringConversionSink; | 
|    9     HtmlEscape, |  | 
|   10     JsonEncoder, |  | 
|   11     StringConversionSink; |  | 
|   12  |    9  | 
|   13 import 'package:dart2js_info/info.dart'; |   10 import 'package:dart2js_info/info.dart'; | 
|   14  |   11  | 
|   15 import 'common.dart'; |   12 import 'common.dart'; | 
|   16 import 'common/tasks.dart' show |   13 import 'common/tasks.dart' show CompilerTask; | 
|   17     CompilerTask; |   14 import 'constants/values.dart' show ConstantValue, InterceptorConstantValue; | 
|   18 import 'constants/values.dart' show |   15 import 'compiler.dart' show Compiler; | 
|   19     ConstantValue, |   16 import 'deferred_load.dart' show OutputUnit; | 
|   20     InterceptorConstantValue; |  | 
|   21 import 'compiler.dart' show |  | 
|   22     Compiler; |  | 
|   23 import 'deferred_load.dart' show |  | 
|   24     OutputUnit; |  | 
|   25 import 'elements/elements.dart'; |   17 import 'elements/elements.dart'; | 
|   26 import 'elements/visitor.dart'; |   18 import 'elements/visitor.dart'; | 
|   27 import 'info/send_info.dart' show |   19 import 'info/send_info.dart' show collectSendMeasurements; | 
|   28     collectSendMeasurements; |   20 import 'js_backend/js_backend.dart' show JavaScriptBackend; | 
|   29 import 'js_backend/js_backend.dart' show |   21 import 'js_emitter/full_emitter/emitter.dart' as full show Emitter; | 
|   30     JavaScriptBackend; |  | 
|   31 import 'js_emitter/full_emitter/emitter.dart' as full show |  | 
|   32     Emitter; |  | 
|   33 import 'js/js.dart' as jsAst; |   22 import 'js/js.dart' as jsAst; | 
|   34 import 'types/types.dart' show |   23 import 'types/types.dart' show TypeMask; | 
|   35     TypeMask; |   24 import 'universe/universe.dart' show ReceiverConstraint; | 
|   36 import 'universe/universe.dart' show |   25 import 'universe/world_impact.dart' | 
|   37     ReceiverConstraint; |   26     show ImpactUseCase, WorldImpact, WorldImpactVisitorImpl; | 
|   38 import 'universe/world_impact.dart' show |  | 
|   39     ImpactUseCase, |  | 
|   40     WorldImpact, |  | 
|   41     WorldImpactVisitorImpl; |  | 
|   42  |   27  | 
|   43 class ElementInfoCollector extends BaseElementVisitor<Info, dynamic> { |   28 class ElementInfoCollector extends BaseElementVisitor<Info, dynamic> { | 
|   44   final Compiler compiler; |   29   final Compiler compiler; | 
|   45  |   30  | 
|   46   final AllInfo result = new AllInfo(); |   31   final AllInfo result = new AllInfo(); | 
|   47   final Map<Element, Info> _elementToInfo = <Element, Info>{}; |   32   final Map<Element, Info> _elementToInfo = <Element, Info>{}; | 
|   48   final Map<ConstantValue, Info> _constantToInfo = <ConstantValue, Info>{}; |   33   final Map<ConstantValue, Info> _constantToInfo = <ConstantValue, Info>{}; | 
|   49   final Map<OutputUnit, OutputUnitInfo> _outputToInfo = {}; |   34   final Map<OutputUnit, OutputUnitInfo> _outputToInfo = {}; | 
|   50  |   35  | 
|   51   ElementInfoCollector(this.compiler); |   36   ElementInfoCollector(this.compiler); | 
| (...skipping 394 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  446    * used and the selector that selected the element. |  431    * used and the selector that selected the element. | 
|  447    */ |  432    */ | 
|  448   Iterable<Selection> getRetaining(Element element) { |  433   Iterable<Selection> getRetaining(Element element) { | 
|  449     WorldImpact impact = impacts[element]; |  434     WorldImpact impact = impacts[element]; | 
|  450     if (impact == null) return const <Selection>[]; |  435     if (impact == null) return const <Selection>[]; | 
|  451  |  436  | 
|  452     var selections = <Selection>[]; |  437     var selections = <Selection>[]; | 
|  453     compiler.impactStrategy.visitImpact( |  438     compiler.impactStrategy.visitImpact( | 
|  454         element, |  439         element, | 
|  455         impact, |  440         impact, | 
|  456         new WorldImpactVisitorImpl( |  441         new WorldImpactVisitorImpl(visitDynamicUse: (dynamicUse) { | 
|  457             visitDynamicUse: (dynamicUse) { |  442           selections.addAll(compiler.world.allFunctions | 
|  458               selections.addAll(compiler.world.allFunctions |  443               .filter(dynamicUse.selector, dynamicUse.mask) | 
|  459                         .filter(dynamicUse.selector, dynamicUse.mask) |  444               .map((e) => new Selection(e, dynamicUse.mask))); | 
|  460                         .map((e) => new Selection(e, dynamicUse.mask))); |  445         }, visitStaticUse: (staticUse) { | 
|  461             }, |  446           selections.add(new Selection(staticUse.element, null)); | 
|  462             visitStaticUse: (staticUse) { |  447         }), | 
|  463               selections.add(new Selection(staticUse.element, null)); |  | 
|  464             } |  | 
|  465         ), |  | 
|  466         IMPACT_USE); |  448         IMPACT_USE); | 
|  467     return selections; |  449     return selections; | 
|  468   } |  450   } | 
|  469  |  451  | 
|  470   // Returns true if we care about tracking the size of |  452   // Returns true if we care about tracking the size of | 
|  471   // this node. |  453   // this node. | 
|  472   bool isTracking(jsAst.Node code) { |  454   bool isTracking(jsAst.Node code) { | 
|  473     if (compiler.options.dumpInfo) { |  455     if (compiler.options.dumpInfo) { | 
|  474       return _tracking.contains(code); |  456       return _tracking.contains(code); | 
|  475     } else { |  457     } else { | 
| (...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  605  |  587  | 
|  606     ChunkedConversionSink<Object> sink = encoder.startChunkedConversion( |  588     ChunkedConversionSink<Object> sink = encoder.startChunkedConversion( | 
|  607         new StringConversionSink.fromStringSink(buffer)); |  589         new StringConversionSink.fromStringSink(buffer)); | 
|  608     sink.add(new AllInfoJsonCodec().encode(result)); |  590     sink.add(new AllInfoJsonCodec().encode(result)); | 
|  609     reporter.reportInfo(NO_LOCATION_SPANNABLE, MessageKind.GENERIC, { |  591     reporter.reportInfo(NO_LOCATION_SPANNABLE, MessageKind.GENERIC, { | 
|  610       'text': "View the dumped .info.json file at " |  592       'text': "View the dumped .info.json file at " | 
|  611           "https://dart-lang.github.io/dump-info-visualizer" |  593           "https://dart-lang.github.io/dump-info-visualizer" | 
|  612     }); |  594     }); | 
|  613   } |  595   } | 
|  614 } |  596 } | 
| OLD | NEW |