Index: pkg/fletchc/lib/src/fletch_enqueuer.dart |
diff --git a/pkg/fletchc/lib/src/fletch_enqueuer.dart b/pkg/fletchc/lib/src/fletch_enqueuer.dart |
index fc89d20d38c31488806df5a4269794e5a0e80914..76e65fcaaeba6614ef63add6d3b226b5d0db16e8 100644 |
--- a/pkg/fletchc/lib/src/fletch_enqueuer.dart |
+++ b/pkg/fletchc/lib/src/fletch_enqueuer.dart |
@@ -7,23 +7,33 @@ library fletchc.fletch_enqueuer; |
import 'dart:collection' show |
Queue; |
-import 'package:compiler/src/dart2jslib.dart' show |
+import 'package:compiler/src/common/tasks.dart' show |
+ CompilerTask; |
+ |
+import 'package:compiler/src/universe/world_impact.dart' show |
+ WorldImpact; |
+ |
+import 'package:compiler/src/types/types.dart' show |
+ TypeMaskStrategy; |
+ |
+import 'package:compiler/src/enqueue.dart' show |
+ ResolutionEnqueuer, |
CodegenEnqueuer, |
- Compiler, |
- CompilerTask, |
- EnqueueTask, |
- ItemCompilationContextCreator, |
+ TreeShakingEnqueuerStrategy; |
+ |
+import 'package:compiler/src/compiler.dart' show |
+ Compiler; |
+ |
+import 'package:compiler/src/enqueue.dart' show |
QueueFilter, |
- Registry, |
- ResolutionEnqueuer, |
- WorkItem, |
- WorldImpact; |
+ EnqueueTask, |
+ Enqueuer; |
+ |
+import 'package:compiler/src/universe/selector.dart' show |
+ Selector; |
import 'package:compiler/src/universe/universe.dart' show |
- CallStructure, |
- Selector, |
- Universe, |
- UniverseSelector; |
+ Universe; |
import 'package:compiler/src/dart_types.dart' show |
DartType, |
@@ -40,12 +50,11 @@ import 'package:compiler/src/elements/elements.dart' show |
Name, |
TypedElement; |
-import 'package:compiler/src/resolution/resolution.dart' show |
+import 'package:compiler/src/resolution/tree_elements.dart' show |
TreeElements; |
import 'package:compiler/src/util/util.dart' show |
- Hashing, |
- SpannableAssertionFailure; |
+ Hashing; |
import 'fletch_compiler_implementation.dart' show |
FletchCompilerImplementation; |
@@ -58,7 +67,19 @@ import 'dynamic_call_enqueuer.dart' show |
import 'fletch_registry.dart' show |
ClosureKind, |
FletchRegistry, |
- FletchRegistryImplementation; |
+ FletchRegistry; |
+ |
+import 'dart:developer'; |
ahe
2015/12/01 10:12:13
What is this used for?
sigurdm
2015/12/03 14:48:10
That was stary debugging code - removed
|
+import 'package:compiler/src/diagnostics/diagnostic_listener.dart'; |
ahe
2015/12/01 10:12:13
Please use show, here and on all imports below.
sigurdm
2015/12/03 14:48:10
Done.
|
+ |
+import 'package:compiler/src/universe/use.dart' show |
+ DynamicUse, |
+ StaticUse; |
+ |
+import 'package:compiler/src/universe/use.dart'; |
+import 'package:compiler/src/common/work.dart'; |
+import 'package:compiler/src/common/resolution.dart'; |
+import 'package:compiler/src/enqueue.dart'; |
part 'enqueuer_mixin.dart'; |
@@ -81,7 +102,9 @@ class FletchEnqueueTask extends CompilerTask implements EnqueueTask { |
FletchEnqueueTask(FletchCompilerImplementation compiler) |
: resolution = new ResolutionEnqueuer( |
- compiler, compiler.backend.createItemCompilationContext), |
+ compiler, compiler.backend.createItemCompilationContext, |
+ compiler.analyzeOnly && compiler.analyzeMain |
+ ? const EnqueuerStrategy() : const TreeShakingEnqueuerStrategy()), |
codegen = new FletchEnqueuer( |
compiler, compiler.backend.createItemCompilationContext), |
super(compiler) { |
@@ -118,7 +141,7 @@ class FletchEnqueuer extends EnqueuerMixin |
// TODO(ahe): Get rid of this? |
var nativeEnqueuer; |
- final Universe universe = new Universe(); |
+ final Universe universe = new Universe(const TypeMaskStrategy()); |
final Set<ElementUsage> _enqueuedUsages = new Set<ElementUsage>(); |
final Map<Element, List<ElementUsage>> _enqueuedUsagesByElement = |
@@ -157,14 +180,13 @@ class FletchEnqueuer extends EnqueuerMixin |
void registerInstantiatedType( |
InterfaceType type, |
- Registry registry, |
{bool mirrorUsage: false}) { |
dynamicCallEnqueuer.registerInstantiatedType(type); |
} |
// TODO(ahe): Remove this method. |
- void registerStaticUse(Element element) { |
- _enqueueElement(element, null, null); |
+ void registerStaticUse(StaticUse staticUse) { |
ahe
2015/12/01 10:12:13
Since I don't think we should be instantiating obj
sigurdm
2015/12/03 14:48:10
Done.
|
+ _enqueueElement(staticUse.element, null, null); |
} |
// TODO(ahe): Remove this method. |
@@ -185,8 +207,7 @@ class FletchEnqueuer extends EnqueuerMixin |
ElementUsage usage = _pendingEnqueuedUsages.removeFirst(); |
AstElement element = usage.element; |
TreeElements treeElements = element.resolvedAst.elements; |
- FletchRegistry registry = |
- new FletchRegistryImplementation(compiler, treeElements); |
+ FletchRegistry registry = new FletchRegistry(compiler); |
Selector selector = usage.selector; |
if (usage.closureKind != null) { |
compiler.context.backend.compileClosurizationUsage( |
@@ -220,22 +241,14 @@ class FletchEnqueuer extends EnqueuerMixin |
// TODO(ahe): Implement this. |
} |
- void registerDynamicInvocation(UniverseSelector selector) { |
- dynamicCallEnqueuer.enqueueSelector(selector); |
+ void registerDynamicUse(DynamicUse use) { |
ahe
2015/12/01 10:12:13
Ditto.
sigurdm
2015/12/03 14:48:10
Done.
|
+ dynamicCallEnqueuer.enqueueSelector(use); |
} |
void applyImpact(Element element, WorldImpact worldImpact) { |
assert(worldImpact == null); |
} |
- void registerDynamicGetter(UniverseSelector selector) { |
- dynamicCallEnqueuer.enqueueSelector(selector); |
- } |
- |
- void registerDynamicSetter(UniverseSelector selector) { |
- dynamicCallEnqueuer.enqueueSelector(selector); |
- } |
- |
void registerIsCheck(DartType type) { |
dynamicCallEnqueuer.enqueueTypeTest(type); |
} |