| 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 part of world_builder; | 5 part of world_builder; |
| 6 | 6 |
| 7 abstract class ResolutionWorldBuilder implements WorldBuilder, OpenWorld { | 7 abstract class ResolutionWorldBuilder implements WorldBuilder, OpenWorld { |
| 8 /// Set of all local functions in the program. Used by the mirror tracking | 8 /// Set of all local functions in the program. Used by the mirror tracking |
| 9 /// system to find all live closure instances. | 9 /// system to find all live closure instances. |
| 10 Iterable<Local> get localFunctions; | 10 Iterable<Local> get localFunctions; |
| (...skipping 905 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 916 superclass = getSuperClass(superclass); | 916 superclass = getSuperClass(superclass); |
| 917 } | 917 } |
| 918 } | 918 } |
| 919 | 919 |
| 920 // Use the [:seenClasses:] set to include non-instantiated | 920 // Use the [:seenClasses:] set to include non-instantiated |
| 921 // classes: if the superclass of these classes require RTI, then | 921 // classes: if the superclass of these classes require RTI, then |
| 922 // they also need RTI, so that a constructor passes the type | 922 // they also need RTI, so that a constructor passes the type |
| 923 // variables to the super constructor. | 923 // variables to the super constructor. |
| 924 forEachInstantiatedClass(addSubtypes); | 924 forEachInstantiatedClass(addSubtypes); |
| 925 | 925 |
| 926 _classHierarchyNodes.keys.toList().forEach(_ensureClassSet); |
| 927 |
| 926 return typesImplementedBySubclasses; | 928 return typesImplementedBySubclasses; |
| 927 } | 929 } |
| 928 } | 930 } |
| 929 | 931 |
| 930 abstract class KernelResolutionWorldBuilderBase | 932 abstract class KernelResolutionWorldBuilderBase |
| 931 extends ResolutionWorldBuilderBase { | 933 extends ResolutionWorldBuilderBase { |
| 932 KernelResolutionWorldBuilderBase( | 934 KernelResolutionWorldBuilderBase( |
| 933 ElementEnvironment elementEnvironment, | 935 ElementEnvironment elementEnvironment, |
| 934 CommonElements commonElements, | 936 CommonElements commonElements, |
| 935 ConstantSystem constantSystem, | 937 ConstantSystem constantSystem, |
| (...skipping 10 matching lines...) Expand all Loading... |
| 946 nativeDataBuilder, | 948 nativeDataBuilder, |
| 947 interceptorDataBuilder, | 949 interceptorDataBuilder, |
| 948 backendUsageBuilder, | 950 backendUsageBuilder, |
| 949 selectorConstraintsStrategy); | 951 selectorConstraintsStrategy); |
| 950 | 952 |
| 951 @override | 953 @override |
| 952 ClosedWorld closeWorld() { | 954 ClosedWorld closeWorld() { |
| 953 Map<ClassEntity, Set<ClassEntity>> typesImplementedBySubclasses = | 955 Map<ClassEntity, Set<ClassEntity>> typesImplementedBySubclasses = |
| 954 populateHierarchyNodes(); | 956 populateHierarchyNodes(); |
| 955 _closed = true; | 957 _closed = true; |
| 958 assert( |
| 959 _classHierarchyNodes.length == _classSets.length, |
| 960 "ClassHierarchyNode/ClassSet mismatch: " |
| 961 "$_classHierarchyNodes vs $_classSets"); |
| 956 return _closedWorldCache = new KernelClosedWorld( | 962 return _closedWorldCache = new KernelClosedWorld( |
| 957 commonElements: _commonElements, | 963 commonElements: _commonElements, |
| 958 nativeData: _nativeDataBuilder.close(), | 964 nativeData: _nativeDataBuilder.close(), |
| 959 interceptorData: _interceptorDataBuilder.close(), | 965 interceptorData: _interceptorDataBuilder.close(), |
| 960 backendUsage: _backendUsageBuilder.close(), | 966 backendUsage: _backendUsageBuilder.close(), |
| 961 constantSystem: _constantSystem, | 967 constantSystem: _constantSystem, |
| 962 resolutionWorldBuilder: this, | 968 resolutionWorldBuilder: this, |
| 963 functionSet: _allFunctions.close(), | 969 functionSet: _allFunctions.close(), |
| 964 allTypedefs: _allTypedefs, | 970 allTypedefs: _allTypedefs, |
| 965 mixinUses: _mixinUses, | 971 mixinUses: _mixinUses, |
| 966 typesImplementedBySubclasses: typesImplementedBySubclasses, | 972 typesImplementedBySubclasses: typesImplementedBySubclasses, |
| 967 classHierarchyNodes: _classHierarchyNodes, | 973 classHierarchyNodes: _classHierarchyNodes, |
| 968 classSets: _classSets); | 974 classSets: _classSets); |
| 969 } | 975 } |
| 970 | 976 |
| 971 @override | 977 @override |
| 972 void registerClass(ClassEntity cls) { | 978 void registerClass(ClassEntity cls) { |
| 973 throw new UnimplementedError('KernelResolutionWorldBuilder.registerClass'); | 979 throw new UnimplementedError('KernelResolutionWorldBuilder.registerClass'); |
| 974 } | 980 } |
| 975 } | 981 } |
| OLD | NEW |