| 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) {
|
|
|