Chromium Code Reviews| 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 |