@@ -14,33 +14,11 @@ import '../universe/world_impact.dart'
1414import 'behavior.dart' ;
1515import 'resolver.dart' show NativeClassFinder;
1616
17- /// This could be an abstract class but we use it as a stub for the
18- /// dart_backend.
19- class NativeEnqueuer {
20- /// Called when a [type] has been instantiated natively.
21- void onInstantiatedType (InterfaceType type) {}
22-
23- /// Initial entry point to native enqueuer.
24- WorldImpact processNativeClasses (Iterable <Uri > libraries) =>
25- const WorldImpact ();
26-
27- /// Registers the [nativeBehavior] . Adds the liveness of its instantiated
28- /// types to the world.
29- void registerNativeBehavior (
30- WorldImpactBuilder impactBuilder, NativeBehavior nativeBehavior, cause) {}
31-
32- /// Returns whether native classes are being used.
33- bool get hasInstantiatedNativeClasses => false ;
34-
35- /// Emits a summary information using the [log] function.
36- void logSummary (void log (String message)) {}
37- }
38-
39- abstract class NativeEnqueuerBase implements NativeEnqueuer {
17+ abstract class NativeEnqueuer {
4018 final Set <ClassEntity > _registeredClasses = {};
4119 final Set <ClassEntity > _unusedClasses = {};
4220
43- @override
21+ /// Returns whether native classes are being used.
4422 bool get hasInstantiatedNativeClasses => ! _registeredClasses.isEmpty;
4523
4624 /// Log message reported if all native types are used.
@@ -52,18 +30,21 @@ abstract class NativeEnqueuerBase implements NativeEnqueuer {
5230 final CommonElements _commonElements;
5331
5432 /// Subclasses of [NativeEnqueuerBase] are constructed by the backend.
55- NativeEnqueuerBase (this ._options, this ._elementEnvironment,
56- this ._commonElements, this . _dartTypes);
33+ NativeEnqueuer (this ._options, this ._elementEnvironment, this ._commonElements ,
34+ this ._dartTypes);
5735
5836 bool get enableLiveTypeAnalysis => _options.enableNativeLiveTypeAnalysis;
5937
60- @override
38+ /// Called when a [type] has been instantiated natively.
6139 void onInstantiatedType (InterfaceType type) {
6240 if (_unusedClasses.remove (type.element)) {
6341 _registeredClasses.add (type.element);
6442 }
6543 }
6644
45+ /// Initial entry point to native enqueuer.
46+ WorldImpact processNativeClasses (Iterable <Uri > libraries);
47+
6748 /// Register [classes] as natively instantiated in [impactBuilder] .
6849 void _registerTypeUses (
6950 WorldImpactBuilder impactBuilder, Set <ClassEntity > classes, cause) {
@@ -79,7 +60,8 @@ abstract class NativeEnqueuerBase implements NativeEnqueuer {
7960 }
8061 }
8162
82- @override
63+ /// Registers the [nativeBehavior] . Adds the liveness of its instantiated
64+ /// types to the world.
8365 void registerNativeBehavior (
8466 WorldImpactBuilder impactBuilder, NativeBehavior nativeBehavior, cause) {
8567 _processNativeBehavior (impactBuilder, nativeBehavior, cause);
@@ -169,15 +151,15 @@ abstract class NativeEnqueuerBase implements NativeEnqueuer {
169151 });
170152 }
171153
172- @override
154+ /// Emits a summary information using the [log] function.
173155 void logSummary (void log (String message)) {
174156 if (_allUsedMessage != null ) {
175157 log (_allUsedMessage);
176158 }
177159 }
178160}
179161
180- class NativeResolutionEnqueuer extends NativeEnqueuerBase {
162+ class NativeResolutionEnqueuer extends NativeEnqueuer {
181163 final NativeClassFinder _nativeClassFinder;
182164
183165 /// The set of all native classes. Each native class is in [nativeClasses]
@@ -219,7 +201,7 @@ class NativeResolutionEnqueuer extends NativeEnqueuerBase {
219201 }
220202}
221203
222- class NativeCodegenEnqueuer extends NativeEnqueuerBase {
204+ class NativeCodegenEnqueuer extends NativeEnqueuer {
223205 final CodeEmitterTask _emitter;
224206 final Iterable <ClassEntity > _nativeClasses;
225207 final NativeData _nativeData;
0 commit comments