OLD | NEW |
---|---|
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2012, 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.enqueue; | 5 library dart2js.enqueue; |
6 | 6 |
7 import 'dart:collection' show Queue; | 7 import 'dart:collection' show Queue; |
8 | 8 |
9 import 'common/names.dart' show Identifiers; | 9 import 'common/names.dart' show Identifiers; |
10 import 'common/resolution.dart' show Resolution; | 10 import 'common/resolution.dart' show Resolution; |
(...skipping 14 matching lines...) Expand all Loading... | |
25 Entity, | 25 Entity, |
26 FunctionElement, | 26 FunctionElement, |
27 LibraryElement, | 27 LibraryElement, |
28 Member, | 28 Member, |
29 Name, | 29 Name, |
30 TypedElement, | 30 TypedElement, |
31 TypedefElement; | 31 TypedefElement; |
32 import 'native/native.dart' as native; | 32 import 'native/native.dart' as native; |
33 import 'types/types.dart' show TypeMaskStrategy; | 33 import 'types/types.dart' show TypeMaskStrategy; |
34 import 'universe/selector.dart' show Selector; | 34 import 'universe/selector.dart' show Selector; |
35 import 'universe/universe.dart'; | 35 import 'universe/world_builder.dart'; |
36 import 'universe/use.dart' | 36 import 'universe/use.dart' |
37 show DynamicUse, StaticUse, StaticUseKind, TypeUse, TypeUseKind; | 37 show DynamicUse, StaticUse, StaticUseKind, TypeUse, TypeUseKind; |
38 import 'universe/world_impact.dart' | 38 import 'universe/world_impact.dart' |
39 show ImpactUseCase, WorldImpact, WorldImpactVisitor; | 39 show ImpactUseCase, WorldImpact, WorldImpactVisitor; |
40 import 'util/util.dart' show Setlet; | 40 import 'util/util.dart' show Setlet; |
41 | 41 |
42 class EnqueueTask extends CompilerTask { | 42 class EnqueueTask extends CompilerTask { |
43 final ResolutionEnqueuer resolution; | 43 final ResolutionEnqueuer resolution; |
44 final Enqueuer codegen; | 44 final Enqueuer codegen; |
45 final Compiler compiler; | 45 final Compiler compiler; |
(...skipping 18 matching lines...) Expand all Loading... | |
64 } | 64 } |
65 | 65 |
66 void forgetElement(Element element) { | 66 void forgetElement(Element element) { |
67 resolution.forgetElement(element); | 67 resolution.forgetElement(element); |
68 codegen.forgetElement(element); | 68 codegen.forgetElement(element); |
69 } | 69 } |
70 } | 70 } |
71 | 71 |
72 abstract class Enqueuer { | 72 abstract class Enqueuer { |
73 EnqueueTask task; | 73 EnqueueTask task; |
74 Universe get universe; | 74 WorldBuilder get universe; |
Siggi Cherem (dart-lang)
2016/09/29 18:14:48
might be worth renaming this field (and _universe
Johnni Winther
2016/09/30 08:43:14
Acknowledged.
| |
75 native.NativeEnqueuer nativeEnqueuer; // Set by EnqueueTask | 75 native.NativeEnqueuer nativeEnqueuer; // Set by EnqueueTask |
76 void forgetElement(Element element); | 76 void forgetElement(Element element); |
77 void processInstantiatedClassMembers(ClassElement cls); | 77 void processInstantiatedClassMembers(ClassElement cls); |
78 void processInstantiatedClassMember(ClassElement cls, Element member); | 78 void processInstantiatedClassMember(ClassElement cls, Element member); |
79 void handleUnseenSelectorInternal(DynamicUse dynamicUse); | 79 void handleUnseenSelectorInternal(DynamicUse dynamicUse); |
80 void registerStaticUse(StaticUse staticUse); | 80 void registerStaticUse(StaticUse staticUse); |
81 void registerStaticUseInternal(StaticUse staticUse); | 81 void registerStaticUseInternal(StaticUse staticUse); |
82 void registerDynamicUse(DynamicUse dynamicUse); | 82 void registerDynamicUse(DynamicUse dynamicUse); |
83 void registerTypeUse(TypeUse typeUse); | 83 void registerTypeUse(TypeUse typeUse); |
84 | 84 |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
128 class ResolutionEnqueuer extends Enqueuer { | 128 class ResolutionEnqueuer extends Enqueuer { |
129 final String name; | 129 final String name; |
130 final Compiler compiler; // TODO(ahe): Remove this dependency. | 130 final Compiler compiler; // TODO(ahe): Remove this dependency. |
131 final EnqueuerStrategy strategy; | 131 final EnqueuerStrategy strategy; |
132 final Map<String, Set<Element>> instanceMembersByName = | 132 final Map<String, Set<Element>> instanceMembersByName = |
133 new Map<String, Set<Element>>(); | 133 new Map<String, Set<Element>>(); |
134 final Map<String, Set<Element>> instanceFunctionsByName = | 134 final Map<String, Set<Element>> instanceFunctionsByName = |
135 new Map<String, Set<Element>>(); | 135 new Map<String, Set<Element>>(); |
136 final Set<ClassElement> _processedClasses = new Set<ClassElement>(); | 136 final Set<ClassElement> _processedClasses = new Set<ClassElement>(); |
137 Set<ClassElement> recentClasses = new Setlet<ClassElement>(); | 137 Set<ClassElement> recentClasses = new Setlet<ClassElement>(); |
138 final ResolutionUniverseImpl _universe = | 138 final ResolutionWorldBuilderImpl _universe = |
139 new ResolutionUniverseImpl(const TypeMaskStrategy()); | 139 new ResolutionWorldBuilderImpl(const TypeMaskStrategy()); |
140 | 140 |
141 static final TRACE_MIRROR_ENQUEUING = | 141 static final TRACE_MIRROR_ENQUEUING = |
142 const bool.fromEnvironment("TRACE_MIRROR_ENQUEUING"); | 142 const bool.fromEnvironment("TRACE_MIRROR_ENQUEUING"); |
143 | 143 |
144 bool queueIsClosed = false; | 144 bool queueIsClosed = false; |
145 | 145 |
146 bool hasEnqueuedReflectiveElements = false; | 146 bool hasEnqueuedReflectiveElements = false; |
147 bool hasEnqueuedReflectiveStaticFields = false; | 147 bool hasEnqueuedReflectiveStaticFields = false; |
148 | 148 |
149 WorldImpactVisitor impactVisitor; | 149 WorldImpactVisitor impactVisitor; |
150 | 150 |
151 ResolutionEnqueuer(Compiler compiler, this.strategy) | 151 ResolutionEnqueuer(Compiler compiler, this.strategy) |
152 : this.name = 'resolution enqueuer', | 152 : this.name = 'resolution enqueuer', |
153 this.compiler = compiler, | 153 this.compiler = compiler, |
154 processedElements = new Set<AstElement>(), | 154 processedElements = new Set<AstElement>(), |
155 queue = new Queue<ResolutionWorkItem>(), | 155 queue = new Queue<ResolutionWorkItem>(), |
156 deferredQueue = new Queue<_DeferredAction>() { | 156 deferredQueue = new Queue<_DeferredAction>() { |
157 impactVisitor = new _EnqueuerImpactVisitor(this); | 157 impactVisitor = new _EnqueuerImpactVisitor(this); |
158 } | 158 } |
159 | 159 |
160 // TODO(johnniwinther): Move this to [ResolutionEnqueuer]. | 160 // TODO(johnniwinther): Move this to [ResolutionEnqueuer]. |
161 Resolution get resolution => compiler.resolution; | 161 Resolution get resolution => compiler.resolution; |
162 | 162 |
163 ResolutionUniverse get universe => _universe; | 163 ResolutionWorldBuilder get universe => _universe; |
164 | 164 |
165 bool get queueIsEmpty => queue.isEmpty; | 165 bool get queueIsEmpty => queue.isEmpty; |
166 | 166 |
167 QueueFilter get filter => compiler.enqueuerFilter; | 167 QueueFilter get filter => compiler.enqueuerFilter; |
168 | 168 |
169 DiagnosticReporter get reporter => compiler.reporter; | 169 DiagnosticReporter get reporter => compiler.reporter; |
170 | 170 |
171 bool isClassProcessed(ClassElement cls) => _processedClasses.contains(cls); | 171 bool isClassProcessed(ClassElement cls) => _processedClasses.contains(cls); |
172 | 172 |
173 Iterable<ClassElement> get processedClasses => _processedClasses; | 173 Iterable<ClassElement> get processedClasses => _processedClasses; |
(...skipping 734 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
908 } | 908 } |
909 | 909 |
910 typedef void _DeferredActionFunction(); | 910 typedef void _DeferredActionFunction(); |
911 | 911 |
912 class _DeferredAction { | 912 class _DeferredAction { |
913 final Element element; | 913 final Element element; |
914 final _DeferredActionFunction action; | 914 final _DeferredActionFunction action; |
915 | 915 |
916 _DeferredAction(this.element, this.action); | 916 _DeferredAction(this.element, this.action); |
917 } | 917 } |
OLD | NEW |