OLD | NEW |
---|---|
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.js_model.strategy; | 5 library dart2js.js_model.strategy; |
6 | 6 |
7 import '../closure.dart' show ClosureConversionTask; | 7 import '../closure.dart' show ClosureConversionTask; |
8 import '../common/tasks.dart'; | 8 import '../common/tasks.dart'; |
9 import '../common_elements.dart'; | 9 import '../common_elements.dart'; |
10 import '../compiler.dart'; | 10 import '../compiler.dart'; |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
57 KernelFrontEndStrategy strategy = _compiler.frontendStrategy; | 57 KernelFrontEndStrategy strategy = _compiler.frontendStrategy; |
58 KernelToElementMapForImpact elementMap = strategy.elementMap; | 58 KernelToElementMapForImpact elementMap = strategy.elementMap; |
59 _elementMap = new JsKernelToElementMap( | 59 _elementMap = new JsKernelToElementMap( |
60 _compiler.reporter, _compiler.environment, elementMap); | 60 _compiler.reporter, _compiler.environment, elementMap); |
61 _elementEnvironment = _elementMap.elementEnvironment; | 61 _elementEnvironment = _elementMap.elementEnvironment; |
62 _commonElements = _elementMap.commonElements; | 62 _commonElements = _elementMap.commonElements; |
63 JsToFrontendMap _map = _elementMap.jsToFrontendMap; | 63 JsToFrontendMap _map = _elementMap.jsToFrontendMap; |
64 BackendUsage backendUsage = | 64 BackendUsage backendUsage = |
65 new JsBackendUsage(_map, closedWorld.backendUsage); | 65 new JsBackendUsage(_map, closedWorld.backendUsage); |
66 NativeData nativeData = new JsNativeData(_map, closedWorld.nativeData); | 66 NativeData nativeData = new JsNativeData(_map, closedWorld.nativeData); |
67 InterceptorDataImpl interceptorDataImpl = closedWorld.interceptorData; | |
68 Map<String, Set<MemberEntity>> interceptedMembers = | |
69 <String, Set<MemberEntity>>{}; | |
70 interceptorDataImpl.interceptedMembers | |
71 .forEach((String name, Set<MemberEntity> members) { | |
72 interceptedMembers[name] = members.map(_map.toBackendMember).toSet(); | |
Siggi Cherem (dart-lang)
2017/07/05 21:25:52
since we have a few of these conversions here and
Johnni Winther
2017/07/06 14:53:40
Sometimes we convert members, sometimes classes. W
| |
73 }); | |
67 InterceptorData interceptorData = new InterceptorDataImpl( | 74 InterceptorData interceptorData = new InterceptorDataImpl( |
68 nativeData, | 75 nativeData, |
69 _commonElements, | 76 _commonElements, |
70 // TODO(johnniwinther): Convert these. | 77 interceptedMembers, |
71 const {}, | 78 interceptorDataImpl.interceptedClasses.map(_map.toBackendClass).toSet(), |
72 new Set(), | 79 interceptorDataImpl.classesMixedIntoInterceptedClasses |
73 new Set()); | 80 .map(_map.toBackendClass) |
81 .toSet()); | |
74 | 82 |
75 Map<ClassEntity, ClassHierarchyNode> classHierarchyNodes = | 83 Map<ClassEntity, ClassHierarchyNode> classHierarchyNodes = |
76 <ClassEntity, ClassHierarchyNode>{}; | 84 <ClassEntity, ClassHierarchyNode>{}; |
77 Map<ClassEntity, ClassSet> classSets = <ClassEntity, ClassSet>{}; | 85 Map<ClassEntity, ClassSet> classSets = <ClassEntity, ClassSet>{}; |
78 Set<ClassEntity> implementedClasses = new Set<ClassEntity>(); | 86 Set<ClassEntity> implementedClasses = new Set<ClassEntity>(); |
79 | 87 |
80 ClassHierarchyNode convertClassHierarchyNode(ClassHierarchyNode node) { | 88 ClassHierarchyNode convertClassHierarchyNode(ClassHierarchyNode node) { |
81 ClassEntity cls = _map.toBackendClass(node.cls); | 89 ClassEntity cls = _map.toBackendClass(node.cls); |
82 if (closedWorld.isImplemented(node.cls)) { | 90 if (closedWorld.isImplemented(node.cls)) { |
83 implementedClasses.add(cls); | 91 implementedClasses.add(cls); |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
116 List<MemberEntity> liveInstanceMembers = | 124 List<MemberEntity> liveInstanceMembers = |
117 closedWorld.liveInstanceMembers.map(_map.toBackendMember).toList(); | 125 closedWorld.liveInstanceMembers.map(_map.toBackendMember).toList(); |
118 | 126 |
119 Map<ClassEntity, Set<ClassEntity>> mixinUses = | 127 Map<ClassEntity, Set<ClassEntity>> mixinUses = |
120 <ClassEntity, Set<ClassEntity>>{}; | 128 <ClassEntity, Set<ClassEntity>>{}; |
121 closedWorld.mixinUses.forEach((ClassEntity cls, Set<ClassEntity> uses) { | 129 closedWorld.mixinUses.forEach((ClassEntity cls, Set<ClassEntity> uses) { |
122 mixinUses[_map.toBackendClass(cls)] = | 130 mixinUses[_map.toBackendClass(cls)] = |
123 uses.map(_map.toBackendClass).toSet(); | 131 uses.map(_map.toBackendClass).toSet(); |
124 }); | 132 }); |
125 | 133 |
134 Map<ClassEntity, Set<ClassEntity>> typesImplementedBySubclasses = | |
135 <ClassEntity, Set<ClassEntity>>{}; | |
136 closedWorld.typesImplementedBySubclasses | |
137 .forEach((ClassEntity cls, Set<ClassEntity> uses) { | |
138 typesImplementedBySubclasses[_map.toBackendClass(cls)] = | |
139 uses.map(_map.toBackendClass).toSet(); | |
140 }); | |
141 | |
126 Iterable<MemberEntity> assignedInstanceMembers = | 142 Iterable<MemberEntity> assignedInstanceMembers = |
127 closedWorld.assignedInstanceMembers.map(_map.toBackendMember).toList(); | 143 closedWorld.assignedInstanceMembers.map(_map.toBackendMember).toList(); |
128 | 144 |
129 return new JsClosedWorld(_elementMap, | 145 return new JsClosedWorld(_elementMap, |
130 elementEnvironment: _elementEnvironment, | 146 elementEnvironment: _elementEnvironment, |
131 dartTypes: _elementMap.types, | 147 dartTypes: _elementMap.types, |
132 commonElements: _commonElements, | 148 commonElements: _commonElements, |
133 constantSystem: const JavaScriptConstantSystem(), | 149 constantSystem: const JavaScriptConstantSystem(), |
134 backendUsage: backendUsage, | 150 backendUsage: backendUsage, |
135 nativeData: nativeData, | 151 nativeData: nativeData, |
136 interceptorData: interceptorData, | 152 interceptorData: interceptorData, |
137 classHierarchyNodes: classHierarchyNodes, | 153 classHierarchyNodes: classHierarchyNodes, |
138 classSets: classSets, | 154 classSets: classSets, |
139 implementedClasses: implementedClasses, | 155 implementedClasses: implementedClasses, |
140 liveInstanceMembers: liveInstanceMembers, | 156 liveInstanceMembers: liveInstanceMembers, |
141 assignedInstanceMembers: assignedInstanceMembers, | 157 assignedInstanceMembers: assignedInstanceMembers, |
142 // TODO(johnniwinther): Support these. | |
143 allTypedefs: new ImmutableEmptySet<TypedefElement>(), | |
144 mixinUses: mixinUses, | 158 mixinUses: mixinUses, |
145 typesImplementedBySubclasses: null); | 159 typesImplementedBySubclasses: typesImplementedBySubclasses, |
160 // TODO(johnniwinther): Support this: | |
161 allTypedefs: new ImmutableEmptySet<TypedefElement>()); | |
146 } | 162 } |
147 | 163 |
148 @override | 164 @override |
149 Sorter get sorter { | 165 Sorter get sorter { |
150 return _sorter ??= new KernelSorter(elementMap); | 166 return _sorter ??= new KernelSorter(elementMap); |
151 } | 167 } |
152 | 168 |
153 @override | 169 @override |
154 ClosureConversionTask get closureDataLookup => | 170 ClosureConversionTask get closureDataLookup => |
155 _closureDataLookup ??= new KernelClosureConversionTask( | 171 _closureDataLookup ??= new KernelClosureConversionTask( |
(...skipping 21 matching lines...) Expand all Loading... | |
177 ClosedWorld closedWorld, | 193 ClosedWorld closedWorld, |
178 SelectorConstraintsStrategy selectorConstraintsStrategy) { | 194 SelectorConstraintsStrategy selectorConstraintsStrategy) { |
179 return new KernelCodegenWorldBuilder( | 195 return new KernelCodegenWorldBuilder( |
180 elementMap, | 196 elementMap, |
181 closedWorld.elementEnvironment, | 197 closedWorld.elementEnvironment, |
182 nativeBasicData, | 198 nativeBasicData, |
183 closedWorld, | 199 closedWorld, |
184 selectorConstraintsStrategy); | 200 selectorConstraintsStrategy); |
185 } | 201 } |
186 } | 202 } |
OLD | NEW |