| 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.elements; | 5 library dart2js.js_model.elements; |
| 6 | 6 |
| 7 import '../common_elements.dart'; | 7 import '../common_elements.dart'; |
| 8 import '../constants/constant_system.dart'; | 8 import '../constants/constant_system.dart'; |
| 9 import '../elements/elements.dart'; | 9 import '../elements/elements.dart'; |
| 10 import '../elements/entities.dart'; | 10 import '../elements/entities.dart'; |
| 11 import '../elements/names.dart'; | 11 import '../elements/names.dart'; |
| 12 import '../elements/types.dart'; | 12 import '../elements/types.dart'; |
| 13 import '../js_backend/backend_usage.dart'; | 13 import '../js_backend/backend_usage.dart'; |
| 14 import '../js_backend/interceptor_data.dart'; | 14 import '../js_backend/interceptor_data.dart'; |
| 15 import '../js_backend/native_data.dart'; | 15 import '../js_backend/native_data.dart'; |
| 16 import '../js_backend/runtime_types.dart'; |
| 16 import '../kernel/elements.dart'; | 17 import '../kernel/elements.dart'; |
| 17 import '../kernel/element_map_impl.dart'; | 18 import '../kernel/element_map_impl.dart'; |
| 18 import '../native/behavior.dart'; | 19 import '../native/behavior.dart'; |
| 19 import '../universe/class_set.dart'; | 20 import '../universe/class_set.dart'; |
| 20 import '../world.dart'; | 21 import '../world.dart'; |
| 21 | 22 |
| 22 /// Bidirectional map between 'frontend' and 'backend' elements. | 23 /// Bidirectional map between 'frontend' and 'backend' elements. |
| 23 /// | 24 /// |
| 24 /// Frontend elements are what we read in, these typically represents concepts | 25 /// Frontend elements are what we read in, these typically represents concepts |
| 25 /// in Dart. Backend elements are what we generate, these may include elements | 26 /// in Dart. Backend elements are what we generate, these may include elements |
| (...skipping 226 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 252 TypeVariableType type, EntityConverter converter) { | 253 TypeVariableType type, EntityConverter converter) { |
| 253 return new TypeVariableType(converter(type.element)); | 254 return new TypeVariableType(converter(type.element)); |
| 254 } | 255 } |
| 255 | 256 |
| 256 @override | 257 @override |
| 257 DartType visitVoidType(VoidType type, EntityConverter converter) { | 258 DartType visitVoidType(VoidType type, EntityConverter converter) { |
| 258 return const VoidType(); | 259 return const VoidType(); |
| 259 } | 260 } |
| 260 } | 261 } |
| 261 | 262 |
| 262 const String jsElementPrefix = 'j'; | 263 const String jsElementPrefix = 'j:'; |
| 263 | 264 |
| 264 class JLibrary implements LibraryEntity, IndexedLibrary { | 265 class JLibrary implements LibraryEntity, IndexedLibrary { |
| 265 /// Library index used for fast lookup in [JsToFrontendMapImpl]. | 266 /// Library index used for fast lookup in [JsToFrontendMapImpl]. |
| 266 final int libraryIndex; | 267 final int libraryIndex; |
| 267 final String name; | 268 final String name; |
| 268 final Uri canonicalUri; | 269 final Uri canonicalUri; |
| 269 | 270 |
| 270 JLibrary(this.libraryIndex, this.name, this.canonicalUri); | 271 JLibrary(this.libraryIndex, this.name, this.canonicalUri); |
| 271 | 272 |
| 272 String toString() => '${jsElementPrefix}library($name)'; | 273 String toString() => '${jsElementPrefix}library($name)'; |
| (...skipping 213 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 486 | 487 |
| 487 JTypeVariable( | 488 JTypeVariable( |
| 488 this.typeVariableIndex, this.typeDeclaration, this.name, this.index); | 489 this.typeVariableIndex, this.typeDeclaration, this.name, this.index); |
| 489 | 490 |
| 490 String toString() => | 491 String toString() => |
| 491 '${jsElementPrefix}type_variable(${typeDeclaration.name}.$name)'; | 492 '${jsElementPrefix}type_variable(${typeDeclaration.name}.$name)'; |
| 492 } | 493 } |
| 493 | 494 |
| 494 class JsClosedWorld extends ClosedWorldBase with KernelClosedWorldMixin { | 495 class JsClosedWorld extends ClosedWorldBase with KernelClosedWorldMixin { |
| 495 final JsKernelToElementMap elementMap; | 496 final JsKernelToElementMap elementMap; |
| 497 final RuntimeTypesNeed rtiNeed; |
| 496 | 498 |
| 497 JsClosedWorld(this.elementMap, | 499 JsClosedWorld(this.elementMap, |
| 498 {ElementEnvironment elementEnvironment, | 500 {ElementEnvironment elementEnvironment, |
| 499 DartTypes dartTypes, | 501 DartTypes dartTypes, |
| 500 CommonElements commonElements, | 502 CommonElements commonElements, |
| 501 ConstantSystem constantSystem, | 503 ConstantSystem constantSystem, |
| 502 NativeData nativeData, | 504 NativeData nativeData, |
| 503 InterceptorData interceptorData, | 505 InterceptorData interceptorData, |
| 504 BackendUsage backendUsage, | 506 BackendUsage backendUsage, |
| 507 this.rtiNeed, |
| 505 Set<ClassEntity> implementedClasses, | 508 Set<ClassEntity> implementedClasses, |
| 509 Iterable<ClassEntity> liveNativeClasses, |
| 506 Iterable<MemberEntity> liveInstanceMembers, | 510 Iterable<MemberEntity> liveInstanceMembers, |
| 507 Iterable<MemberEntity> assignedInstanceMembers, | 511 Iterable<MemberEntity> assignedInstanceMembers, |
| 508 Set<TypedefElement> allTypedefs, | 512 Set<TypedefElement> allTypedefs, |
| 509 Map<ClassEntity, Set<ClassEntity>> mixinUses, | 513 Map<ClassEntity, Set<ClassEntity>> mixinUses, |
| 510 Map<ClassEntity, Set<ClassEntity>> typesImplementedBySubclasses, | 514 Map<ClassEntity, Set<ClassEntity>> typesImplementedBySubclasses, |
| 511 Map<ClassEntity, ClassHierarchyNode> classHierarchyNodes, | 515 Map<ClassEntity, ClassHierarchyNode> classHierarchyNodes, |
| 512 Map<ClassEntity, ClassSet> classSets}) | 516 Map<ClassEntity, ClassSet> classSets}) |
| 513 : super( | 517 : super( |
| 514 elementEnvironment, | 518 elementEnvironment, |
| 515 dartTypes, | 519 dartTypes, |
| 516 commonElements, | 520 commonElements, |
| 517 constantSystem, | 521 constantSystem, |
| 518 nativeData, | 522 nativeData, |
| 519 interceptorData, | 523 interceptorData, |
| 520 backendUsage, | 524 backendUsage, |
| 521 implementedClasses, | 525 implementedClasses, |
| 526 liveNativeClasses, |
| 522 liveInstanceMembers, | 527 liveInstanceMembers, |
| 523 assignedInstanceMembers, | 528 assignedInstanceMembers, |
| 524 allTypedefs, | 529 allTypedefs, |
| 525 mixinUses, | 530 mixinUses, |
| 526 typesImplementedBySubclasses, | 531 typesImplementedBySubclasses, |
| 527 classHierarchyNodes, | 532 classHierarchyNodes, |
| 528 classSets); | 533 classSets); |
| 529 | 534 |
| 530 @override | 535 @override |
| 531 void registerClosureClass(ClassElement cls) { | 536 void registerClosureClass(ClassElement cls) { |
| (...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 694 | 699 |
| 695 @override | 700 @override |
| 696 bool get isFunctionApplyUsed => _backendUsage.isFunctionApplyUsed; | 701 bool get isFunctionApplyUsed => _backendUsage.isFunctionApplyUsed; |
| 697 | 702 |
| 698 @override | 703 @override |
| 699 bool get isMirrorsUsed => _backendUsage.isMirrorsUsed; | 704 bool get isMirrorsUsed => _backendUsage.isMirrorsUsed; |
| 700 | 705 |
| 701 @override | 706 @override |
| 702 bool get isNoSuchMethodUsed => _backendUsage.isNoSuchMethodUsed; | 707 bool get isNoSuchMethodUsed => _backendUsage.isNoSuchMethodUsed; |
| 703 } | 708 } |
| OLD | NEW |