[dart2js] js_backend/ should not depend on ssa/

Break cycle by passing in the MemberEntity being compiled rather than
its HGraph.

Add some 'show' clauses to some imports.

Change-Id: I89557fa45320ccbd7c564ebe7d396b3628bfacd4
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/249241
Reviewed-by: Mayank Patke <fishythefish@google.com>
Commit-Queue: Stephen Adams <sra@google.com>
Reviewed-by: Joshua Litt <joshualitt@google.com>
This commit is contained in:
Stephen Adams 2022-06-21 22:26:14 +00:00 committed by Commit Bot
parent 16796fbbe0
commit 053c25f7bc
5 changed files with 9 additions and 10 deletions

View file

@ -4,7 +4,7 @@
// @dart = 2.10
import '../universe/world_builder.dart';
import '../universe/world_builder.dart' show SelectorConstraintsStrategy;
import '../world.dart';
import 'abstract_value_domain.dart';

View file

@ -9,7 +9,7 @@ import '../common/elements.dart';
import '../elements/entities.dart';
import '../elements/types.dart';
import '../ir/runtime_type_analysis.dart';
import '../kernel/kernel_strategy.dart';
import '../kernel/kernel_strategy.dart' show KernelFrontendStrategy;
import '../serialization/serialization_interfaces.dart';
import '../universe/feature.dart';
import '../util/util.dart' show Setlet;

View file

@ -8,7 +8,7 @@ import '../common.dart';
import '../common/elements.dart' show CommonElements;
import '../common/names.dart' show Identifiers, Selectors;
import '../elements/entities.dart';
import '../inferrer/types.dart';
import '../inferrer/types.dart' show GlobalTypeInferenceResults;
import '../kernel/no_such_method_resolver.dart';
import '../serialization/serialization_interfaces.dart';

View file

@ -9,7 +9,6 @@ import '../deferred_load/output_unit.dart' show OutputUnitData;
import '../elements/entities.dart';
import '../elements/types.dart';
import '../js_backend/interceptor_data.dart' show InterceptorData;
import '../ssa/nodes.dart' show HGraph;
import '../universe/class_hierarchy.dart' show ClassHierarchy;
import '../world.dart' show JClosedWorld;
@ -26,20 +25,20 @@ enum IsTestSpecialization {
class SpecializedChecks {
static IsTestSpecialization findIsTestSpecialization(
DartType dartType, HGraph graph, JClosedWorld closedWorld) {
DartType dartType, MemberEntity compiland, JClosedWorld closedWorld) {
if (dartType is LegacyType) {
DartType base = dartType.baseType;
// `Never*` accepts only `null`.
if (base is NeverType) return IsTestSpecialization.isNull;
// `Object*` is top and should be handled by constant folding.
if (base.isObject) return null;
return _findIsTestSpecialization(base, graph, closedWorld);
return _findIsTestSpecialization(base, compiland, closedWorld);
}
return _findIsTestSpecialization(dartType, graph, closedWorld);
return _findIsTestSpecialization(dartType, compiland, closedWorld);
}
static IsTestSpecialization _findIsTestSpecialization(
DartType dartType, HGraph graph, JClosedWorld closedWorld) {
DartType dartType, MemberEntity compiland, JClosedWorld closedWorld) {
if (dartType is InterfaceType) {
ClassEntity element = dartType.element;
JCommonElements commonElements = closedWorld.commonElements;
@ -101,7 +100,7 @@ class SpecializedChecks {
classHierarchy.isInstantiated(element) &&
!interceptorData.isInterceptedClass(element) &&
outputUnitData.hasOnlyNonDeferredImportPathsToClass(
graph.element, element)) {
compiland, element)) {
assert(!dartType.isObject); // Checked above.
return IsTestSpecialization.instanceof;
}

View file

@ -2097,7 +2097,7 @@ class SsaInstructionSimplifier extends HBaseVisitor
IsTestSpecialization specialization =
SpecializedChecks.findIsTestSpecialization(
node.dartType, _graph, _closedWorld);
node.dartType, _graph.element, _closedWorld);
if (specialization == IsTestSpecialization.isNull ||
specialization == IsTestSpecialization.notNull) {