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 BackendClasses, ForeignResolver; | 6 import '../common/backend_api.dart' show BackendClasses, ForeignResolver; |
7 import '../common/resolution.dart' show ParsingContext, Resolution; | 7 import '../common/resolution.dart' show ParsingContext, Resolution; |
8 import '../compiler.dart' show Compiler; | 8 import '../compiler.dart' show Compiler; |
9 import '../compile_time_constants.dart' show ConstantEnvironment; | 9 import '../compile_time_constants.dart' show ConstantEnvironment; |
10 import '../constants/expressions.dart'; | 10 import '../constants/expressions.dart'; |
(...skipping 750 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
761 // functions that never change. | 761 // functions that never change. |
762 behavior.sideEffects.setTo(new SideEffects.empty()); | 762 behavior.sideEffects.setTo(new SideEffects.empty()); |
763 behavior.throwBehavior = NativeThrowBehavior.NEVER; | 763 behavior.throwBehavior = NativeThrowBehavior.NEVER; |
764 _fillNativeBehaviorOfBuiltinOrEmbeddedGlobal( | 764 _fillNativeBehaviorOfBuiltinOrEmbeddedGlobal( |
765 behavior, spannable, specString, lookupType, reporter, commonElements, | 765 behavior, spannable, specString, lookupType, reporter, commonElements, |
766 validTags: ['returns', 'creates']); | 766 validTags: ['returns', 'creates']); |
767 return behavior; | 767 return behavior; |
768 } | 768 } |
769 | 769 |
770 static NativeBehavior ofMethodElement( | 770 static NativeBehavior ofMethodElement( |
771 MethodElement element, Compiler compiler) { | 771 MethodElement element, Compiler compiler, |
| 772 {bool isJsInterop}) { |
772 ResolutionFunctionType type = element.computeType(compiler.resolution); | 773 ResolutionFunctionType type = element.computeType(compiler.resolution); |
773 List<ConstantExpression> metadata = <ConstantExpression>[]; | 774 List<ConstantExpression> metadata = <ConstantExpression>[]; |
774 for (MetadataAnnotation annotation in element.implementation.metadata) { | 775 for (MetadataAnnotation annotation in element.implementation.metadata) { |
775 annotation.ensureResolved(compiler.resolution); | 776 annotation.ensureResolved(compiler.resolution); |
776 metadata.add(annotation.constant); | 777 metadata.add(annotation.constant); |
777 } | 778 } |
778 | 779 |
779 BehaviorBuilder builder = new ResolverBehaviorBuilder(compiler); | 780 BehaviorBuilder builder = new ResolverBehaviorBuilder(compiler); |
780 return builder.buildMethodBehavior( | 781 return builder.buildMethodBehavior( |
781 type, metadata, lookupFromElement(compiler.resolution, element), | 782 type, metadata, lookupFromElement(compiler.resolution, element), |
782 isJsInterop: compiler.backend.nativeData.isJsInterop(element)); | 783 isJsInterop: isJsInterop); |
783 } | 784 } |
784 | 785 |
785 static NativeBehavior ofFieldElementLoad( | 786 static NativeBehavior ofFieldElementLoad( |
786 MemberElement element, Compiler compiler) { | 787 MemberElement element, Compiler compiler, |
| 788 {bool isJsInterop}) { |
787 Resolution resolution = compiler.resolution; | 789 Resolution resolution = compiler.resolution; |
788 ResolutionDartType type = element.computeType(resolution); | 790 ResolutionDartType type = element.computeType(resolution); |
789 List<ConstantExpression> metadata = <ConstantExpression>[]; | 791 List<ConstantExpression> metadata = <ConstantExpression>[]; |
790 for (MetadataAnnotation annotation in element.implementation.metadata) { | 792 for (MetadataAnnotation annotation in element.implementation.metadata) { |
791 annotation.ensureResolved(compiler.resolution); | 793 annotation.ensureResolved(compiler.resolution); |
792 metadata.add(annotation.constant); | 794 metadata.add(annotation.constant); |
793 } | 795 } |
794 | 796 |
795 BehaviorBuilder builder = new ResolverBehaviorBuilder(compiler); | 797 BehaviorBuilder builder = new ResolverBehaviorBuilder(compiler); |
796 return builder.buildFieldLoadBehavior( | 798 return builder.buildFieldLoadBehavior( |
797 type, metadata, lookupFromElement(resolution, element), | 799 type, metadata, lookupFromElement(resolution, element), |
798 isJsInterop: compiler.backend.nativeData.isJsInterop(element)); | 800 isJsInterop: isJsInterop); |
799 } | 801 } |
800 | 802 |
801 static NativeBehavior ofFieldElementStore( | 803 static NativeBehavior ofFieldElementStore( |
802 MemberElement field, Compiler compiler) { | 804 MemberElement field, Compiler compiler) { |
803 BehaviorBuilder builder = new ResolverBehaviorBuilder(compiler); | 805 BehaviorBuilder builder = new ResolverBehaviorBuilder(compiler); |
804 ResolutionDartType type = field.computeType(compiler.resolution); | 806 ResolutionDartType type = field.computeType(compiler.resolution); |
805 return builder.buildFieldStoreBehavior(type); | 807 return builder.buildFieldStoreBehavior(type); |
806 } | 808 } |
807 | 809 |
808 static TypeLookup lookupFromElement(Resolution resolution, Element element) { | 810 static TypeLookup lookupFromElement(Resolution resolution, Element element) { |
(...skipping 248 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1057 JavaScriptBackend backend = compiler.backend; | 1059 JavaScriptBackend backend = compiler.backend; |
1058 return backend.helpers; | 1060 return backend.helpers; |
1059 } | 1061 } |
1060 | 1062 |
1061 @override | 1063 @override |
1062 BackendClasses get backendClasses => compiler.backend.backendClasses; | 1064 BackendClasses get backendClasses => compiler.backend.backendClasses; |
1063 | 1065 |
1064 @override | 1066 @override |
1065 Resolution get resolution => compiler.resolution; | 1067 Resolution get resolution => compiler.resolution; |
1066 } | 1068 } |
OLD | NEW |