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

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

Issue 2854013002: Make JavaScriptBackend.processAnnotations element-model agnostic (Closed)
Patch Set: 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 if (_metadata == null) {
823 _metadata = elementMap.getMetadata(node.annotations);
Siggi Cherem (dart-lang) 2017/05/02 20:04:22 nit: replace with ??=
Johnni Winther 2017/05/03 08:05:59 Done.
824 }
825 return _metadata;
826 }
819 } 827 }
820 828
821 class _FunctionData extends _MemberData { 829 class _FunctionData extends _MemberData {
822 final ir.FunctionNode functionNode; 830 final ir.FunctionNode functionNode;
823 FunctionType _type; 831 FunctionType _type;
824 CallStructure _callStructure; 832 CallStructure _callStructure;
825 833
826 _FunctionData(ir.Member node, this.functionNode) : super(node); 834 _FunctionData(ir.Member node, this.functionNode) : super(node);
827 835
828 FunctionType getFunctionType(KernelToElementMap elementMap) { 836 FunctionType getFunctionType(KernelToElementMap elementMap) {
(...skipping 204 matching lines...) Expand 10 before | Expand all | Expand 10 after
1033 CallStructure getCallStructure(KFunction function) { 1041 CallStructure getCallStructure(KFunction function) {
1034 _FunctionData data = elementMap._memberList[function.memberIndex]; 1042 _FunctionData data = elementMap._memberList[function.memberIndex];
1035 return data.callStructure; 1043 return data.callStructure;
1036 } 1044 }
1037 1045
1038 @override 1046 @override
1039 bool isDeferredLoadLibraryGetter(KMember member) { 1047 bool isDeferredLoadLibraryGetter(KMember member) {
1040 // TODO(johnniwinther): Support these. 1048 // TODO(johnniwinther): Support these.
1041 return false; 1049 return false;
1042 } 1050 }
1051
1052 @override
1053 Iterable<ConstantValue> getMemberMetadata(KMember member) {
1054 List<ConstantValue> values = <ConstantValue>[];
1055 _MemberData memberData = elementMap._memberList[member.memberIndex];
1056 for (ConstantExpression constant in memberData.getMetadata(elementMap)) {
1057 values.add(elementMap.constantEnvironment.getConstantValue(constant));
1058 }
1059 return values;
1060 }
1043 } 1061 }
1044 1062
1045 /// Visitor that converts kernel dart types into [DartType]. 1063 /// Visitor that converts kernel dart types into [DartType].
1046 class DartTypeConverter extends ir.DartTypeVisitor<DartType> { 1064 class DartTypeConverter extends ir.DartTypeVisitor<DartType> {
1047 final KernelToElementMap elementAdapter; 1065 final KernelToElementMap elementAdapter;
1048 bool topLevel = true; 1066 bool topLevel = true;
1049 1067
1050 DartTypeConverter(this.elementAdapter); 1068 DartTypeConverter(this.elementAdapter);
1051 1069
1052 DartType convert(ir.DartType type) { 1070 DartType convert(ir.DartType type) {
(...skipping 244 matching lines...) Expand 10 before | Expand all | Expand 10 after
1297 } 1315 }
1298 1316
1299 InterfaceType getMixinTypeForClass(KClass cls) { 1317 InterfaceType getMixinTypeForClass(KClass cls) {
1300 _KClassEnv env = builder._classEnvs[cls.classIndex]; 1318 _KClassEnv env = builder._classEnvs[cls.classIndex];
1301 ir.Supertype mixedInType = env.cls.mixedInType; 1319 ir.Supertype mixedInType = env.cls.mixedInType;
1302 if (mixedInType == null) return null; 1320 if (mixedInType == null) return null;
1303 return builder.createInterfaceType( 1321 return builder.createInterfaceType(
1304 mixedInType.classNode, mixedInType.typeArguments); 1322 mixedInType.classNode, mixedInType.typeArguments);
1305 } 1323 }
1306 } 1324 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698