Chromium Code Reviews| OLD | NEW |
|---|---|
| 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 library dart2js.enqueue; | 5 library dart2js.enqueue; |
| 6 | 6 |
| 7 import 'dart:collection' show | 7 import 'dart:collection' show |
| 8 Queue; | 8 Queue; |
| 9 | 9 |
| 10 import 'common.dart'; | 10 import 'common.dart'; |
| (...skipping 164 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 175 } | 175 } |
| 176 worldImpact.onCatchTypes.forEach(registerIsCheck); | 176 worldImpact.onCatchTypes.forEach(registerIsCheck); |
| 177 worldImpact.closures.forEach(registerClosure); | 177 worldImpact.closures.forEach(registerClosure); |
| 178 } | 178 } |
| 179 | 179 |
| 180 void registerInstantiatedType(InterfaceType type, | 180 void registerInstantiatedType(InterfaceType type, |
| 181 {bool mirrorUsage: false}) { | 181 {bool mirrorUsage: false}) { |
| 182 task.measure(() { | 182 task.measure(() { |
| 183 ClassElement cls = type.element; | 183 ClassElement cls = type.element; |
| 184 cls.ensureResolved(resolution); | 184 cls.ensureResolved(resolution); |
| 185 bool isNative = compiler.backend.isNative(cls); | |
| 185 universe.registerTypeInstantiation( | 186 universe.registerTypeInstantiation( |
| 186 type, | 187 type, |
| 187 isNative: compiler.backend.isNative(cls), | 188 isNative: isNative, |
| 188 byMirrors: mirrorUsage, | 189 byMirrors: mirrorUsage, |
| 189 onImplemented: (ClassElement cls) { | 190 onImplemented: (ClassElement cls) { |
| 190 compiler.backend.registerImplementedClass( | 191 compiler.backend.registerImplementedClass( |
| 191 cls, this, compiler.globalDependencies); | 192 cls, this, compiler.globalDependencies); |
| 192 }); | 193 }); |
| 193 processInstantiatedClass(cls); | 194 if (!cls.isAbstract || isNative || mirrorUsage) { |
|
Johnni Winther
2015/11/03 13:20:02
Make a variable and use for universe.register...
Johnni Winther
2015/11/06 13:43:23
Done.
| |
| 195 processInstantiatedClass(cls); | |
| 196 } | |
| 194 }); | 197 }); |
| 195 } | 198 } |
| 196 | 199 |
| 197 bool checkNoEnqueuedInvokedInstanceMethods() { | 200 bool checkNoEnqueuedInvokedInstanceMethods() { |
| 198 return filter.checkNoEnqueuedInvokedInstanceMethods(this); | 201 return filter.checkNoEnqueuedInvokedInstanceMethods(this); |
| 199 } | 202 } |
| 200 | 203 |
| 201 void processInstantiatedClassMembers(ClassElement cls) { | 204 void processInstantiatedClassMembers(ClassElement cls) { |
| 202 strategy.processInstantiatedClass(this, cls); | 205 strategy.processInstantiatedClass(this, cls); |
| 203 } | 206 } |
| (...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 332 if (isResolutionQueue && !superclass.isSynthesized) { | 335 if (isResolutionQueue && !superclass.isSynthesized) { |
| 333 compiler.resolver.checkClass(superclass); | 336 compiler.resolver.checkClass(superclass); |
| 334 } | 337 } |
| 335 // We only tell the backend once that [superclass] was instantiated, so | 338 // We only tell the backend once that [superclass] was instantiated, so |
| 336 // any additional dependencies must be treated as global | 339 // any additional dependencies must be treated as global |
| 337 // dependencies. | 340 // dependencies. |
| 338 compiler.backend.registerInstantiatedClass( | 341 compiler.backend.registerInstantiatedClass( |
| 339 superclass, this, compiler.globalDependencies); | 342 superclass, this, compiler.globalDependencies); |
| 340 } | 343 } |
| 341 | 344 |
| 342 while (cls != null) { | 345 ClassElement superclass = cls; |
| 343 processClass(cls); | 346 while (superclass != null) { |
| 344 cls = cls.superclass; | 347 processClass(superclass); |
| 348 superclass = superclass.superclass; | |
| 345 } | 349 } |
| 346 }); | 350 }); |
| 347 } | 351 } |
| 348 | 352 |
| 349 void registerDynamicUse(DynamicUse dynamicUse) { | 353 void registerDynamicUse(DynamicUse dynamicUse) { |
| 350 task.measure(() { | 354 task.measure(() { |
| 351 if (universe.registerDynamicUse(dynamicUse)) { | 355 if (universe.registerDynamicUse(dynamicUse)) { |
| 352 handleUnseenSelector(dynamicUse); | 356 handleUnseenSelector(dynamicUse); |
| 353 } | 357 } |
| 354 }); | 358 }); |
| (...skipping 657 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1012 @override | 1016 @override |
| 1013 void processStaticUse(Enqueuer enqueuer, StaticUse staticUse) { | 1017 void processStaticUse(Enqueuer enqueuer, StaticUse staticUse) { |
| 1014 enqueuer.registerStaticUseInternal(staticUse); | 1018 enqueuer.registerStaticUseInternal(staticUse); |
| 1015 } | 1019 } |
| 1016 | 1020 |
| 1017 @override | 1021 @override |
| 1018 void processDynamicUse(Enqueuer enqueuer, DynamicUse dynamicUse) { | 1022 void processDynamicUse(Enqueuer enqueuer, DynamicUse dynamicUse) { |
| 1019 enqueuer.handleUnseenSelectorInternal(dynamicUse); | 1023 enqueuer.handleUnseenSelectorInternal(dynamicUse); |
| 1020 } | 1024 } |
| 1021 } | 1025 } |
| OLD | NEW |