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

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

Issue 3002313002: Use KernelTypeGraphBuilder in KernelInferrerEngine (Closed)
Patch Set: Updated cf. comments. Created 3 years, 3 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 'package:kernel/ast.dart' as ir; 7 import 'package:kernel/ast.dart' as ir;
8 8
9 import '../closure.dart' show ClosureConversionTask; 9 import '../closure.dart' show ClosureConversionTask;
10 import '../common.dart'; 10 import '../common.dart';
(...skipping 27 matching lines...) Expand all
38 import '../world.dart'; 38 import '../world.dart';
39 import 'closure.dart'; 39 import 'closure.dart';
40 import 'elements.dart'; 40 import 'elements.dart';
41 import 'locals.dart'; 41 import 'locals.dart';
42 42
43 class JsBackendStrategy implements KernelBackendStrategy { 43 class JsBackendStrategy implements KernelBackendStrategy {
44 final Compiler _compiler; 44 final Compiler _compiler;
45 ElementEnvironment _elementEnvironment; 45 ElementEnvironment _elementEnvironment;
46 CommonElements _commonElements; 46 CommonElements _commonElements;
47 JsKernelToElementMap _elementMap; 47 JsKernelToElementMap _elementMap;
48 ClosureConversionTask _closureDataLookup; 48 KernelClosureConversionTask _closureDataLookup;
49 final GlobalLocalsMap _globalLocalsMap = new GlobalLocalsMap(); 49 final GlobalLocalsMap _globalLocalsMap = new GlobalLocalsMap();
50 Sorter _sorter; 50 Sorter _sorter;
51 51
52 JsBackendStrategy(this._compiler); 52 JsBackendStrategy(this._compiler);
53 53
54 KernelToElementMapForBuilding get elementMap { 54 KernelToElementMapForBuilding get elementMap {
55 assert(_elementMap != null, 55 assert(_elementMap != null,
56 "JsBackendStrategy.elementMap has not been created yet."); 56 "JsBackendStrategy.elementMap has not been created yet.");
57 return _elementMap; 57 return _elementMap;
58 } 58 }
(...skipping 226 matching lines...) Expand 10 before | Expand all | Expand 10 after
285 Map<ClassEntity, Set<ClassEntity>> typesImplementedBySubclasses = 285 Map<ClassEntity, Set<ClassEntity>> typesImplementedBySubclasses =
286 map.toBackendClassMap( 286 map.toBackendClassMap(
287 closedWorld.typesImplementedBySubclasses, map.toBackendClassSet); 287 closedWorld.typesImplementedBySubclasses, map.toBackendClassSet);
288 288
289 Iterable<MemberEntity> assignedInstanceMembers = 289 Iterable<MemberEntity> assignedInstanceMembers =
290 map.toBackendMemberSet(closedWorld.assignedInstanceMembers); 290 map.toBackendMemberSet(closedWorld.assignedInstanceMembers);
291 291
292 Iterable<ClassEntity> liveNativeClasses = 292 Iterable<ClassEntity> liveNativeClasses =
293 map.toBackendClassSet(closedWorld.liveNativeClasses); 293 map.toBackendClassSet(closedWorld.liveNativeClasses);
294 294
295 Iterable<MemberEntity> processedMembers =
296 map.toBackendMemberSet(closedWorld.processedMembers);
297
295 RuntimeTypesNeed rtiNeed = 298 RuntimeTypesNeed rtiNeed =
296 _convertRuntimeTypesNeed(map, backendUsage, closedWorld.rtiNeed); 299 _convertRuntimeTypesNeed(map, backendUsage, closedWorld.rtiNeed);
297 300
298 return new JsClosedWorld(_elementMap, 301 return new JsClosedWorld(_elementMap,
299 elementEnvironment: _elementEnvironment, 302 elementEnvironment: _elementEnvironment,
300 dartTypes: _elementMap.types, 303 dartTypes: _elementMap.types,
301 commonElements: _commonElements, 304 commonElements: _commonElements,
302 constantSystem: const JavaScriptConstantSystem(), 305 constantSystem: const JavaScriptConstantSystem(),
303 backendUsage: backendUsage, 306 backendUsage: backendUsage,
304 nativeData: nativeData, 307 nativeData: nativeData,
305 interceptorData: interceptorData, 308 interceptorData: interceptorData,
306 rtiNeed: rtiNeed, 309 rtiNeed: rtiNeed,
307 classHierarchyNodes: classHierarchyNodes, 310 classHierarchyNodes: classHierarchyNodes,
308 classSets: classSets, 311 classSets: classSets,
309 implementedClasses: implementedClasses, 312 implementedClasses: implementedClasses,
310 liveNativeClasses: liveNativeClasses, 313 liveNativeClasses: liveNativeClasses,
311 liveInstanceMembers: liveInstanceMembers, 314 liveInstanceMembers: liveInstanceMembers,
312 assignedInstanceMembers: assignedInstanceMembers, 315 assignedInstanceMembers: assignedInstanceMembers,
316 processedMembers: processedMembers,
313 mixinUses: mixinUses, 317 mixinUses: mixinUses,
314 typesImplementedBySubclasses: typesImplementedBySubclasses, 318 typesImplementedBySubclasses: typesImplementedBySubclasses,
315 // TODO(johnniwinther): Support this: 319 // TODO(johnniwinther): Support this:
316 allTypedefs: new ImmutableEmptySet<TypedefEntity>()); 320 allTypedefs: new ImmutableEmptySet<TypedefEntity>());
317 } 321 }
318 322
319 @override 323 @override
320 Sorter get sorter { 324 Sorter get sorter {
321 return _sorter ??= new KernelSorter(elementMap); 325 return _sorter ??= new KernelSorter(elementMap);
322 } 326 }
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
354 } 358 }
355 359
356 @override 360 @override
357 SourceSpan spanFromSpannable(Spannable spannable, Entity currentElement) { 361 SourceSpan spanFromSpannable(Spannable spannable, Entity currentElement) {
358 return _elementMap.getSourceSpan(spannable, currentElement); 362 return _elementMap.getSourceSpan(spannable, currentElement);
359 } 363 }
360 364
361 @override 365 @override
362 TypesInferrer createTypesInferrer(ClosedWorldRefiner closedWorldRefiner, 366 TypesInferrer createTypesInferrer(ClosedWorldRefiner closedWorldRefiner,
363 {bool disableTypeInference: false}) { 367 {bool disableTypeInference: false}) {
364 return new KernelTypeGraphInferrer( 368 return new KernelTypeGraphInferrer(_compiler, _elementMap, _globalLocalsMap,
365 _compiler, closedWorldRefiner.closedWorld, closedWorldRefiner, 369 _closureDataLookup, closedWorldRefiner.closedWorld, closedWorldRefiner,
366 disableTypeInference: disableTypeInference); 370 disableTypeInference: disableTypeInference);
367 } 371 }
368 } 372 }
369 373
370 class JsClosedWorld extends ClosedWorldBase with KernelClosedWorldMixin { 374 class JsClosedWorld extends ClosedWorldBase with KernelClosedWorldMixin {
371 final JsKernelToElementMap elementMap; 375 final JsKernelToElementMap elementMap;
372 final RuntimeTypesNeed rtiNeed; 376 final RuntimeTypesNeed rtiNeed;
373 377
374 JsClosedWorld(this.elementMap, 378 JsClosedWorld(this.elementMap,
375 {ElementEnvironment elementEnvironment, 379 {ElementEnvironment elementEnvironment,
376 DartTypes dartTypes, 380 DartTypes dartTypes,
377 CommonElements commonElements, 381 CommonElements commonElements,
378 ConstantSystem constantSystem, 382 ConstantSystem constantSystem,
379 NativeData nativeData, 383 NativeData nativeData,
380 InterceptorData interceptorData, 384 InterceptorData interceptorData,
381 BackendUsage backendUsage, 385 BackendUsage backendUsage,
382 this.rtiNeed, 386 this.rtiNeed,
383 Set<ClassEntity> implementedClasses, 387 Set<ClassEntity> implementedClasses,
384 Iterable<ClassEntity> liveNativeClasses, 388 Iterable<ClassEntity> liveNativeClasses,
385 Iterable<MemberEntity> liveInstanceMembers, 389 Iterable<MemberEntity> liveInstanceMembers,
386 Iterable<MemberEntity> assignedInstanceMembers, 390 Iterable<MemberEntity> assignedInstanceMembers,
391 Iterable<MemberEntity> processedMembers,
387 Set<TypedefEntity> allTypedefs, 392 Set<TypedefEntity> allTypedefs,
388 Map<ClassEntity, Set<ClassEntity>> mixinUses, 393 Map<ClassEntity, Set<ClassEntity>> mixinUses,
389 Map<ClassEntity, Set<ClassEntity>> typesImplementedBySubclasses, 394 Map<ClassEntity, Set<ClassEntity>> typesImplementedBySubclasses,
390 Map<ClassEntity, ClassHierarchyNode> classHierarchyNodes, 395 Map<ClassEntity, ClassHierarchyNode> classHierarchyNodes,
391 Map<ClassEntity, ClassSet> classSets}) 396 Map<ClassEntity, ClassSet> classSets})
392 : super( 397 : super(
393 elementEnvironment, 398 elementEnvironment,
394 dartTypes, 399 dartTypes,
395 commonElements, 400 commonElements,
396 constantSystem, 401 constantSystem,
397 nativeData, 402 nativeData,
398 interceptorData, 403 interceptorData,
399 backendUsage, 404 backendUsage,
400 implementedClasses, 405 implementedClasses,
401 liveNativeClasses, 406 liveNativeClasses,
402 liveInstanceMembers, 407 liveInstanceMembers,
403 assignedInstanceMembers, 408 assignedInstanceMembers,
409 processedMembers,
404 allTypedefs, 410 allTypedefs,
405 mixinUses, 411 mixinUses,
406 typesImplementedBySubclasses, 412 typesImplementedBySubclasses,
407 classHierarchyNodes, 413 classHierarchyNodes,
408 classSets); 414 classSets);
409 415
410 /// Construct a closure class and set up the necessary class inference 416 /// Construct a closure class and set up the necessary class inference
411 /// hierarchy. 417 /// hierarchy.
412 KernelClosureClass buildClosureClass( 418 KernelClosureClass buildClosureClass(
413 MemberEntity member, 419 MemberEntity member,
(...skipping 29 matching lines...) Expand all
443 node.isDirectlyInstantiated = true; 449 node.isDirectlyInstantiated = true;
444 450
445 return cls; 451 return cls;
446 } 452 }
447 453
448 @override 454 @override
449 void registerClosureClass(ClassEntity cls) { 455 void registerClosureClass(ClassEntity cls) {
450 throw new UnsupportedError('JsClosedWorld.registerClosureClass'); 456 throw new UnsupportedError('JsClosedWorld.registerClosureClass');
451 } 457 }
452 } 458 }
OLDNEW
« no previous file with comments | « pkg/compiler/lib/src/inferrer/locals_handler.dart ('k') | pkg/compiler/lib/src/js_model/locals.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698