[dart2js] Prep js_model/js_strategy.dart for null safety migration.
Change-Id: Ia4eb541de5671850c34633d466ef2d7f0d50bbdc
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/277280
Reviewed-by: Stephen Adams <sra@google.com>
diff --git a/pkg/compiler/lib/src/compiler.dart b/pkg/compiler/lib/src/compiler.dart
index 471de47..e5bb5ea 100644
--- a/pkg/compiler/lib/src/compiler.dart
+++ b/pkg/compiler/lib/src/compiler.dart
@@ -27,6 +27,7 @@
CompilerDumpInfoFacade,
CompilerEmitterFacade,
CompilerInferrerFacade,
+ CompilerJsBackendStrategyFacade,
CompilerKernelStrategyFacade,
CompilerTypeInferenceFacade;
import 'deferred_load/deferred_load.dart' show DeferredLoadTask;
@@ -86,6 +87,7 @@
CompilerDumpInfoFacade,
CompilerEmitterFacade,
CompilerInferrerFacade,
+ CompilerJsBackendStrategyFacade,
CompilerKernelStrategyFacade,
CompilerTypeInferenceFacade {
@override
@@ -131,6 +133,7 @@
@override
Map<Entity, WorldImpact> get impactCache => _impactCache;
+ @override
final Environment environment;
List<CompilerTask> tasks;
@@ -141,6 +144,7 @@
experimentalInferrer.GlobalTypeInferenceTask experimentalGlobalInference;
CodegenWorldBuilder _codegenWorldBuilder;
+ @override
AbstractValueStrategy abstractValueStrategy;
GenericTask selfTask;
diff --git a/pkg/compiler/lib/src/compiler_interfaces.dart b/pkg/compiler/lib/src/compiler_interfaces.dart
index eed7d2c..e18f010 100644
--- a/pkg/compiler/lib/src/compiler_interfaces.dart
+++ b/pkg/compiler/lib/src/compiler_interfaces.dart
@@ -6,6 +6,9 @@
// TODO(48820): delete after the migration is complete.
library compiler.src.compiler_interfaces;
+import 'package:compiler/src/environment.dart';
+import 'package:compiler/src/inferrer/abstract_value_strategy.dart';
+
import '../compiler_api.dart' show CompilerOutput, Diagnostic;
import 'common/tasks.dart' show Measurer;
@@ -111,3 +114,15 @@
CompilerOutput get outputProvider;
DumpInfoJavaScriptMonitor get dumpInfoTask;
}
+
+// Subset of [Compiler] needed by JsBackendStrategy
+///
+/// See definitions on [Compiler] for documentation.
+abstract class CompilerJsBackendStrategyFacade
+ implements CompilerEmitterFacade, CompilerInferrerFacade {
+ KernelFrontendStrategy get frontendStrategy;
+
+ Environment get environment;
+
+ AbstractValueStrategy get abstractValueStrategy;
+}
diff --git a/pkg/compiler/lib/src/dump_info.dart b/pkg/compiler/lib/src/dump_info.dart
index c9fd2a8..9d43f9c 100644
--- a/pkg/compiler/lib/src/dump_info.dart
+++ b/pkg/compiler/lib/src/dump_info.dart
@@ -1185,6 +1185,7 @@
inlineMap[inlinedFrom]!.add(element);
}
+ @override
void registerImpact(MemberEntity member, WorldImpact impact) {
if (compiler.options.dumpInfo) {
impacts[member] = impact;
diff --git a/pkg/compiler/lib/src/dump_info_javascript_monitor.dart b/pkg/compiler/lib/src/dump_info_javascript_monitor.dart
index da46ae1..5645e56 100644
--- a/pkg/compiler/lib/src/dump_info_javascript_monitor.dart
+++ b/pkg/compiler/lib/src/dump_info_javascript_monitor.dart
@@ -6,6 +6,9 @@
import 'package:js_ast/js_ast.dart' as jsAst show Node;
+import 'elements/entities.dart';
+import 'universe/world_impact.dart';
+
/// Interface implemented by `DumpInfoTask` used to monitor the generated
/// JavaScript as it is written.
// TODO(48820): Remove this interface when `DumpInfoTask` is migrated.
@@ -15,4 +18,5 @@
void enterNode(jsAst.Node node, int start);
void emit(String string);
void exitNode(jsAst.Node node, int start, int end, int? closing);
+ void registerImpact(MemberEntity member, WorldImpact worldImpact);
}
diff --git a/pkg/compiler/lib/src/js_backend/backend.dart b/pkg/compiler/lib/src/js_backend/backend.dart
index 81e3b49..368f25a 100644
--- a/pkg/compiler/lib/src/js_backend/backend.dart
+++ b/pkg/compiler/lib/src/js_backend/backend.dart
@@ -6,6 +6,7 @@
import '../common.dart';
import '../common/codegen.dart';
+import '../common/tasks.dart';
import '../elements/entities.dart';
import '../inferrer/types.dart';
import '../js_model/elements.dart';
@@ -19,7 +20,7 @@
/// Generates JavaScript code for [member].
CodegenResult compile(MemberEntity member);
- Iterable get tasks;
+ List<CompilerTask> get tasks;
}
/*
diff --git a/pkg/compiler/lib/src/js_model/element_map_impl.dart b/pkg/compiler/lib/src/js_model/element_map_impl.dart
index 0934d56..76e2a18 100644
--- a/pkg/compiler/lib/src/js_model/element_map_impl.dart
+++ b/pkg/compiler/lib/src/js_model/element_map_impl.dart
@@ -128,7 +128,7 @@
this._environment,
KernelToElementMap _elementMap,
Map<MemberEntity, MemberUsage> liveMemberUsage,
- Set<MemberEntity> liveAbstractMembers,
+ Iterable<MemberEntity> liveAbstractMembers,
AnnotationsData annotations)
: this.options = _elementMap.options {
_elementEnvironment = JsElementEnvironment(this);
diff --git a/pkg/compiler/lib/src/js_model/js_strategy.dart b/pkg/compiler/lib/src/js_model/js_strategy.dart
index a90ea9f..9f6a65b 100644
--- a/pkg/compiler/lib/src/js_model/js_strategy.dart
+++ b/pkg/compiler/lib/src/js_model/js_strategy.dart
@@ -11,7 +11,7 @@
import '../common/elements.dart' show CommonElements, ElementEnvironment;
import '../common/tasks.dart';
import '../common/work.dart';
-import '../compiler.dart';
+import '../compiler_interfaces.dart';
import '../deferred_load/output_unit.dart'
show LateOutputUnitDataBuilder, OutputUnitData;
import '../dump_info.dart';
@@ -74,7 +74,7 @@
/// JS Strategy pattern that defines the element model used in type inference
/// and code generation.
class JsBackendStrategy implements interfaces.JsBackendStrategy {
- final Compiler _compiler;
+ final CompilerJsBackendStrategyFacade _compiler;
JsKernelToElementMap _elementMap;
/// Codegen support for generating table of interceptors and
diff --git a/pkg/compiler/lib/src/kernel/env.dart b/pkg/compiler/lib/src/kernel/env.dart
index b38c337..07bd4a2 100644
--- a/pkg/compiler/lib/src/kernel/env.dart
+++ b/pkg/compiler/lib/src/kernel/env.dart
@@ -246,7 +246,7 @@
JClassEnv convert(
IrToElementMap kElementMap,
Map<MemberEntity, MemberUsage> liveMemberUsage,
- Set<MemberEntity> liveAbstractMembers,
+ Iterable<MemberEntity> liveAbstractMembers,
LibraryEntity Function(ir.Library library) getJLibrary);
/// Returns `true` if [node] is a known member of this class.
@@ -436,7 +436,7 @@
JClassEnv convert(
IrToElementMap kElementMap,
Map<MemberEntity, MemberUsage> liveMemberUsage,
- Set<MemberEntity> liveAbstractMembers,
+ Iterable<MemberEntity> liveAbstractMembers,
LibraryEntity Function(ir.Library library) getJLibrary) {
Map<String, ir.Member> constructorMap;
Map<Name, ir.Member> memberMap;
diff --git a/pkg/compiler/lib/src/ssa/ssa.dart b/pkg/compiler/lib/src/ssa/ssa.dart
index 2cfa4d4..5d16492 100644
--- a/pkg/compiler/lib/src/ssa/ssa.dart
+++ b/pkg/compiler/lib/src/ssa/ssa.dart
@@ -311,7 +311,7 @@
}
@override
- Iterable<CompilerTask> get tasks {
+ List<CompilerTask> get tasks {
return [_builder, optimizer, generator];
}
}