Chromium Code Reviews| Index: lib/compiler/implementation/enqueue.dart |
| diff --git a/lib/compiler/implementation/enqueue.dart b/lib/compiler/implementation/enqueue.dart |
| index b2ff2a0985dfcb9c952f669c548a925e7eeb745a..61a93faf3bb5ecb24e78d66826535e0a1fb1c074 100644 |
| --- a/lib/compiler/implementation/enqueue.dart |
| +++ b/lib/compiler/implementation/enqueue.dart |
| @@ -9,8 +9,8 @@ class EnqueueTask extends CompilerTask { |
| String get name() => 'Enqueue'; |
| EnqueueTask(Compiler compiler) |
| - : codegen = new Enqueuer(compiler), |
| - resolution = new Enqueuer(compiler), |
| + : codegen = new Enqueuer(compiler, compiler.backend), |
| + resolution = new Enqueuer(compiler, compiler.backend), |
| super(compiler) { |
| codegen.task = this; |
| resolution.task = this; |
| @@ -18,18 +18,19 @@ class EnqueueTask extends CompilerTask { |
| } |
| class RecompilationQueue { |
| + final Backend backend; |
| final Queue<WorkItem> queue; |
| final Set<Element> queueElements; |
| int processed = 0; |
| - RecompilationQueue() |
| + RecompilationQueue(this.backend) |
| : queue = new Queue<WorkItem>(), |
| queueElements = new Set<Element>(); |
| void add(Element element, TreeElements elements) { |
| if (queueElements.contains(element)) return; |
| queueElements.add(element); |
| - queue.add(new WorkItem(element, elements)); |
| + queue.add(backend.createWorkItem(element, elements)); |
| } |
| int get length() => queue.length; |
| @@ -46,6 +47,7 @@ class RecompilationQueue { |
| class Enqueuer { |
| final Compiler compiler; // TODO(ahe): Remove this dependency. |
| + final Backend backend; |
| final Map<String, Link<Element>> instanceMembersByName; |
| final Set<ClassElement> seenClasses; |
| final Universe universe; |
| @@ -56,13 +58,14 @@ class Enqueuer { |
| bool queueIsClosed = false; |
| EnqueueTask task; |
| - Enqueuer(this.compiler) |
| - : instanceMembersByName = new Map<String, Link<Element>>(), |
| + Enqueuer(this.compiler, Backend backend) |
| + : this.backend = backend, |
| + instanceMembersByName = new Map<String, Link<Element>>(), |
| seenClasses = new Set<ClassElement>(), |
| universe = new Universe(), |
| queue = new Queue<WorkItem>(), |
| resolvedElements = new Map<Element, TreeElements>(), |
| - recompilationCandidates = new RecompilationQueue(); |
| + recompilationCandidates = new RecompilationQueue(backend); |
| bool get isResolutionQueue() => compiler.enqueuer.resolution === this; |
| @@ -85,7 +88,7 @@ class Enqueuer { |
| if (elements === null) { |
| elements = getCachedElements(element); |
| } |
| - queue.add(new WorkItem(element, elements)); |
| + queue.add(backend.createWorkItem(element, elements)); |
|
Lasse Reichstein Nielsen
2012/08/08 07:44:53
If you only use 'backend' for 'createWorkItem', ju
floitsch
2012/08/08 19:18:37
Done.
|
| } |
| bool canBeRecompiled(Element element) { |