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

Side by Side Diff: pkg/compiler/lib/src/js_model/js_strategy.dart

Issue 2969073002: Add most equivalence tests to js_model/model_test (Closed)
Patch Set: Created 3 years, 5 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.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
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
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
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 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698