Index: pkg/compiler/lib/src/js_backend/enqueuer.dart |
diff --git a/pkg/compiler/lib/src/js_backend/enqueuer.dart b/pkg/compiler/lib/src/js_backend/enqueuer.dart |
index 7c0bd2a8f7c1b1dd26689e7f5fc89e14b8d668ba..c1695375a35340af46ac3e51f4ebc708aa16a51d 100644 |
--- a/pkg/compiler/lib/src/js_backend/enqueuer.dart |
+++ b/pkg/compiler/lib/src/js_backend/enqueuer.dart |
@@ -10,6 +10,7 @@ import '../common/backend_api.dart' show Backend; |
import '../common/codegen.dart' show CodegenWorkItem; |
import '../common/registry.dart' show Registry; |
import '../common/names.dart' show Identifiers; |
+import '../common/tasks.dart' show CompilerTask; |
import '../common/work.dart' show WorkItem; |
import '../common.dart'; |
import '../compiler.dart' show Compiler; |
@@ -39,7 +40,7 @@ import '../universe/world_builder.dart'; |
import '../universe/use.dart' |
show DynamicUse, StaticUse, StaticUseKind, TypeUse, TypeUseKind; |
import '../universe/world_impact.dart' |
- show ImpactUseCase, WorldImpact, WorldImpactVisitor; |
+ show ImpactUseCase, ImpactStrategy, WorldImpact, WorldImpactVisitor; |
import '../util/util.dart' show Setlet; |
import '../world.dart'; |
@@ -58,18 +59,17 @@ class CodegenEnqueuer implements Enqueuer { |
final CodegenWorldBuilderImpl _universe = |
new CodegenWorldBuilderImpl(const TypeMaskStrategy()); |
- |
bool queueIsClosed = false; |
- EnqueueTask task; |
- native.NativeEnqueuer nativeEnqueuer; // Set by EnqueueTask |
- |
+ final CompilerTask task; |
+ final native.NativeEnqueuer nativeEnqueuer; |
WorldImpactVisitor impactVisitor; |
- CodegenEnqueuer(Compiler compiler, this.strategy) |
+ CodegenEnqueuer(this.task, Compiler compiler, this.strategy) |
: queue = new Queue<CodegenWorkItem>(), |
newlyEnqueuedElements = compiler.cacheStrategy.newSet(), |
newlySeenSelectors = compiler.cacheStrategy.newSet(), |
+ nativeEnqueuer = compiler.backend.nativeCodegenEnqueuer(), |
this.name = 'codegen enqueuer', |
this._compiler = compiler { |
impactVisitor = new _EnqueuerImpactVisitor(this); |
@@ -119,17 +119,16 @@ class CodegenEnqueuer implements Enqueuer { |
element, "Codegen work list is closed. Trying to add $element"); |
} |
queue.add(new CodegenWorkItem(_compiler, element)); |
- if (options.dumpInfo) { |
- // TODO(sigmund): add other missing dependencies (internals, selectors |
- // enqueued after allocations), also enable only for the codegen enqueuer. |
- _compiler.dumpInfoTask |
- .registerDependency(_compiler.currentElement, element); |
- } |
+ // TODO(sigmund): add other missing dependencies (internals, selectors |
+ // enqueued after allocations). |
+ _compiler.dumpInfoTask |
+ .registerDependency(_compiler.currentElement, element); |
} |
- void applyImpact(WorldImpact worldImpact, {Element impactSource}) { |
- _compiler.impactStrategy |
- .visitImpact(impactSource, worldImpact, impactVisitor, impactUse); |
+ void applyImpact(ImpactStrategy impactStrategy, WorldImpact worldImpact, |
+ {Element impactSource}) { |
+ impactStrategy.visitImpact( |
+ impactSource, worldImpact, impactVisitor, impactUse); |
} |
void registerInstantiatedType(InterfaceType type) { |
@@ -419,7 +418,7 @@ class CodegenEnqueuer implements Enqueuer { |
} |
void _registerIsCheck(DartType type) { |
- type = _universe.registerIsCheck(type, _compiler); |
+ type = _universe.registerIsCheck(type, _compiler.resolution); |
// Even in checked mode, type annotations for return type and argument |
// types do not imply type checks, so there should never be a check |
// against the type variable of a typedef. |
@@ -502,7 +501,7 @@ class CodegenEnqueuer implements Enqueuer { |
log('Compiled ${generatedCode.length} methods.'); |
} |
- void forgetElement(Element element) { |
+ void forgetElement(Element element, Compiler compiler) { |
_forgetElement(element); |
generatedCode.remove(element); |
if (element is MemberElement) { |