| OLD | NEW |
| 1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2015, 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.js_emitter.program_builder; | 5 part of dart2js.js_emitter.program_builder; |
| 6 | 6 |
| 7 /** | 7 /** |
| 8 * Generates the code for all used classes in the program. Static fields (even | 8 * Generates the code for all used classes in the program. Static fields (even |
| 9 * in classes) are ignored, since they can be treated as non-class elements. | 9 * in classes) are ignored, since they can be treated as non-class elements. |
| 10 * | 10 * |
| (...skipping 185 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 196 | 196 |
| 197 /// Compute all the classes and typedefs that must be emitted. | 197 /// Compute all the classes and typedefs that must be emitted. |
| 198 void computeNeededDeclarations() { | 198 void computeNeededDeclarations() { |
| 199 // Compute needed typedefs. | 199 // Compute needed typedefs. |
| 200 typedefsNeededForReflection = Elements.sortedByPosition(_closedWorld | 200 typedefsNeededForReflection = Elements.sortedByPosition(_closedWorld |
| 201 .allTypedefs | 201 .allTypedefs |
| 202 .where(_mirrorsData.isTypedefAccessibleByReflection) | 202 .where(_mirrorsData.isTypedefAccessibleByReflection) |
| 203 .toList()); | 203 .toList()); |
| 204 | 204 |
| 205 // Compute needed classes. | 205 // Compute needed classes. |
| 206 Set<ClassElement> instantiatedClasses = | 206 Set<ClassEntity> instantiatedClasses = |
| 207 // TODO(johnniwinther): This should be accessed from a codegen closed | 207 // TODO(johnniwinther): This should be accessed from a codegen closed |
| 208 // world. | 208 // world. |
| 209 _worldBuilder.directlyInstantiatedClasses | 209 _worldBuilder.directlyInstantiatedClasses |
| 210 .where(computeClassFilter()) | 210 .where(computeClassFilter()) |
| 211 .toSet(); | 211 .toSet(); |
| 212 | 212 |
| 213 void addClassWithSuperclasses(ClassElement cls) { | 213 void addClassWithSuperclasses(ClassElement cls) { |
| 214 neededClasses.add(cls); | 214 neededClasses.add(cls); |
| 215 for (ClassElement superclass = cls.superclass; | 215 for (ClassElement superclass = cls.superclass; |
| 216 superclass != null; | 216 superclass != null; |
| 217 superclass = superclass.superclass) { | 217 superclass = superclass.superclass) { |
| 218 neededClasses.add(superclass); | 218 neededClasses.add(superclass); |
| 219 } | 219 } |
| 220 } | 220 } |
| 221 | 221 |
| 222 void addClassesWithSuperclasses(Iterable<ClassElement> classes) { | 222 void addClassesWithSuperclasses(Iterable<ClassEntity> classes) { |
| 223 for (ClassElement cls in classes) { | 223 for (ClassElement cls in classes) { |
| 224 addClassWithSuperclasses(cls); | 224 addClassWithSuperclasses(cls); |
| 225 } | 225 } |
| 226 } | 226 } |
| 227 | 227 |
| 228 // 1. We need to generate all classes that are instantiated. | 228 // 1. We need to generate all classes that are instantiated. |
| 229 addClassesWithSuperclasses(instantiatedClasses); | 229 addClassesWithSuperclasses(instantiatedClasses); |
| 230 | 230 |
| 231 // 2. Add all classes used as mixins. | 231 // 2. Add all classes used as mixins. |
| 232 Set<ClassElement> mixinClasses = neededClasses | 232 Set<ClassElement> mixinClasses = neededClasses |
| (...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 355 } | 355 } |
| 356 | 356 |
| 357 void collect() { | 357 void collect() { |
| 358 computeNeededDeclarations(); | 358 computeNeededDeclarations(); |
| 359 computeNeededConstants(); | 359 computeNeededConstants(); |
| 360 computeNeededStatics(); | 360 computeNeededStatics(); |
| 361 computeNeededStaticNonFinalFields(); | 361 computeNeededStaticNonFinalFields(); |
| 362 computeNeededLibraries(); | 362 computeNeededLibraries(); |
| 363 } | 363 } |
| 364 } | 364 } |
| OLD | NEW |