Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(187)

Side by Side Diff: pkg/compiler/lib/src/native/behavior.dart

Issue 2732793002: Add NativeDataResolver (Closed)
Patch Set: Cleanup. Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
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 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698