| OLD | NEW |
| 1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2015, 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 dart2js.js_helpers.impact; | 5 library dart2js.js_helpers.impact; |
| 6 | 6 |
| 7 import '../common/names.dart'; | 7 import '../common/names.dart'; |
| 8 import '../compiler.dart' show Compiler; | 8 import '../compiler.dart' show Compiler; |
| 9 import '../core_types.dart' show CommonElements; | 9 import '../core_types.dart' show CommonElements; |
| 10 import '../elements/resolution_types.dart' show InterfaceType; | 10 import '../elements/resolution_types.dart' show ResolutionInterfaceType; |
| 11 import '../elements/elements.dart' show ClassElement, Element; | 11 import '../elements/elements.dart' show ClassElement, Element; |
| 12 import '../universe/selector.dart'; | 12 import '../universe/selector.dart'; |
| 13 import '../util/enumset.dart'; | 13 import '../util/enumset.dart'; |
| 14 import 'backend_helpers.dart'; | 14 import 'backend_helpers.dart'; |
| 15 import 'constant_system_javascript.dart'; | 15 import 'constant_system_javascript.dart'; |
| 16 import 'js_backend.dart'; | 16 import 'js_backend.dart'; |
| 17 | 17 |
| 18 /// Backend specific features required by a backend impact. | 18 /// Backend specific features required by a backend impact. |
| 19 enum BackendFeature { | 19 enum BackendFeature { |
| 20 needToInitializeIsolateAffinityTag, | 20 needToInitializeIsolateAffinityTag, |
| 21 needToInitializeDispatchProperty, | 21 needToInitializeDispatchProperty, |
| 22 } | 22 } |
| 23 | 23 |
| 24 /// A set of JavaScript backend dependencies. | 24 /// A set of JavaScript backend dependencies. |
| 25 class BackendImpact { | 25 class BackendImpact { |
| 26 final List<Element> staticUses; | 26 final List<Element> staticUses; |
| 27 final List<Element> globalUses; | 27 final List<Element> globalUses; |
| 28 final List<Selector> dynamicUses; | 28 final List<Selector> dynamicUses; |
| 29 final List<InterfaceType> instantiatedTypes; | 29 final List<ResolutionInterfaceType> instantiatedTypes; |
| 30 final List<ClassElement> instantiatedClasses; | 30 final List<ClassElement> instantiatedClasses; |
| 31 final List<ClassElement> globalClasses; | 31 final List<ClassElement> globalClasses; |
| 32 final List<BackendImpact> otherImpacts; | 32 final List<BackendImpact> otherImpacts; |
| 33 final EnumSet<BackendFeature> _features; | 33 final EnumSet<BackendFeature> _features; |
| 34 | 34 |
| 35 const BackendImpact( | 35 const BackendImpact( |
| 36 {this.staticUses: const <Element>[], | 36 {this.staticUses: const <Element>[], |
| 37 this.globalUses: const <Element>[], | 37 this.globalUses: const <Element>[], |
| 38 this.dynamicUses: const <Selector>[], | 38 this.dynamicUses: const <Selector>[], |
| 39 this.instantiatedTypes: const <InterfaceType>[], | 39 this.instantiatedTypes: const <ResolutionInterfaceType>[], |
| 40 this.instantiatedClasses: const <ClassElement>[], | 40 this.instantiatedClasses: const <ClassElement>[], |
| 41 this.globalClasses: const <ClassElement>[], | 41 this.globalClasses: const <ClassElement>[], |
| 42 this.otherImpacts: const <BackendImpact>[], | 42 this.otherImpacts: const <BackendImpact>[], |
| 43 EnumSet<BackendFeature> features: const EnumSet<BackendFeature>.fixed(0)}) | 43 EnumSet<BackendFeature> features: const EnumSet<BackendFeature>.fixed(0)}) |
| 44 : this._features = features; | 44 : this._features = features; |
| 45 | 45 |
| 46 Iterable<BackendFeature> get features => | 46 Iterable<BackendFeature> get features => |
| 47 _features.iterable(BackendFeature.values); | 47 _features.iterable(BackendFeature.values); |
| 48 } | 48 } |
| 49 | 49 |
| (...skipping 673 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 723 | 723 |
| 724 BackendImpact _staticClosure; | 724 BackendImpact _staticClosure; |
| 725 | 725 |
| 726 /// Backend impact for performing closurization of a top-level or static | 726 /// Backend impact for performing closurization of a top-level or static |
| 727 /// function. | 727 /// function. |
| 728 BackendImpact get staticClosure { | 728 BackendImpact get staticClosure { |
| 729 return _staticClosure ??= | 729 return _staticClosure ??= |
| 730 new BackendImpact(globalClasses: [helpers.closureClass]); | 730 new BackendImpact(globalClasses: [helpers.closureClass]); |
| 731 } | 731 } |
| 732 } | 732 } |
| OLD | NEW |