mirror of
https://github.com/dart-lang/sdk
synced 2024-09-18 20:31:21 +00:00
[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:
parent
16796fbbe0
commit
053c25f7bc
|
@ -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';
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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';
|
||||
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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) {
|
||||
|
|
Loading…
Reference in a new issue