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 |