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

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

Issue 654903002: Remove ResolutionEnqueuer.isLive (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Add test. Created 6 years, 2 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 | 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 abstract class ClassWorld { 7 abstract class ClassWorld {
8 // TODO(johnniwinther): Refine this into a `BackendClasses` interface. 8 // TODO(johnniwinther): Refine this into a `BackendClasses` interface.
9 Backend get backend; 9 Backend get backend;
10 10
(...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after
141 if (x == objectClass) return false; 141 if (x == objectClass) return false;
142 while (x != null && x.hierarchyDepth >= y.hierarchyDepth) { 142 while (x != null && x.hierarchyDepth >= y.hierarchyDepth) {
143 if (x == y) return true; 143 if (x == y) return true;
144 x = x.superclass; 144 x = x.superclass;
145 } 145 }
146 return false; 146 return false;
147 } 147 }
148 148
149 /// Returns `true` if [cls] is instantiated. 149 /// Returns `true` if [cls] is instantiated.
150 bool isInstantiated(ClassElement cls) { 150 bool isInstantiated(ClassElement cls) {
151 return compiler.enqueuer.resolution.isLive(cls); 151 return compiler.resolverWorld.isInstantiated(cls);
152 } 152 }
153 153
154 /// Returns an iterable over the live classes that extend [cls] including 154 /// Returns an iterable over the live classes that extend [cls] including
155 /// [cls] itself. 155 /// [cls] itself.
156 Iterable<ClassElement> subclassesOf(ClassElement cls) { 156 Iterable<ClassElement> subclassesOf(ClassElement cls) {
157 Set<ClassElement> subclasses = _subclasses[cls.declaration]; 157 Set<ClassElement> subclasses = _subclasses[cls.declaration];
158 if (subclasses == null) return const <ClassElement>[]; 158 if (subclasses == null) return const <ClassElement>[];
159 assert(invariant(cls, isInstantiated(cls.declaration), 159 assert(invariant(cls, isInstantiated(cls.declaration),
160 message: 'Class $cls has not been instantiated.')); 160 message: 'Class $cls has not been instantiated.'));
161 return subclasses; 161 return subclasses;
(...skipping 216 matching lines...) Expand 10 before | Expand all | Expand 10 after
378 typesImplementedBySubclassesOfCls.add(current.element); 378 typesImplementedBySubclassesOfCls.add(current.element);
379 } 379 }
380 superclass = superclass.superclass; 380 superclass = superclass.superclass;
381 } 381 }
382 } 382 }
383 383
384 // Use the [:seenClasses:] set to include non-instantiated 384 // Use the [:seenClasses:] set to include non-instantiated
385 // classes: if the superclass of these classes require RTI, then 385 // classes: if the superclass of these classes require RTI, then
386 // they also need RTI, so that a constructor passes the type 386 // they also need RTI, so that a constructor passes the type
387 // variables to the super constructor. 387 // variables to the super constructor.
388 compiler.resolverWorld.allInstantiatedClasses.forEach(addSubtypes); 388 compiler.resolverWorld.directlyInstantiatedClasses.forEach(addSubtypes);
389 } 389 }
390 390
391 void registerMixinUse(MixinApplicationElement mixinApplication, 391 void registerMixinUse(MixinApplicationElement mixinApplication,
392 ClassElement mixin) { 392 ClassElement mixin) {
393 // TODO(johnniwinther): Add map restricted to live classes. 393 // TODO(johnniwinther): Add map restricted to live classes.
394 // We don't support patch classes as mixin. 394 // We don't support patch classes as mixin.
395 assert(mixin.isDeclaration); 395 assert(mixin.isDeclaration);
396 List<MixinApplicationElement> users = 396 List<MixinApplicationElement> users =
397 _mixinUses.putIfAbsent(mixin, () => 397 _mixinUses.putIfAbsent(mixin, () =>
398 new List<MixinApplicationElement>()); 398 new List<MixinApplicationElement>());
(...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after
516 // method of function classes that were generated for function 516 // method of function classes that were generated for function
517 // expressions. In such a case, we have to look at the original 517 // expressions. In such a case, we have to look at the original
518 // function expressions's element. 518 // function expressions's element.
519 // TODO(herhut): Generate classes for function expressions earlier. 519 // TODO(herhut): Generate classes for function expressions earlier.
520 if (element is closureMapping.SynthesizedCallMethodElementX) { 520 if (element is closureMapping.SynthesizedCallMethodElementX) {
521 return getMightBePassedToApply(element.expression); 521 return getMightBePassedToApply(element.expression);
522 } 522 }
523 return functionsThatMightBePassedToApply.contains(element); 523 return functionsThatMightBePassedToApply.contains(element);
524 } 524 }
525 } 525 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698