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

Unified Diff: pkg/compiler/lib/src/enqueue.dart

Issue 1385183002: Revert "Avoid eager enqueueing from resolution" (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Created 5 years, 2 months 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
« no previous file with comments | « pkg/compiler/lib/src/elements/modelx.dart ('k') | pkg/compiler/lib/src/inferrer/type_graph_inferrer.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/compiler/lib/src/enqueue.dart
diff --git a/pkg/compiler/lib/src/enqueue.dart b/pkg/compiler/lib/src/enqueue.dart
index 212218df4d94697e8b4708ccfcdcd1752f06d0d5..6d71d732d8992e8e5f5da11e092beae0165bd250 100644
--- a/pkg/compiler/lib/src/enqueue.dart
+++ b/pkg/compiler/lib/src/enqueue.dart
@@ -112,15 +112,9 @@ class WorldImpact {
// TODO(johnniwinther): Collect checked types for checked mode separately to
// support serialization.
- Iterable<DartType> get isChecks => const <DartType>[];
-
- Iterable<DartType> get checkedModeChecks => const <DartType>[];
-
- Iterable<DartType> get asCasts => const <DartType>[];
+ Iterable<DartType> get checkedTypes => const <DartType>[];
Iterable<MethodElement> get closurizedFunctions => const <MethodElement>[];
-
- Iterable<LocalFunctionElement> get closures => const <LocalFunctionElement>[];
}
abstract class Enqueuer {
@@ -167,10 +161,6 @@ abstract class Enqueuer {
/// Returns [:true:] if [member] has been processed by this enqueuer.
bool isProcessed(Element member);
- bool isClassProcessed(ClassElement cls) => _processedClasses.contains(cls);
-
- Iterable<ClassElement> get processedClasses => _processedClasses;
-
/**
* Documentation wanted -- johnniwinther
*
@@ -200,14 +190,10 @@ abstract class Enqueuer {
worldImpact.dynamicGetters.forEach(registerDynamicGetter);
worldImpact.dynamicSetters.forEach(registerDynamicSetter);
worldImpact.staticUses.forEach(registerStaticUse);
- worldImpact.instantiatedTypes.forEach(registerInstantiatedType);
- worldImpact.isChecks.forEach(registerIsCheck);
- worldImpact.asCasts.forEach(registerIsCheck);
- if (compiler.enableTypeAssertions) {
- worldImpact.checkedModeChecks.forEach(registerIsCheck);
- }
+ // TODO(johnniwinther): Register [worldImpact.instantiatedTypes] when it
+ // doesn't require a [Registry].
+ worldImpact.checkedTypes.forEach(registerIsCheck);
worldImpact.closurizedFunctions.forEach(registerGetOfStaticFunction);
- worldImpact.closures.forEach(registerClosure);
}
// TODO(johnniwinther): Remove the need for passing the [registry].
@@ -348,15 +334,6 @@ abstract class Enqueuer {
void processClass(ClassElement superclass) {
if (_processedClasses.contains(superclass)) return;
- // TODO(johnniwinther): Re-insert this invariant when unittests don't
- // fail. There is already a similar invariant on the members.
- /*if (!isResolutionQueue) {
- assert(invariant(superclass,
- superclass.isClosure ||
- compiler.enqueuer.resolution.isClassProcessed(superclass),
- message: "Class $superclass has not been "
- "processed in resolution."));
- }*/
_processedClasses.add(superclass);
recentClasses.add(superclass);
@@ -790,7 +767,7 @@ class ResolutionEnqueuer extends Enqueuer {
*
* Invariant: Key elements are declaration elements.
*/
- final Set<AstElement> processedElements;
+ final Set<AstElement> resolvedElements;
final Queue<ResolutionWorkItem> queue;
@@ -807,22 +784,22 @@ class ResolutionEnqueuer extends Enqueuer {
compiler,
itemCompilationContextCreator,
strategy),
- processedElements = new Set<AstElement>(),
+ resolvedElements = new Set<AstElement>(),
queue = new Queue<ResolutionWorkItem>(),
deferredTaskQueue = new Queue<DeferredTask>();
bool get isResolutionQueue => true;
- bool isProcessed(Element member) => processedElements.contains(member);
+ bool isProcessed(Element member) => resolvedElements.contains(member);
/// Returns `true` if [element] has been processed by the resolution enqueuer.
- bool hasBeenProcessed(Element element) {
- return processedElements.contains(element.analyzableElement.declaration);
+ bool hasBeenResolved(Element element) {
+ return resolvedElements.contains(element.analyzableElement.declaration);
}
- /// Registers [element] as processed by the resolution enqueuer.
- void registerProcessedElement(AstElement element) {
- processedElements.add(element);
+ /// Registers [element] as resolved for the resolution enqueuer.
+ void registerResolvedElement(AstElement element) {
+ resolvedElements.add(element);
}
/**
@@ -843,7 +820,7 @@ class ResolutionEnqueuer extends Enqueuer {
assert(invariant(element, element is AnalyzableElement,
message: 'Element $element is not analyzable.'));
- if (hasBeenProcessed(element)) return false;
+ if (hasBeenResolved(element)) return false;
if (queueIsClosed) {
throw new SpannableAssertionFailure(element,
"Resolution work list is closed. Trying to add $element.");
@@ -935,12 +912,12 @@ class ResolutionEnqueuer extends Enqueuer {
}
void _logSpecificSummary(log(message)) {
- log('Resolved ${processedElements.length} elements.');
+ log('Resolved ${resolvedElements.length} elements.');
}
void forgetElement(Element element) {
super.forgetElement(element);
- processedElements.remove(element);
+ resolvedElements.remove(element);
}
}
« no previous file with comments | « pkg/compiler/lib/src/elements/modelx.dart ('k') | pkg/compiler/lib/src/inferrer/type_graph_inferrer.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698