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 part of native; | 5 part of native; |
6 | 6 |
7 /** | 7 /** |
8 * This could be an abstract class but we use it as a stub for the dart_backend. | 8 * This could be an abstract class but we use it as a stub for the dart_backend. |
9 */ | 9 */ |
10 class NativeEnqueuer { | 10 class NativeEnqueuer { |
(...skipping 590 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
601 class NativeResolutionEnqueuer extends NativeEnqueuerBase { | 601 class NativeResolutionEnqueuer extends NativeEnqueuerBase { |
602 | 602 |
603 Map<String, ClassElement> tagOwner = new Map<String, ClassElement>(); | 603 Map<String, ClassElement> tagOwner = new Map<String, ClassElement>(); |
604 | 604 |
605 NativeResolutionEnqueuer(Enqueuer world, Compiler compiler) | 605 NativeResolutionEnqueuer(Enqueuer world, Compiler compiler) |
606 : super(world, compiler, compiler.enableNativeLiveTypeAnalysis); | 606 : super(world, compiler, compiler.enableNativeLiveTypeAnalysis); |
607 | 607 |
608 void processNativeClass(ClassElement classElement) { | 608 void processNativeClass(ClassElement classElement) { |
609 super.processNativeClass(classElement); | 609 super.processNativeClass(classElement); |
610 | 610 |
| 611 // Js Interop interfaces do not have tags. |
| 612 if (classElement.isJsInterop) return; |
611 // Since we map from dispatch tags to classes, a dispatch tag must be used | 613 // Since we map from dispatch tags to classes, a dispatch tag must be used |
612 // on only one native class. | 614 // on only one native class. |
613 for (String tag in nativeTagsOfClass(classElement)) { | 615 for (String tag in nativeTagsOfClass(classElement)) { |
614 ClassElement owner = tagOwner[tag]; | 616 ClassElement owner = tagOwner[tag]; |
615 if (owner != null) { | 617 if (owner != null) { |
616 if (owner != classElement) { | 618 if (owner != classElement) { |
617 compiler.internalError( | 619 compiler.internalError( |
618 classElement, "Tag '$tag' already in use by '${owner.name}'"); | 620 classElement, "Tag '$tag' already in use by '${owner.name}'"); |
619 } | 621 } |
620 } else { | 622 } else { |
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
688 superclass, | 690 superclass, |
689 () => <ClassElement>[]); | 691 () => <ClassElement>[]); |
690 directSubtypes.add(cls); | 692 directSubtypes.add(cls); |
691 } | 693 } |
692 | 694 |
693 void logSummary(log(message)) { | 695 void logSummary(log(message)) { |
694 log('Compiled ${registeredClasses.length} native classes, ' | 696 log('Compiled ${registeredClasses.length} native classes, ' |
695 '${unusedClasses.length} native classes omitted.'); | 697 '${unusedClasses.length} native classes omitted.'); |
696 } | 698 } |
697 } | 699 } |
OLD | NEW |