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

Side by Side Diff: pkg/dartino_compiler/lib/src/dartino_enqueuer.dart

Issue 1659163007: Rename fletch -> dartino (Closed) Base URL: https://github.com/dartino/sdk.git@master
Patch Set: address comments Created 4 years, 10 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2015, the Dartino project authors. Please see the AUTHORS file 1 // Copyright (c) 2015, the Dartino project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE.md file. 3 // BSD-style license that can be found in the LICENSE.md file.
4 4
5 library fletchc.fletch_enqueuer; 5 library dartino_compiler.dartino_enqueuer;
6 6
7 import 'dart:collection' show 7 import 'dart:collection' show
8 Queue; 8 Queue;
9 9
10 import 'package:compiler/src/common/tasks.dart' show 10 import 'package:compiler/src/common/tasks.dart' show
11 CompilerTask; 11 CompilerTask;
12 12
13 import 'package:compiler/src/universe/world_impact.dart' show 13 import 'package:compiler/src/universe/world_impact.dart' show
14 WorldImpact; 14 WorldImpact;
15 15
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
49 LocalFunctionElement, 49 LocalFunctionElement,
50 Name, 50 Name,
51 TypedElement; 51 TypedElement;
52 52
53 import 'package:compiler/src/resolution/tree_elements.dart' show 53 import 'package:compiler/src/resolution/tree_elements.dart' show
54 TreeElements; 54 TreeElements;
55 55
56 import 'package:compiler/src/util/util.dart' show 56 import 'package:compiler/src/util/util.dart' show
57 Hashing; 57 Hashing;
58 58
59 import 'fletch_compiler_implementation.dart' show 59 import 'dartino_compiler_implementation.dart' show
60 FletchCompilerImplementation; 60 DartinoCompilerImplementation;
61 61
62 import 'dynamic_call_enqueuer.dart' show 62 import 'dynamic_call_enqueuer.dart' show
63 Closurization, 63 Closurization,
64 DynamicCallEnqueuer, 64 DynamicCallEnqueuer,
65 UsageRecorder; 65 UsageRecorder;
66 66
67 import 'fletch_registry.dart' show 67 import 'dartino_registry.dart' show
68 ClosureKind, 68 ClosureKind,
69 FletchRegistry, 69 DartinoRegistry,
70 FletchRegistry; 70 DartinoRegistry;
71 71
72 import 'dart:developer'; 72 import 'dart:developer';
73 import 'package:compiler/src/diagnostics/diagnostic_listener.dart'; 73 import 'package:compiler/src/diagnostics/diagnostic_listener.dart';
74 74
75 import 'package:compiler/src/universe/use.dart' show 75 import 'package:compiler/src/universe/use.dart' show
76 DynamicUse, 76 DynamicUse,
77 StaticUse; 77 StaticUse;
78 78
79 import 'package:compiler/src/universe/use.dart'; 79 import 'package:compiler/src/universe/use.dart';
80 import 'package:compiler/src/common/work.dart'; 80 import 'package:compiler/src/common/work.dart';
81 import 'package:compiler/src/common/resolution.dart'; 81 import 'package:compiler/src/common/resolution.dart';
82 import 'package:compiler/src/enqueue.dart'; 82 import 'package:compiler/src/enqueue.dart';
83 83
84 part 'enqueuer_mixin.dart'; 84 part 'enqueuer_mixin.dart';
85 85
86 /// True if enqueuing of system libraries should be reported in verbose mode. 86 /// True if enqueuing of system libraries should be reported in verbose mode.
87 const bool logSystemLibraries = 87 const bool logSystemLibraries =
88 const bool.fromEnvironment("fletchc.logSystemLibraries"); 88 const bool.fromEnvironment("dartino_compiler.logSystemLibraries");
89 89
90 /// Returns true if enqueuing of [element] should be reported in verbose 90 /// Returns true if enqueuing of [element] should be reported in verbose
91 /// mode. See [logSystemLibraries]. 91 /// mode. See [logSystemLibraries].
92 bool shouldReportEnqueuingOfElement(Compiler compiler, Element element) { 92 bool shouldReportEnqueuingOfElement(Compiler compiler, Element element) {
93 if (logSystemLibraries) return true; 93 if (logSystemLibraries) return true;
94 return compiler.inUserCode(element); 94 return compiler.inUserCode(element);
95 } 95 }
96 96
97 /// Custom enqueuer for Fletch. 97 /// Custom enqueuer for Dartino.
98 class FletchEnqueueTask extends CompilerTask implements EnqueueTask { 98 class DartinoEnqueueTask extends CompilerTask implements EnqueueTask {
99 final ResolutionEnqueuer resolution; 99 final ResolutionEnqueuer resolution;
100 100
101 final FletchEnqueuer codegen; 101 final DartinoEnqueuer codegen;
102 102
103 FletchEnqueueTask(FletchCompilerImplementation compiler) 103 DartinoEnqueueTask(DartinoCompilerImplementation compiler)
104 : resolution = new ResolutionEnqueuer( 104 : resolution = new ResolutionEnqueuer(
105 compiler, compiler.backend.createItemCompilationContext, 105 compiler, compiler.backend.createItemCompilationContext,
106 compiler.analyzeOnly && compiler.analyzeMain 106 compiler.analyzeOnly && compiler.analyzeMain
107 ? const EnqueuerStrategy() : const TreeShakingEnqueuerStrategy()), 107 ? const EnqueuerStrategy() : const TreeShakingEnqueuerStrategy()),
108 codegen = new FletchEnqueuer( 108 codegen = new DartinoEnqueuer(
109 compiler, compiler.backend.createItemCompilationContext), 109 compiler, compiler.backend.createItemCompilationContext),
110 super(compiler) { 110 super(compiler) {
111 codegen.task = this; 111 codegen.task = this;
112 resolution.task = this; 112 resolution.task = this;
113 codegen.nativeEnqueuer = compiler.backend.nativeCodegenEnqueuer(codegen); 113 codegen.nativeEnqueuer = compiler.backend.nativeCodegenEnqueuer(codegen);
114 114
115 resolution.nativeEnqueuer = 115 resolution.nativeEnqueuer =
116 compiler.backend.nativeResolutionEnqueuer(resolution); 116 compiler.backend.nativeResolutionEnqueuer(resolution);
117 } 117 }
118 118
119 String get name => 'Fletch enqueue'; 119 String get name => 'Dartino enqueue';
120 120
121 void forgetElement(Element element) { 121 void forgetElement(Element element) {
122 resolution.forgetElement(element); 122 resolution.forgetElement(element);
123 codegen.forgetElement(element); 123 codegen.forgetElement(element);
124 } 124 }
125 } 125 }
126 126
127 class FletchEnqueuer extends EnqueuerMixin 127 class DartinoEnqueuer extends EnqueuerMixin
128 implements CodegenEnqueuer, UsageRecorder { 128 implements CodegenEnqueuer, UsageRecorder {
129 final ItemCompilationContextCreator itemCompilationContextCreator; 129 final ItemCompilationContextCreator itemCompilationContextCreator;
130 130
131 final FletchCompilerImplementation compiler; 131 final DartinoCompilerImplementation compiler;
132 132
133 bool queueIsClosed = false; 133 bool queueIsClosed = false;
134 134
135 bool hasEnqueuedReflectiveElements = false; 135 bool hasEnqueuedReflectiveElements = false;
136 136
137 bool hasEnqueuedReflectiveStaticFields = false; 137 bool hasEnqueuedReflectiveStaticFields = false;
138 138
139 EnqueueTask task; 139 EnqueueTask task;
140 140
141 // TODO(ahe): Get rid of this? 141 // TODO(ahe): Get rid of this?
142 var nativeEnqueuer; 142 var nativeEnqueuer;
143 143
144 final Universe universe = new Universe(const TypeMaskStrategy()); 144 final Universe universe = new Universe(const TypeMaskStrategy());
145 145
146 final Set<ElementUsage> _enqueuedUsages = new Set<ElementUsage>(); 146 final Set<ElementUsage> _enqueuedUsages = new Set<ElementUsage>();
147 final Map<Element, List<ElementUsage>> _enqueuedUsagesByElement = 147 final Map<Element, List<ElementUsage>> _enqueuedUsagesByElement =
148 <Element, List<ElementUsage>>{}; 148 <Element, List<ElementUsage>>{};
149 149
150 final Queue<ElementUsage> _pendingEnqueuedUsages = 150 final Queue<ElementUsage> _pendingEnqueuedUsages =
151 new Queue<ElementUsage>(); 151 new Queue<ElementUsage>();
152 152
153 final Set<TypeTest> _typeTests = new Set<TypeTest>(); 153 final Set<TypeTest> _typeTests = new Set<TypeTest>();
154 154
155 final Queue<TypeTest> _pendingTypeTests = new Queue<TypeTest>(); 155 final Queue<TypeTest> _pendingTypeTests = new Queue<TypeTest>();
156 156
157 final DynamicCallEnqueuer dynamicCallEnqueuer; 157 final DynamicCallEnqueuer dynamicCallEnqueuer;
158 158
159 FletchEnqueuer( 159 DartinoEnqueuer(
160 FletchCompilerImplementation compiler, 160 DartinoCompilerImplementation compiler,
161 this.itemCompilationContextCreator) 161 this.itemCompilationContextCreator)
162 : compiler = compiler, 162 : compiler = compiler,
163 dynamicCallEnqueuer = new DynamicCallEnqueuer(compiler); 163 dynamicCallEnqueuer = new DynamicCallEnqueuer(compiler);
164 164
165 bool get queueIsEmpty { 165 bool get queueIsEmpty {
166 return _pendingEnqueuedUsages.isEmpty && _pendingTypeTests.isEmpty; 166 return _pendingEnqueuedUsages.isEmpty && _pendingTypeTests.isEmpty;
167 } 167 }
168 168
169 bool get isResolutionQueue => false; 169 bool get isResolutionQueue => false;
170 170
(...skipping 29 matching lines...) Expand all
200 } 200 }
201 201
202 void processQueue() { 202 void processQueue() {
203 do { 203 do {
204 do { 204 do {
205 while (!queueIsEmpty) { 205 while (!queueIsEmpty) {
206 if (!_pendingEnqueuedUsages.isEmpty) { 206 if (!_pendingEnqueuedUsages.isEmpty) {
207 ElementUsage usage = _pendingEnqueuedUsages.removeFirst(); 207 ElementUsage usage = _pendingEnqueuedUsages.removeFirst();
208 AstElement element = usage.element; 208 AstElement element = usage.element;
209 TreeElements treeElements = element.resolvedAst.elements; 209 TreeElements treeElements = element.resolvedAst.elements;
210 FletchRegistry registry = new FletchRegistry(compiler); 210 DartinoRegistry registry = new DartinoRegistry(compiler);
211 Selector selector = usage.selector; 211 Selector selector = usage.selector;
212 if (usage.closureKind != null) { 212 if (usage.closureKind != null) {
213 compiler.context.backend.compileClosurizationUsage( 213 compiler.context.backend.compileClosurizationUsage(
214 element, selector, treeElements, registry, usage.closureKind); 214 element, selector, treeElements, registry, usage.closureKind);
215 } else if (selector != null) { 215 } else if (selector != null) {
216 compiler.context.backend.compileElementUsage( 216 compiler.context.backend.compileElementUsage(
217 element, selector, treeElements, registry); 217 element, selector, treeElements, registry);
218 } else { 218 } else {
219 compiler.context.backend.compileElement( 219 compiler.context.backend.compileElement(
220 element, treeElements, registry); 220 element, treeElements, registry);
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after
331 331
332 TypeTest(ClassElement element, InterfaceType type) 332 TypeTest(ClassElement element, InterfaceType type)
333 : element = element, 333 : element = element,
334 type = type, 334 type = type,
335 hashCode = Hashing.mixHashCodeBits(element.hashCode, type.hashCode); 335 hashCode = Hashing.mixHashCodeBits(element.hashCode, type.hashCode);
336 336
337 bool operator ==(other) { 337 bool operator ==(other) {
338 return other is TypeTest && element == other.element && type == other.type; 338 return other is TypeTest && element == other.element && type == other.type;
339 } 339 }
340 } 340 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698