Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(83)

Unified Diff: pkg/compiler/lib/src/inferrer/type_graph_inferrer.dart

Issue 2559373004: Remove Compiler.inferenceWorld (Closed)
Patch Set: Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: pkg/compiler/lib/src/inferrer/type_graph_inferrer.dart
diff --git a/pkg/compiler/lib/src/inferrer/type_graph_inferrer.dart b/pkg/compiler/lib/src/inferrer/type_graph_inferrer.dart
index 1d7f7d815c5b114b2bc5fc8f2c0478c453343924..1ac65fc957e85328b52efeb128c5be8b8b8cdb74 100644
--- a/pkg/compiler/lib/src/inferrer/type_graph_inferrer.dart
+++ b/pkg/compiler/lib/src/inferrer/type_graph_inferrer.dart
@@ -25,7 +25,7 @@ import '../universe/call_structure.dart' show CallStructure;
import '../universe/selector.dart' show Selector;
import '../universe/side_effects.dart' show SideEffects;
import '../util/util.dart' show Setlet;
-import '../world.dart' show ClosedWorld;
+import '../world.dart' show ClosedWorld, ClosedWorldRefiner;
import 'closure_tracer.dart';
import 'debug.dart' as debug;
import 'inferrer_visitor.dart' show ArgumentsTypes, TypeSystem;
@@ -36,9 +36,7 @@ import 'type_graph_dump.dart';
import 'type_graph_nodes.dart';
class TypeInformationSystem extends TypeSystem<TypeInformation> {
- final Compiler compiler;
final ClosedWorld closedWorld;
- final CommonMasks commonMasks;
/// [ElementTypeInformation]s for elements.
final Map<Element, TypeInformation> typeInformations =
@@ -72,12 +70,12 @@ class TypeInformationSystem extends TypeSystem<TypeInformation> {
allocatedTypes
].expand((x) => x);
- TypeInformationSystem(Compiler compiler, this.commonMasks)
- : this.compiler = compiler,
- this.closedWorld = compiler.closedWorld {
- nonNullEmptyType = getConcreteTypeFor(const TypeMask.nonNullEmpty());
+ TypeInformationSystem(this.closedWorld) {
+ nonNullEmptyType = getConcreteTypeFor(commonMasks.emptyType);
}
+ CommonMasks get commonMasks => closedWorld.commonMasks;
+
/// Used to group [TypeInformation] nodes by the element that triggered their
/// creation.
MemberTypeInformation _currentMember = null;
@@ -365,7 +363,7 @@ class TypeInformationSystem extends TypeSystem<TypeInformation> {
TypeInformation allocateList(
TypeInformation type, ast.Node node, Element enclosing,
[TypeInformation elementType, int length]) {
- ClassElement typedDataClass = compiler.commonElements.typedDataClass;
+ ClassElement typedDataClass = closedWorld.commonElements.typedDataClass;
bool isTypedArray = typedDataClass != null &&
closedWorld.isInstantiated(typedDataClass) &&
type.type.satisfies(typedDataClass, closedWorld);
@@ -569,7 +567,6 @@ class TypeGraphInferrerEngine
<CallSiteTypeInformation>[];
final WorkQueue workQueue = new WorkQueue();
final Element mainElement;
- final CommonMasks commonMasks;
final Set<Element> analyzedElements = new Set<Element>();
/// The maximum number of times we allow a node in the graph to
@@ -580,14 +577,15 @@ class TypeGraphInferrerEngine
int overallRefineCount = 0;
int addedInGraph = 0;
- TypeGraphInferrerEngine(
- Compiler compiler, CommonMasks commonMasks, this.mainElement)
- : commonMasks = commonMasks,
- super(compiler, new TypeInformationSystem(compiler, commonMasks));
+ TypeGraphInferrerEngine(Compiler compiler, ClosedWorld closedWorld,
+ ClosedWorldRefiner closedWorldRefiner, this.mainElement)
+ : super(compiler, closedWorld, closedWorldRefiner,
+ new TypeInformationSystem(closedWorld));
JavaScriptBackend get backend => compiler.backend;
Annotations get annotations => backend.annotations;
DiagnosticReporter get reporter => compiler.reporter;
+ CommonMasks get commonMasks => closedWorld.commonMasks;
/**
* A set of selector names that [List] implements, that we know return
@@ -703,7 +701,7 @@ class TypeGraphInferrerEngine
tracer.run();
if (!tracer.continueAnalyzing) {
elements.forEach((FunctionElement e) {
- compiler.inferenceWorld.registerMightBePassedToApply(e);
+ closedWorldRefiner.registerMightBePassedToApply(e);
if (debug.VERBOSE) print("traced closure $e as ${true} (bail)");
e.functionSignature.forEachParameter((parameter) {
types
@@ -723,11 +721,11 @@ class TypeGraphInferrerEngine
workQueue.add(info);
});
if (tracer.tracedType.mightBePassedToFunctionApply) {
- compiler.inferenceWorld.registerMightBePassedToApply(e);
+ closedWorldRefiner.registerMightBePassedToApply(e);
}
if (debug.VERBOSE) {
print("traced closure $e as "
- "${compiler.inferenceWorld
+ "${closedWorldRefiner
.getCurrentlyKnownMightBePassedToApply(e)}");
}
});
@@ -914,13 +912,13 @@ class TypeGraphInferrerEngine
allocatedCalls.forEach((info) {
if (!info.inLoop) return;
if (info is StaticCallSiteTypeInformation) {
- compiler.inferenceWorld.addFunctionCalledInLoop(info.calledElement);
+ closedWorldRefiner.addFunctionCalledInLoop(info.calledElement);
} else if (info.mask != null && !info.mask.containsAll(closedWorld)) {
// For instance methods, we only register a selector called in a
// loop if it is a typed selector, to avoid marking too many
// methods as being called from within a loop. This cuts down
// on the code bloat.
- info.targets.forEach(compiler.inferenceWorld.addFunctionCalledInLoop);
+ info.targets.forEach(closedWorldRefiner.addFunctionCalledInLoop);
}
});
}
@@ -1354,14 +1352,20 @@ class TypeGraphInferrerEngine
class TypeGraphInferrer implements TypesInferrer {
TypeGraphInferrerEngine inferrer;
final Compiler compiler;
- final CommonMasks commonMasks;
- TypeGraphInferrer(this.compiler, this.commonMasks);
+ final ClosedWorld closedWorld;
+ final ClosedWorldRefiner closedWorldRefiner;
+
+ TypeGraphInferrer(this.compiler, this.closedWorld, this.closedWorldRefiner);
String get name => 'Graph inferrer';
+
+ CommonMasks get commonMasks => closedWorld.commonMasks;
+
TypeMask get _dynamicType => commonMasks.dynamicType;
void analyzeMain(Element main) {
- inferrer = new TypeGraphInferrerEngine(compiler, commonMasks, main);
+ inferrer = new TypeGraphInferrerEngine(
+ compiler, closedWorld, closedWorldRefiner, main);
inferrer.runOverAllElements();
}
« no previous file with comments | « pkg/compiler/lib/src/inferrer/simple_types_inferrer.dart ('k') | pkg/compiler/lib/src/inferrer/type_graph_nodes.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698