| OLD | NEW |
| 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2014, 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 import '../common.dart'; | 5 import '../common.dart'; |
| 6 import '../common/backend_api.dart' show ForeignResolver; | 6 import '../common/backend_api.dart' show ForeignResolver; |
| 7 import '../common/resolution.dart' show Resolution; | 7 import '../common/resolution.dart' show Resolution; |
| 8 import '../compiler.dart' show Compiler; | 8 import '../compiler.dart' show Compiler; |
| 9 import '../constants/values.dart'; | 9 import '../constants/values.dart'; |
| 10 import '../common_elements.dart' show CommonElements; | 10 import '../common_elements.dart' show CommonElements; |
| (...skipping 540 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 551 return NativeBehavior.ofJsBuiltinCallSend( | 551 return NativeBehavior.ofJsBuiltinCallSend( |
| 552 node, reporter, compiler.commonElements, resolver); | 552 node, reporter, compiler.commonElements, resolver); |
| 553 } | 553 } |
| 554 } | 554 } |
| 555 | 555 |
| 556 class NativeCodegenEnqueuer extends NativeEnqueuerBase { | 556 class NativeCodegenEnqueuer extends NativeEnqueuerBase { |
| 557 final CodeEmitterTask emitter; | 557 final CodeEmitterTask emitter; |
| 558 | 558 |
| 559 final Set<ClassElement> doneAddSubtypes = new Set<ClassElement>(); | 559 final Set<ClassElement> doneAddSubtypes = new Set<ClassElement>(); |
| 560 | 560 |
| 561 NativeCodegenEnqueuer(Compiler compiler, this.emitter) | 561 final NativeResolutionEnqueuer _resolutionEnqueuer; |
| 562 |
| 563 NativeCodegenEnqueuer( |
| 564 Compiler compiler, this.emitter, this._resolutionEnqueuer) |
| 562 : super(compiler, compiler.options.enableNativeLiveTypeAnalysis); | 565 : super(compiler, compiler.options.enableNativeLiveTypeAnalysis); |
| 563 | 566 |
| 564 void _processNativeClasses( | 567 void _processNativeClasses( |
| 565 WorldImpactBuilder impactBuilder, Iterable<LibraryElement> libraries) { | 568 WorldImpactBuilder impactBuilder, Iterable<LibraryElement> libraries) { |
| 566 super._processNativeClasses(impactBuilder, libraries); | 569 super._processNativeClasses(impactBuilder, libraries); |
| 567 | 570 |
| 568 // HACK HACK - add all the resolved classes. | 571 // HACK HACK - add all the resolved classes. |
| 569 NativeEnqueuerBase enqueuer = compiler.enqueuer.resolution.nativeEnqueuer; | |
| 570 Set<ClassElement> matchingClasses = new Set<ClassElement>(); | 572 Set<ClassElement> matchingClasses = new Set<ClassElement>(); |
| 571 for (final classElement in enqueuer._registeredClasses) { | 573 for (final classElement in _resolutionEnqueuer._registeredClasses) { |
| 572 if (_unusedClasses.contains(classElement)) { | 574 if (_unusedClasses.contains(classElement)) { |
| 573 matchingClasses.add(classElement); | 575 matchingClasses.add(classElement); |
| 574 } | 576 } |
| 575 } | 577 } |
| 576 if (matchingClasses.isNotEmpty && _registeredClasses.isEmpty) { | 578 if (matchingClasses.isNotEmpty && _registeredClasses.isEmpty) { |
| 577 matchingClasses.addAll(_onFirstNativeClass(impactBuilder)); | 579 matchingClasses.addAll(_onFirstNativeClass(impactBuilder)); |
| 578 } | 580 } |
| 579 _registerTypeUses(impactBuilder, matchingClasses, 'was resolved'); | 581 _registerTypeUses(impactBuilder, matchingClasses, 'was resolved'); |
| 580 } | 582 } |
| 581 | 583 |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 617 List<ClassEntity> directSubtypes = | 619 List<ClassEntity> directSubtypes = |
| 618 emitter.directSubtypes.putIfAbsent(superclass, () => <ClassEntity>[]); | 620 emitter.directSubtypes.putIfAbsent(superclass, () => <ClassEntity>[]); |
| 619 directSubtypes.add(cls); | 621 directSubtypes.add(cls); |
| 620 } | 622 } |
| 621 | 623 |
| 622 void logSummary(log(message)) { | 624 void logSummary(log(message)) { |
| 623 log('Compiled ${_registeredClasses.length} native classes, ' | 625 log('Compiled ${_registeredClasses.length} native classes, ' |
| 624 '${_unusedClasses.length} native classes omitted.'); | 626 '${_unusedClasses.length} native classes omitted.'); |
| 625 } | 627 } |
| 626 } | 628 } |
| OLD | NEW |