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

Side by Side Diff: sdk/lib/_internal/compiler/implementation/enqueue.dart

Issue 11418173: Canonicalize raw type (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Updated cf. comments. Created 8 years 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, the Dart 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 file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 part of dart2js; 5 part of dart2js;
6 6
7 class EnqueueTask extends CompilerTask { 7 class EnqueueTask extends CompilerTask {
8 final Enqueuer codegen; 8 final Enqueuer codegen;
9 final Enqueuer resolution; 9 final Enqueuer resolution;
10 10
(...skipping 210 matching lines...) Expand 10 before | Expand all | Expand 10 after
221 } 221 }
222 } 222 }
223 } 223 }
224 224
225 void onRegisterInstantiatedClass(ClassElement cls) { 225 void onRegisterInstantiatedClass(ClassElement cls) {
226 task.measure(() { 226 task.measure(() {
227 // The class must be resolved to compute the set of all 227 // The class must be resolved to compute the set of all
228 // supertypes. 228 // supertypes.
229 cls.ensureResolved(compiler); 229 cls.ensureResolved(compiler);
230 230
231 for (Link<DartType> supertypes = cls.allSupertypesAndSelf; 231 void processClass(ClassElement cls) {
232 !supertypes.isEmpty; supertypes = supertypes.tail) { 232 if (seenClasses.contains(cls)) return;
233 cls = supertypes.head.element; 233
234 if (seenClasses.contains(cls)) continue;
235 seenClasses.add(cls); 234 seenClasses.add(cls);
236 cls.ensureResolved(compiler); 235 cls.ensureResolved(compiler);
237 cls.implementation.forEachMember(processInstantiatedClassMember); 236 cls.implementation.forEachMember(processInstantiatedClassMember);
238 if (isResolutionQueue) { 237 if (isResolutionQueue) {
239 compiler.resolver.checkMembers(cls); 238 compiler.resolver.checkMembers(cls);
240 } 239 }
241 240
242 if (compiler.enableTypeAssertions) { 241 if (compiler.enableTypeAssertions) {
243 // We need to register is checks and helpers for checking 242 // We need to register is checks and helpers for checking
244 // assignments to fields. 243 // assignments to fields.
245 // TODO(ngeoffray): This should really move to the backend. 244 // TODO(ngeoffray): This should really move to the backend.
246 cls.localMembers.forEach((Element member) { 245 cls.localMembers.forEach((Element member) {
247 if (!member.isInstanceMember() || !member.isField()) return; 246 if (!member.isInstanceMember() || !member.isField()) return;
248 DartType type = member.computeType(compiler); 247 DartType type = member.computeType(compiler);
249 registerIsCheck(type); 248 registerIsCheck(type);
250 SourceString helper = compiler.backend.getCheckedModeHelper(type); 249 SourceString helper = compiler.backend.getCheckedModeHelper(type);
251 if (helper != null) { 250 if (helper != null) {
252 Element helperElement = compiler.findHelper(helper); 251 Element helperElement = compiler.findHelper(helper);
253 registerStaticUse(helperElement); 252 registerStaticUse(helperElement);
254 } 253 }
255 }); 254 });
256 } 255 }
257 } 256 }
257 processClass(cls);
258 for (Link<DartType> supertypes = cls.allSupertypes;
259 !supertypes.isEmpty; supertypes = supertypes.tail) {
260 processClass(supertypes.head.element);
261 }
258 }); 262 });
259 } 263 }
260 264
261 void registerNewSelector(SourceString name, 265 void registerNewSelector(SourceString name,
262 Selector selector, 266 Selector selector,
263 Map<SourceString, Set<Selector>> selectorsMap) { 267 Map<SourceString, Set<Selector>> selectorsMap) {
264 if (name != selector.name) { 268 if (name != selector.name) {
265 String message = "$name != ${selector.name} (${selector.kind})"; 269 String message = "$name != ${selector.name} (${selector.kind})";
266 compiler.internalError("Wrong selector name: $message."); 270 compiler.internalError("Wrong selector name: $message.");
267 } 271 }
(...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after
398 402
399 String toString() => 'Enqueuer($name)'; 403 String toString() => 'Enqueuer($name)';
400 404
401 void logSummary(log(message)) { 405 void logSummary(log(message)) {
402 log(isResolutionQueue 406 log(isResolutionQueue
403 ? 'Resolved ${resolvedElements.length} elements.' 407 ? 'Resolved ${resolvedElements.length} elements.'
404 : 'Compiled ${universe.generatedCode.length} methods.'); 408 : 'Compiled ${universe.generatedCode.length} methods.');
405 nativeEnqueuer.logSummary(log); 409 nativeEnqueuer.logSummary(log);
406 } 410 }
407 } 411 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698