[dart2js] Cleanup NativeEnqueuer.
This cl removes an unnecessary concrete interface, and makes the
existing base class abstract.
Change-Id: I41891a7b3c57008de05a7c4a20a70452983ab441
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/232125
Reviewed-by: Mayank Patke <fishythefish@google.com>
Commit-Queue: Joshua Litt <joshualitt@google.com>
diff --git a/pkg/compiler/lib/src/native/enqueue.dart b/pkg/compiler/lib/src/native/enqueue.dart
index 1876079..2b6355c 100644
--- a/pkg/compiler/lib/src/native/enqueue.dart
+++ b/pkg/compiler/lib/src/native/enqueue.dart
@@ -14,33 +14,11 @@
import 'behavior.dart';
import 'resolver.dart' show NativeClassFinder;
-/// This could be an abstract class but we use it as a stub for the
-/// dart_backend.
-class NativeEnqueuer {
- /// Called when a [type] has been instantiated natively.
- void onInstantiatedType(InterfaceType type) {}
-
- /// Initial entry point to native enqueuer.
- WorldImpact processNativeClasses(Iterable<Uri> libraries) =>
- const WorldImpact();
-
- /// Registers the [nativeBehavior]. Adds the liveness of its instantiated
- /// types to the world.
- void registerNativeBehavior(
- WorldImpactBuilder impactBuilder, NativeBehavior nativeBehavior, cause) {}
-
- /// Returns whether native classes are being used.
- bool get hasInstantiatedNativeClasses => false;
-
- /// Emits a summary information using the [log] function.
- void logSummary(void log(String message)) {}
-}
-
-abstract class NativeEnqueuerBase implements NativeEnqueuer {
+abstract class NativeEnqueuer {
final Set<ClassEntity> _registeredClasses = {};
final Set<ClassEntity> _unusedClasses = {};
- @override
+ /// Returns whether native classes are being used.
bool get hasInstantiatedNativeClasses => !_registeredClasses.isEmpty;
/// Log message reported if all native types are used.
@@ -52,18 +30,21 @@
final CommonElements _commonElements;
/// Subclasses of [NativeEnqueuerBase] are constructed by the backend.
- NativeEnqueuerBase(this._options, this._elementEnvironment,
- this._commonElements, this._dartTypes);
+ NativeEnqueuer(this._options, this._elementEnvironment, this._commonElements,
+ this._dartTypes);
bool get enableLiveTypeAnalysis => _options.enableNativeLiveTypeAnalysis;
- @override
+ /// Called when a [type] has been instantiated natively.
void onInstantiatedType(InterfaceType type) {
if (_unusedClasses.remove(type.element)) {
_registeredClasses.add(type.element);
}
}
+ /// Initial entry point to native enqueuer.
+ WorldImpact processNativeClasses(Iterable<Uri> libraries);
+
/// Register [classes] as natively instantiated in [impactBuilder].
void _registerTypeUses(
WorldImpactBuilder impactBuilder, Set<ClassEntity> classes, cause) {
@@ -79,7 +60,8 @@
}
}
- @override
+ /// Registers the [nativeBehavior]. Adds the liveness of its instantiated
+ /// types to the world.
void registerNativeBehavior(
WorldImpactBuilder impactBuilder, NativeBehavior nativeBehavior, cause) {
_processNativeBehavior(impactBuilder, nativeBehavior, cause);
@@ -169,7 +151,7 @@
});
}
- @override
+ /// Emits a summary information using the [log] function.
void logSummary(void log(String message)) {
if (_allUsedMessage != null) {
log(_allUsedMessage);
@@ -177,7 +159,7 @@
}
}
-class NativeResolutionEnqueuer extends NativeEnqueuerBase {
+class NativeResolutionEnqueuer extends NativeEnqueuer {
final NativeClassFinder _nativeClassFinder;
/// The set of all native classes. Each native class is in [nativeClasses]
@@ -219,7 +201,7 @@
}
}
-class NativeCodegenEnqueuer extends NativeEnqueuerBase {
+class NativeCodegenEnqueuer extends NativeEnqueuer {
final CodeEmitterTask _emitter;
final Iterable<ClassEntity> _nativeClasses;
final NativeData _nativeData;