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

Unified Diff: sdk/lib/_internal/compiler/implementation/enqueue.dart

Issue 430913002: Better dependency tracking (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: fixed final critiques Created 6 years, 5 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
Index: sdk/lib/_internal/compiler/implementation/enqueue.dart
diff --git a/sdk/lib/_internal/compiler/implementation/enqueue.dart b/sdk/lib/_internal/compiler/implementation/enqueue.dart
index fbd3f93e7123b256b48275c0566ea473b5777726..68739c68277f4a3803c7a29127cdfda68392cd64 100644
--- a/sdk/lib/_internal/compiler/implementation/enqueue.dart
+++ b/sdk/lib/_internal/compiler/implementation/enqueue.dart
@@ -49,8 +49,6 @@ abstract class Enqueuer {
bool hasEnqueuedReflectiveElements = false;
bool hasEnqueuedReflectiveStaticFields = false;
- CompilationInformation get compilationInfo;
-
Enqueuer(this.name, this.compiler, this.itemCompilationContextCreator);
Queue<WorkItem> get queue;
@@ -71,9 +69,7 @@ abstract class Enqueuer {
*/
void addToWorkList(Element element) {
assert(invariant(element, element.isDeclaration));
- if (internalAddToWorkList(element)) {
- compilationInfo.addsToWorkList(compiler.currentElement, element);
- }
+ internalAddToWorkList(element);
}
/**
@@ -189,7 +185,6 @@ abstract class Enqueuer {
memberName, () => const Link<Element>());
instanceFunctionsByName[memberName] = members.prepend(member);
if (universe.hasInvocation(member, compiler)) {
- compilationInfo.enqueues(getContext(), member);
addToWorkList(member);
return;
}
@@ -221,8 +216,6 @@ abstract class Enqueuer {
void enableNoSuchMethod(Element element) {}
void enableIsolateSupport() {}
- Element getContext() => compiler.currentElement;
-
void onRegisterInstantiatedClass(ClassElement cls) {
task.measure(() {
if (seenClasses.contains(cls)) return;
@@ -254,33 +247,32 @@ abstract class Enqueuer {
});
}
- void registerNewSelector(Element context,
- Selector selector,
+ void registerNewSelector(Selector selector,
Map<String, Set<Selector>> selectorsMap) {
String name = selector.name;
Set<Selector> selectors =
selectorsMap.putIfAbsent(name, () => new Setlet<Selector>());
if (!selectors.contains(selector)) {
selectors.add(selector);
- handleUnseenSelector(context, name, selector);
+ handleUnseenSelector(name, selector);
}
}
- void registerInvocation(Element context, Selector selector) {
+ void registerInvocation(Selector selector) {
task.measure(() {
- registerNewSelector(context, selector, universe.invokedNames);
+ registerNewSelector(selector, universe.invokedNames);
});
}
- void registerInvokedGetter(Element context, Selector selector) {
+ void registerInvokedGetter(Selector selector) {
task.measure(() {
- registerNewSelector(context, selector, universe.invokedGetters);
+ registerNewSelector(selector, universe.invokedGetters);
});
}
- void registerInvokedSetter(Element context, Selector selector) {
+ void registerInvokedSetter(Selector selector) {
task.measure(() {
- registerNewSelector(context, selector, universe.invokedSetters);
+ registerNewSelector(selector, universe.invokedSetters);
});
}
@@ -333,11 +325,11 @@ abstract class Enqueuer {
// well.
// TODO(herhut): Use TypedSelector.subtype for enqueueing
Selector selector = new Selector.fromElement(element, compiler);
- registerSelectorUse(element, selector);
+ registerSelectorUse(selector);
if (element.isField) {
Selector selector =
new Selector.setter(element.name, element.library);
- registerInvokedSetter(element, selector);
+ registerInvokedSetter(selector);
}
}
}
@@ -474,11 +466,8 @@ abstract class Enqueuer {
processLink(instanceFunctionsByName, n, f);
}
- void handleUnseenSelector(Element context,
- String methodName,
- Selector selector) {
+ void handleUnseenSelector(String methodName, Selector selector) {
processInstanceMembers(methodName, (Element member) {
- compilationInfo.enqueues(context, member);
if (selector.appliesUnnamed(member, compiler)) {
if (member.isFunction && selector.isGetter) {
registerClosurizedMember(member, compiler.globalDependencies);
@@ -535,27 +524,27 @@ abstract class Enqueuer {
universe.staticFunctionsNeedingGetter.add(element);
}
- void registerDynamicInvocation(Element context, Selector selector) {
+ void registerDynamicInvocation(Selector selector) {
assert(selector != null);
- registerInvocation(context, selector);
+ registerInvocation(selector);
}
- void registerSelectorUse(Element context, Selector selector) {
+ void registerSelectorUse(Selector selector) {
if (selector.isGetter) {
- registerInvokedGetter(context, selector);
+ registerInvokedGetter(selector);
} else if (selector.isSetter) {
- registerInvokedSetter(context, selector);
+ registerInvokedSetter(selector);
} else {
- registerInvocation(context, selector);
+ registerInvocation(selector);
}
}
- void registerDynamicGetter(Element context, Selector selector) {
- registerInvokedGetter(context, selector);
+ void registerDynamicGetter(Selector selector) {
+ registerInvokedGetter(selector);
}
- void registerDynamicSetter(Element context, Selector selector) {
- registerInvokedSetter(context, selector);
+ void registerDynamicSetter(Selector selector) {
+ registerInvokedSetter(selector);
}
void registerGetterForSuperMethod(Element element) {
@@ -663,16 +652,12 @@ class ResolutionEnqueuer extends Enqueuer {
*/
final Queue<DeferredTask> deferredTaskQueue;
- CompilationInformation compilationInfo;
-
ResolutionEnqueuer(Compiler compiler,
ItemCompilationContext itemCompilationContextCreator())
: super('resolution enqueuer', compiler, itemCompilationContextCreator),
resolvedElements = new Set<AstElement>(),
queue = new Queue<ResolutionWorkItem>(),
- deferredTaskQueue = new Queue<DeferredTask>() {
- compilationInfo = new CompilationInformation(this, compiler.dumpInfo);
- }
+ deferredTaskQueue = new Queue<DeferredTask>();
bool get isResolutionQueue => true;
@@ -815,15 +800,11 @@ class CodegenEnqueuer extends Enqueuer {
final Set<Element> newlyEnqueuedElements;
- CompilationInformation compilationInfo;
-
CodegenEnqueuer(Compiler compiler,
ItemCompilationContext itemCompilationContextCreator())
: queue = new Queue<CodegenWorkItem>(),
newlyEnqueuedElements = compiler.cacheStrategy.newSet(),
- super('codegen enqueuer', compiler, itemCompilationContextCreator) {
- compilationInfo = new CompilationInformation(this, compiler.dumpInfo);
- }
+ super('codegen enqueuer', compiler, itemCompilationContextCreator);
bool isProcessed(Element member) =>
member.isAbstract || generatedCode.containsKey(member);

Powered by Google App Engine
This is Rietveld 408576698