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

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

Issue 2975433002: Assert that we don't mix K and J elements (Closed)
Patch Set: Updated cf. comments 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';
11 import '../elements/elements.dart' show TypedefElement; 11 import '../elements/elements.dart' show TypedefElement;
12 import '../elements/entities.dart'; 12 import '../elements/entities.dart';
13 import '../enqueue.dart'; 13 import '../enqueue.dart';
14 import '../io/source_information.dart'; 14 import '../io/source_information.dart';
15 import '../js_emitter/sorter.dart'; 15 import '../js_emitter/sorter.dart';
16 import '../js/js_source_mapping.dart'; 16 import '../js/js_source_mapping.dart';
17 import '../js_backend/backend.dart'; 17 import '../js_backend/backend.dart';
18 import '../js_backend/backend_usage.dart'; 18 import '../js_backend/backend_usage.dart';
19 import '../js_backend/constant_system_javascript.dart'; 19 import '../js_backend/constant_system_javascript.dart';
20 import '../js_backend/interceptor_data.dart'; 20 import '../js_backend/interceptor_data.dart';
21 import '../js_backend/native_data.dart'; 21 import '../js_backend/native_data.dart';
22 import '../js_backend/runtime_types.dart';
22 import '../kernel/element_map.dart'; 23 import '../kernel/element_map.dart';
23 import '../kernel/element_map_impl.dart'; 24 import '../kernel/element_map_impl.dart';
24 import '../kernel/kernel_backend_strategy.dart'; 25 import '../kernel/kernel_backend_strategy.dart';
25 import '../kernel/kernel_strategy.dart'; 26 import '../kernel/kernel_strategy.dart';
26 import '../ssa/ssa.dart'; 27 import '../ssa/ssa.dart';
27 import '../universe/class_set.dart'; 28 import '../universe/class_set.dart';
28 import '../universe/world_builder.dart'; 29 import '../universe/world_builder.dart';
29 import '../util/emptyset.dart'; 30 import '../util/emptyset.dart';
30 import '../world.dart'; 31 import '../world.dart';
31 import 'closure.dart'; 32 import 'closure.dart';
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after
135 <ClassEntity, Set<ClassEntity>>{}; 136 <ClassEntity, Set<ClassEntity>>{};
136 closedWorld.typesImplementedBySubclasses 137 closedWorld.typesImplementedBySubclasses
137 .forEach((ClassEntity cls, Set<ClassEntity> uses) { 138 .forEach((ClassEntity cls, Set<ClassEntity> uses) {
138 typesImplementedBySubclasses[_map.toBackendClass(cls)] = 139 typesImplementedBySubclasses[_map.toBackendClass(cls)] =
139 uses.map(_map.toBackendClass).toSet(); 140 uses.map(_map.toBackendClass).toSet();
140 }); 141 });
141 142
142 Iterable<MemberEntity> assignedInstanceMembers = 143 Iterable<MemberEntity> assignedInstanceMembers =
143 closedWorld.assignedInstanceMembers.map(_map.toBackendMember).toList(); 144 closedWorld.assignedInstanceMembers.map(_map.toBackendMember).toList();
144 145
146 Iterable<ClassEntity> liveNativeClasses =
147 closedWorld.liveNativeClasses.map(_map.toBackendClass).toList();
148
149 RuntimeTypesNeed rtiNeed =
150 new JsRuntimeTypesNeed(_map, closedWorld.rtiNeed);
151
145 return new JsClosedWorld(_elementMap, 152 return new JsClosedWorld(_elementMap,
146 elementEnvironment: _elementEnvironment, 153 elementEnvironment: _elementEnvironment,
147 dartTypes: _elementMap.types, 154 dartTypes: _elementMap.types,
148 commonElements: _commonElements, 155 commonElements: _commonElements,
149 constantSystem: const JavaScriptConstantSystem(), 156 constantSystem: const JavaScriptConstantSystem(),
150 backendUsage: backendUsage, 157 backendUsage: backendUsage,
151 nativeData: nativeData, 158 nativeData: nativeData,
152 interceptorData: interceptorData, 159 interceptorData: interceptorData,
160 rtiNeed: rtiNeed,
153 classHierarchyNodes: classHierarchyNodes, 161 classHierarchyNodes: classHierarchyNodes,
154 classSets: classSets, 162 classSets: classSets,
155 implementedClasses: implementedClasses, 163 implementedClasses: implementedClasses,
164 liveNativeClasses: liveNativeClasses,
156 liveInstanceMembers: liveInstanceMembers, 165 liveInstanceMembers: liveInstanceMembers,
157 assignedInstanceMembers: assignedInstanceMembers, 166 assignedInstanceMembers: assignedInstanceMembers,
158 mixinUses: mixinUses, 167 mixinUses: mixinUses,
159 typesImplementedBySubclasses: typesImplementedBySubclasses, 168 typesImplementedBySubclasses: typesImplementedBySubclasses,
160 // TODO(johnniwinther): Support this: 169 // TODO(johnniwinther): Support this:
161 allTypedefs: new ImmutableEmptySet<TypedefElement>()); 170 allTypedefs: new ImmutableEmptySet<TypedefElement>());
162 } 171 }
163 172
164 @override 173 @override
165 Sorter get sorter { 174 Sorter get sorter {
(...skipping 27 matching lines...) Expand all
193 ClosedWorld closedWorld, 202 ClosedWorld closedWorld,
194 SelectorConstraintsStrategy selectorConstraintsStrategy) { 203 SelectorConstraintsStrategy selectorConstraintsStrategy) {
195 return new KernelCodegenWorldBuilder( 204 return new KernelCodegenWorldBuilder(
196 elementMap, 205 elementMap,
197 closedWorld.elementEnvironment, 206 closedWorld.elementEnvironment,
198 nativeBasicData, 207 nativeBasicData,
199 closedWorld, 208 closedWorld,
200 selectorConstraintsStrategy); 209 selectorConstraintsStrategy);
201 } 210 }
202 } 211 }
212
213 class JsRuntimeTypesNeed implements RuntimeTypesNeed {
214 final JsToFrontendMap _map;
215 final RuntimeTypesNeed _rtiNeed;
216
217 JsRuntimeTypesNeed(this._map, this._rtiNeed);
218
219 @override
220 bool classNeedsRti(ClassEntity cls) {
221 return _rtiNeed.classNeedsRti(_map.toFrontendClass(cls));
222 }
223
224 @override
225 bool classUsesTypeVariableExpression(ClassEntity cls) {
226 return _rtiNeed.classUsesTypeVariableExpression(_map.toFrontendClass(cls));
227 }
228
229 @override
230 bool localFunctionNeedsRti(Local function) {
231 throw new UnimplementedError('JsRuntimeTypesNeed.localFunctionNeedsRti');
232 }
233
234 @override
235 bool methodNeedsRti(FunctionEntity function) {
236 return _rtiNeed.methodNeedsRti(_map.toFrontendMember(function));
237 }
238
239 @override
240 bool classNeedsRtiField(ClassEntity cls) {
241 return _rtiNeed.classNeedsRtiField(_map.toFrontendClass(cls));
242 }
243 }
OLDNEW
« no previous file with comments | « pkg/compiler/lib/src/js_model/elements.dart ('k') | pkg/compiler/lib/src/kernel/element_map_impl.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698