| 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 |