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

Side by Side Diff: pkg/compiler/lib/src/kernel/element_map.dart

Issue 2854013002: Make JavaScriptBackend.processAnnotations element-model agnostic (Closed)
Patch Set: Fix and check declaration invariant. Created 3 years, 7 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) 2017, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2017, 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 library dart2js.kernel.element_map; 5 library dart2js.kernel.element_map;
6 6
7 import 'package:kernel/ast.dart' as ir; 7 import 'package:kernel/ast.dart' as ir;
8 8
9 import '../common.dart'; 9 import '../common.dart';
10 import '../common/resolution.dart'; 10 import '../common/resolution.dart';
(...skipping 782 matching lines...) Expand 10 before | Expand all | Expand 10 after
793 _memberMap.values.forEach(f); 793 _memberMap.values.forEach(f);
794 for (ir.Member member in _setterMap.values) { 794 for (ir.Member member in _setterMap.values) {
795 if (member is ir.Procedure) { 795 if (member is ir.Procedure) {
796 f(member); 796 f(member);
797 } else { 797 } else {
798 // Skip fields; these are also in _memberMap. 798 // Skip fields; these are also in _memberMap.
799 } 799 }
800 } 800 }
801 } 801 }
802 802
803 Iterable<ConstantExpression> getMetadata(KernelToElementMap worldBuilder) { 803 Iterable<ConstantExpression> getMetadata(KernelToElementMap elementMap) {
804 if (_metadata == null) { 804 if (_metadata == null) {
805 _metadata = worldBuilder.getMetadata(cls.annotations); 805 _metadata = elementMap.getMetadata(cls.annotations);
806 } 806 }
807 return _metadata; 807 return _metadata;
808 } 808 }
809 } 809 }
810 810
811 class _MemberData { 811 class _MemberData {
812 final ir.Member node; 812 final ir.Member node;
813 Iterable<ConstantExpression> _metadata;
813 814
814 _MemberData(this.node); 815 _MemberData(this.node);
815 816
816 ResolutionImpact getWorldImpact(KernelToElementMap elementMap) { 817 ResolutionImpact getWorldImpact(KernelToElementMap elementMap) {
817 return buildKernelImpact(node, elementMap); 818 return buildKernelImpact(node, elementMap);
818 } 819 }
820
821 Iterable<ConstantExpression> getMetadata(KernelToElementMap elementMap) {
822 return _metadata ??= elementMap.getMetadata(node.annotations);
823 }
819 } 824 }
820 825
821 class _FunctionData extends _MemberData { 826 class _FunctionData extends _MemberData {
822 final ir.FunctionNode functionNode; 827 final ir.FunctionNode functionNode;
823 FunctionType _type; 828 FunctionType _type;
824 CallStructure _callStructure; 829 CallStructure _callStructure;
825 830
826 _FunctionData(ir.Member node, this.functionNode) : super(node); 831 _FunctionData(ir.Member node, this.functionNode) : super(node);
827 832
828 FunctionType getFunctionType(KernelToElementMap elementMap) { 833 FunctionType getFunctionType(KernelToElementMap elementMap) {
(...skipping 204 matching lines...) Expand 10 before | Expand all | Expand 10 after
1033 CallStructure getCallStructure(KFunction function) { 1038 CallStructure getCallStructure(KFunction function) {
1034 _FunctionData data = elementMap._memberList[function.memberIndex]; 1039 _FunctionData data = elementMap._memberList[function.memberIndex];
1035 return data.callStructure; 1040 return data.callStructure;
1036 } 1041 }
1037 1042
1038 @override 1043 @override
1039 bool isDeferredLoadLibraryGetter(KMember member) { 1044 bool isDeferredLoadLibraryGetter(KMember member) {
1040 // TODO(johnniwinther): Support these. 1045 // TODO(johnniwinther): Support these.
1041 return false; 1046 return false;
1042 } 1047 }
1048
1049 @override
1050 Iterable<ConstantValue> getMemberMetadata(KMember member) {
1051 List<ConstantValue> values = <ConstantValue>[];
1052 _MemberData memberData = elementMap._memberList[member.memberIndex];
1053 for (ConstantExpression constant in memberData.getMetadata(elementMap)) {
1054 values.add(elementMap.constantEnvironment.getConstantValue(constant));
1055 }
1056 return values;
1057 }
1043 } 1058 }
1044 1059
1045 /// Visitor that converts kernel dart types into [DartType]. 1060 /// Visitor that converts kernel dart types into [DartType].
1046 class DartTypeConverter extends ir.DartTypeVisitor<DartType> { 1061 class DartTypeConverter extends ir.DartTypeVisitor<DartType> {
1047 final KernelToElementMap elementAdapter; 1062 final KernelToElementMap elementAdapter;
1048 bool topLevel = true; 1063 bool topLevel = true;
1049 1064
1050 DartTypeConverter(this.elementAdapter); 1065 DartTypeConverter(this.elementAdapter);
1051 1066
1052 DartType convert(ir.DartType type) { 1067 DartType convert(ir.DartType type) {
(...skipping 225 matching lines...) Expand 10 before | Expand all | Expand 10 after
1278 } 1293 }
1279 1294
1280 InterfaceType getMixinTypeForClass(KClass cls) { 1295 InterfaceType getMixinTypeForClass(KClass cls) {
1281 _KClassEnv env = builder._classEnvs[cls.classIndex]; 1296 _KClassEnv env = builder._classEnvs[cls.classIndex];
1282 ir.Supertype mixedInType = env.cls.mixedInType; 1297 ir.Supertype mixedInType = env.cls.mixedInType;
1283 if (mixedInType == null) return null; 1298 if (mixedInType == null) return null;
1284 return builder.createInterfaceType( 1299 return builder.createInterfaceType(
1285 mixedInType.classNode, mixedInType.typeArguments); 1300 mixedInType.classNode, mixedInType.typeArguments);
1286 } 1301 }
1287 } 1302 }
OLDNEW
« no previous file with comments | « pkg/compiler/lib/src/js_backend/backend.dart ('k') | pkg/compiler/lib/src/resolution/resolution_strategy.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698