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

Unified Diff: pkg/compiler/lib/src/kernel/element_map.dart

Issue 2829033002: Rename KernelWorldBuilder to KernelElementBuilder (Closed)
Patch Set: Rename to KernelToElementMap Created 3 years, 8 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | pkg/compiler/lib/src/kernel/native_basic_data.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/compiler/lib/src/kernel/element_map.dart
diff --git a/pkg/compiler/lib/src/kernel/world_builder.dart b/pkg/compiler/lib/src/kernel/element_map.dart
similarity index 89%
rename from pkg/compiler/lib/src/kernel/world_builder.dart
rename to pkg/compiler/lib/src/kernel/element_map.dart
index 519b33f585de80d48e628fdd505ccba91faa1500..c2ad9413a72ce7d6d58805ff48c4e194160e74bc 100644
--- a/pkg/compiler/lib/src/kernel/world_builder.dart
+++ b/pkg/compiler/lib/src/kernel/element_map.dart
@@ -2,7 +2,7 @@
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
-library dart2js.kernel.world_builder;
+library dart2js.kernel.element_map;
import 'package:kernel/ast.dart' as ir;
@@ -36,10 +36,9 @@ part 'native_class_resolver.dart';
part 'no_such_method_resolver.dart';
part 'types.dart';
-/// World builder used for creating elements and types corresponding to Kernel
+/// Element builder used for creating elements and types corresponding to Kernel
/// IR nodes.
-// TODO(johnniwinther): Implement [ResolutionWorldBuilder].
-class KernelWorldBuilder extends KernelElementAdapterMixin {
+class KernelToElementMap extends KernelElementAdapterMixin {
CommonElements _commonElements;
native.BehaviorBuilder _nativeBehaviorBuilder;
final DiagnosticReporter reporter;
@@ -49,15 +48,15 @@ class KernelWorldBuilder extends KernelElementAdapterMixin {
_KernelDartTypes _types;
/// Library environment. Used for fast lookup.
- KEnv _env;
+ _KEnv _env;
/// List of library environments by `KLibrary.libraryIndex`. This is used for
/// fast lookup into library classes and members.
- List<KLibraryEnv> _libraryEnvs = <KLibraryEnv>[];
+ List<_KLibraryEnv> _libraryEnvs = <_KLibraryEnv>[];
/// List of class environments by `KClass.classIndex`. This is used for
/// fast lookup into class members.
- List<KClassEnv> _classEnvs = <KClassEnv>[];
+ List<_KClassEnv> _classEnvs = <_KClassEnv>[];
Map<ir.Library, KLibrary> _libraryMap = <ir.Library, KLibrary>{};
Map<ir.Class, KClass> _classMap = <ir.Class, KClass>{};
@@ -81,8 +80,8 @@ class KernelWorldBuilder extends KernelElementAdapterMixin {
Map<ir.TreeNode, KLocalFunction> _localFunctionMap =
<ir.TreeNode, KLocalFunction>{};
- KernelWorldBuilder(this.reporter, ir.Program program)
- : _env = new KEnv(program) {
+ KernelToElementMap(this.reporter, ir.Program program)
+ : _env = new _KEnv(program) {
_elementEnvironment = new KernelElementEnvironment(this);
_commonElements = new CommonElements(_elementEnvironment);
_constantEnvironment = new KernelConstantEnvironment(this);
@@ -107,7 +106,7 @@ class KernelWorldBuilder extends KernelElementAdapterMixin {
Iterable<LibraryEntity> get _libraries {
if (_env.length != _libraryMap.length) {
// Create a [KLibrary] for each library.
- _env.forEachLibrary((KLibraryEnv env) {
+ _env.forEachLibrary((_KLibraryEnv env) {
_getLibrary(env.library, env);
});
}
@@ -128,11 +127,11 @@ class KernelWorldBuilder extends KernelElementAdapterMixin {
native.BehaviorBuilder get nativeBehaviorBuilder => _nativeBehaviorBuilder;
LibraryEntity lookupLibrary(Uri uri) {
- KLibraryEnv libraryEnv = _env.lookupLibrary(uri);
+ _KLibraryEnv libraryEnv = _env.lookupLibrary(uri);
return _getLibrary(libraryEnv.library, libraryEnv);
}
- KLibrary _getLibrary(ir.Library node, [KLibraryEnv libraryEnv]) {
+ KLibrary _getLibrary(ir.Library node, [_KLibraryEnv libraryEnv]) {
return _libraryMap.putIfAbsent(node, () {
Uri canonicalUri = node.importUri;
_libraryEnvs.add(libraryEnv ?? _env.lookupLibrary(canonicalUri));
@@ -148,14 +147,14 @@ class KernelWorldBuilder extends KernelElementAdapterMixin {
MemberEntity lookupLibraryMember(KLibrary library, String name,
{bool setter: false}) {
- KLibraryEnv libraryEnv = _libraryEnvs[library.libraryIndex];
+ _KLibraryEnv libraryEnv = _libraryEnvs[library.libraryIndex];
ir.Member member = libraryEnv.lookupMember(name, setter: setter);
return member != null ? getMember(member) : null;
}
ClassEntity lookupClass(KLibrary library, String name) {
- KLibraryEnv libraryEnv = _libraryEnvs[library.libraryIndex];
- KClassEnv classEnv = libraryEnv.lookupClass(name);
+ _KLibraryEnv libraryEnv = _libraryEnvs[library.libraryIndex];
+ _KClassEnv classEnv = libraryEnv.lookupClass(name);
if (classEnv != null) {
return _getClass(classEnv.cls, classEnv);
}
@@ -163,26 +162,26 @@ class KernelWorldBuilder extends KernelElementAdapterMixin {
}
void _forEachClass(KLibrary library, void f(ClassEntity cls)) {
- KLibraryEnv libraryEnv = _libraryEnvs[library.libraryIndex];
- libraryEnv.forEachClass((KClassEnv classEnv) {
+ _KLibraryEnv libraryEnv = _libraryEnvs[library.libraryIndex];
+ libraryEnv.forEachClass((_KClassEnv classEnv) {
f(_getClass(classEnv.cls, classEnv));
});
}
MemberEntity lookupClassMember(KClass cls, String name,
{bool setter: false}) {
- KClassEnv classEnv = _classEnvs[cls.classIndex];
+ _KClassEnv classEnv = _classEnvs[cls.classIndex];
ir.Member member = classEnv.lookupMember(name, setter: setter);
return member != null ? getMember(member) : null;
}
ConstructorEntity lookupConstructor(KClass cls, String name) {
- KClassEnv classEnv = _classEnvs[cls.classIndex];
+ _KClassEnv classEnv = _classEnvs[cls.classIndex];
ir.Member member = classEnv.lookupConstructor(name);
return member != null ? getConstructor(member) : null;
}
- KClass _getClass(ir.Class node, [KClassEnv classEnv]) {
+ KClass _getClass(ir.Class node, [_KClassEnv classEnv]) {
return _classMap.putIfAbsent(node, () {
KLibrary library = _getLibrary(node.enclosingLibrary);
if (classEnv == null) {
@@ -386,7 +385,7 @@ class KernelWorldBuilder extends KernelElementAdapterMixin {
return list;
}
- void _ensureThisAndRawType(KClass cls, KClassEnv env) {
+ void _ensureThisAndRawType(KClass cls, _KClassEnv env) {
if (env.thisType == null) {
ir.Class node = env.cls;
// TODO(johnniwinther): Add the type argument to the list literal when we
@@ -411,18 +410,18 @@ class KernelWorldBuilder extends KernelElementAdapterMixin {
}
InterfaceType _getThisType(KClass cls) {
- KClassEnv env = _classEnvs[cls.classIndex];
+ _KClassEnv env = _classEnvs[cls.classIndex];
_ensureThisAndRawType(cls, env);
return env.thisType;
}
InterfaceType _getRawType(KClass cls) {
- KClassEnv env = _classEnvs[cls.classIndex];
+ _KClassEnv env = _classEnvs[cls.classIndex];
_ensureThisAndRawType(cls, env);
return env.rawType;
}
- void _ensureSupertypes(KClass cls, KClassEnv env) {
+ void _ensureSupertypes(KClass cls, _KClassEnv env) {
if (env.orderedTypeSet == null) {
_ensureThisAndRawType(cls, env);
@@ -434,7 +433,7 @@ class KernelWorldBuilder extends KernelElementAdapterMixin {
InterfaceType processSupertype(ir.Supertype node) {
InterfaceType type = _typeConverter.visitSupertype(node);
KClass superclass = type.element;
- KClassEnv env = _classEnvs[superclass.classIndex];
+ _KClassEnv env = _classEnvs[superclass.classIndex];
_ensureSupertypes(superclass, env);
return type;
}
@@ -458,13 +457,13 @@ class KernelWorldBuilder extends KernelElementAdapterMixin {
}
OrderedTypeSet _getOrderedTypeSet(KClass cls) {
- KClassEnv env = _classEnvs[cls.classIndex];
+ _KClassEnv env = _classEnvs[cls.classIndex];
_ensureSupertypes(cls, env);
return env.orderedTypeSet;
}
int _getHierarchyDepth(KClass cls) {
- KClassEnv env = _classEnvs[cls.classIndex];
+ _KClassEnv env = _classEnvs[cls.classIndex];
_ensureSupertypes(cls, env);
return env.orderedTypeSet.maxDepth;
}
@@ -475,20 +474,20 @@ class KernelWorldBuilder extends KernelElementAdapterMixin {
}
InterfaceType _getSuperType(KClass cls) {
- KClassEnv env = _classEnvs[cls.classIndex];
+ _KClassEnv env = _classEnvs[cls.classIndex];
_ensureSupertypes(cls, env);
return env.supertype;
}
void _forEachSupertype(KClass cls, void f(InterfaceType supertype)) {
- KClassEnv env = _classEnvs[cls.classIndex];
+ _KClassEnv env = _classEnvs[cls.classIndex];
_ensureSupertypes(cls, env);
env.orderedTypeSet.supertypes.forEach(f);
}
void _forEachClassMember(
KClass cls, void f(ClassEntity cls, MemberEntity member)) {
- KClassEnv env = _classEnvs[cls.classIndex];
+ _KClassEnv env = _classEnvs[cls.classIndex];
env.forEachMember((ir.Member member) {
f(cls, getMember(member));
});
@@ -596,30 +595,30 @@ class KernelWorldBuilder extends KernelElementAdapterMixin {
}
/// Environment for fast lookup of program libraries.
-class KEnv {
+class _KEnv {
final ir.Program program;
- Map<Uri, KLibraryEnv> _libraryMap;
+ Map<Uri, _KLibraryEnv> _libraryMap;
- KEnv(this.program);
+ _KEnv(this.program);
void _ensureLibraryMap() {
if (_libraryMap == null) {
- _libraryMap = <Uri, KLibraryEnv>{};
+ _libraryMap = <Uri, _KLibraryEnv>{};
for (ir.Library library in program.libraries) {
- _libraryMap[library.importUri] = new KLibraryEnv(library);
+ _libraryMap[library.importUri] = new _KLibraryEnv(library);
}
}
}
- /// Return the [KLibraryEnv] for the library with the canonical [uri].
- KLibraryEnv lookupLibrary(Uri uri) {
+ /// Return the [_KLibraryEnv] for the library with the canonical [uri].
+ _KLibraryEnv lookupLibrary(Uri uri) {
_ensureLibraryMap();
return _libraryMap[uri];
}
/// Calls [f] for each library in this environment.
- void forEachLibrary(void f(KLibraryEnv library)) {
+ void forEachLibrary(void f(_KLibraryEnv library)) {
_ensureLibraryMap();
_libraryMap.values.forEach(f);
}
@@ -632,33 +631,32 @@ class KEnv {
}
/// Environment for fast lookup of library classes and members.
-// TODO(johnniwinther): Add member lookup.
-class KLibraryEnv {
+class _KLibraryEnv {
final ir.Library library;
- Map<String, KClassEnv> _classMap;
+ Map<String, _KClassEnv> _classMap;
Map<String, ir.Member> _memberMap;
Map<String, ir.Member> _setterMap;
- KLibraryEnv(this.library);
+ _KLibraryEnv(this.library);
void _ensureClassMap() {
if (_classMap == null) {
- _classMap = <String, KClassEnv>{};
+ _classMap = <String, _KClassEnv>{};
for (ir.Class cls in library.classes) {
- _classMap[cls.name] = new KClassEnv(cls);
+ _classMap[cls.name] = new _KClassEnv(cls);
}
}
}
- /// Return the [KClassEnv] for the class [name] in [library].
- KClassEnv lookupClass(String name) {
+ /// Return the [_KClassEnv] for the class [name] in [library].
+ _KClassEnv lookupClass(String name) {
_ensureClassMap();
return _classMap[name];
}
/// Calls [f] for each class in this library.
- void forEachClass(void f(KClassEnv cls)) {
+ void forEachClass(void f(_KClassEnv cls)) {
_ensureClassMap();
_classMap.values.forEach(f);
}
@@ -691,8 +689,7 @@ class KLibraryEnv {
}
/// Environment for fast lookup of class members.
-// TODO(johnniwinther): Add member lookup.
-class KClassEnv {
+class _KClassEnv {
final ir.Class cls;
InterfaceType thisType;
@@ -706,7 +703,7 @@ class KClassEnv {
Iterable<ConstantExpression> _metadata;
- KClassEnv(this.cls);
+ _KClassEnv(this.cls);
void _ensureMaps() {
if (_memberMap == null) {
@@ -754,7 +751,7 @@ class KClassEnv {
_memberMap.values.forEach(f);
}
- Iterable<ConstantExpression> getMetadata(KernelWorldBuilder worldBuilder) {
+ Iterable<ConstantExpression> getMetadata(KernelToElementMap worldBuilder) {
if (_metadata == null) {
_metadata = worldBuilder.getMetadata(cls.annotations);
}
@@ -763,30 +760,30 @@ class KClassEnv {
}
class KernelElementEnvironment implements ElementEnvironment {
- final KernelWorldBuilder worldBuilder;
+ final KernelToElementMap elementMap;
- KernelElementEnvironment(this.worldBuilder);
+ KernelElementEnvironment(this.elementMap);
@override
DartType get dynamicType => const DynamicType();
@override
- LibraryEntity get mainLibrary => worldBuilder._mainLibrary;
+ LibraryEntity get mainLibrary => elementMap._mainLibrary;
@override
- FunctionEntity get mainFunction => worldBuilder._mainFunction;
+ FunctionEntity get mainFunction => elementMap._mainFunction;
@override
- Iterable<LibraryEntity> get libraries => worldBuilder._libraries;
+ Iterable<LibraryEntity> get libraries => elementMap._libraries;
@override
InterfaceType getThisType(ClassEntity cls) {
- return worldBuilder._getThisType(cls);
+ return elementMap._getThisType(cls);
}
@override
InterfaceType getRawType(ClassEntity cls) {
- return worldBuilder._getRawType(cls);
+ return elementMap._getRawType(cls);
}
@override
@@ -803,7 +800,7 @@ class KernelElementEnvironment implements ElementEnvironment {
@override
bool isSubtype(DartType a, DartType b) {
- return worldBuilder.types.isSubtype(a, b);
+ return elementMap.types.isSubtype(a, b);
}
@override
@@ -822,7 +819,7 @@ class KernelElementEnvironment implements ElementEnvironment {
@override
ConstructorEntity lookupConstructor(ClassEntity cls, String name,
{bool required: false}) {
- ConstructorEntity constructor = worldBuilder.lookupConstructor(cls, name);
+ ConstructorEntity constructor = elementMap.lookupConstructor(cls, name);
if (constructor == null && required) {
throw new SpannableAssertionFailure(
CURRENT_ELEMENT_SPANNABLE,
@@ -836,7 +833,7 @@ class KernelElementEnvironment implements ElementEnvironment {
MemberEntity lookupClassMember(ClassEntity cls, String name,
{bool setter: false, bool required: false}) {
MemberEntity member =
- worldBuilder.lookupClassMember(cls, name, setter: setter);
+ elementMap.lookupClassMember(cls, name, setter: setter);
if (member == null && required) {
throw new SpannableAssertionFailure(CURRENT_ELEMENT_SPANNABLE,
"The member '$name' was not found in ${cls.name}.");
@@ -846,12 +843,12 @@ class KernelElementEnvironment implements ElementEnvironment {
@override
ClassEntity getSuperClass(ClassEntity cls) {
- return worldBuilder._getSuperType(cls)?.element;
+ return elementMap._getSuperType(cls)?.element;
}
@override
void forEachSupertype(ClassEntity cls, void f(InterfaceType supertype)) {
- worldBuilder._forEachSupertype(cls, f);
+ elementMap._forEachSupertype(cls, f);
}
@override
@@ -862,14 +859,14 @@ class KernelElementEnvironment implements ElementEnvironment {
@override
void forEachClassMember(
ClassEntity cls, void f(ClassEntity declarer, MemberEntity member)) {
- worldBuilder._forEachClassMember(cls, f);
+ elementMap._forEachClassMember(cls, f);
}
@override
MemberEntity lookupLibraryMember(LibraryEntity library, String name,
{bool setter: false, bool required: false}) {
MemberEntity member =
- worldBuilder.lookupLibraryMember(library, name, setter: setter);
+ elementMap.lookupLibraryMember(library, name, setter: setter);
if (member == null && required) {
throw new SpannableAssertionFailure(CURRENT_ELEMENT_SPANNABLE,
"The member '${name}' was not found in library '${library.name}'.");
@@ -880,7 +877,7 @@ class KernelElementEnvironment implements ElementEnvironment {
@override
ClassEntity lookupClass(LibraryEntity library, String name,
{bool required: false}) {
- ClassEntity cls = worldBuilder.lookupClass(library, name);
+ ClassEntity cls = elementMap.lookupClass(library, name);
if (cls == null && required) {
throw new SpannableAssertionFailure(CURRENT_ELEMENT_SPANNABLE,
"The class '$name' was not found in library '${library.name}'.");
@@ -890,12 +887,12 @@ class KernelElementEnvironment implements ElementEnvironment {
@override
void forEachClass(KLibrary library, void f(ClassEntity cls)) {
- worldBuilder._forEachClass(library, f);
+ elementMap._forEachClass(library, f);
}
@override
LibraryEntity lookupLibrary(Uri uri, {bool required: false}) {
- LibraryEntity library = worldBuilder.lookupLibrary(uri);
+ LibraryEntity library = elementMap.lookupLibrary(uri);
if (library == null && required) {
throw new SpannableAssertionFailure(
CURRENT_ELEMENT_SPANNABLE, "The library '$uri' was not found.");
@@ -905,7 +902,7 @@ class KernelElementEnvironment implements ElementEnvironment {
@override
CallStructure getCallStructure(KFunction function) {
- ir.Member member = worldBuilder._memberList[function.memberIndex];
+ ir.Member member = elementMap._memberList[function.memberIndex];
ir.FunctionNode functionNode;
if (member is ir.Procedure) {
functionNode = member.function;
@@ -930,7 +927,7 @@ class KernelElementEnvironment implements ElementEnvironment {
/// Visitor that converts kernel dart types into [DartType].
class DartTypeConverter extends ir.DartTypeVisitor<DartType> {
- final KernelWorldBuilder elementAdapter;
+ final KernelToElementMap elementAdapter;
bool topLevel = true;
DartTypeConverter(this.elementAdapter);
@@ -1033,7 +1030,7 @@ class KernelBehaviorBuilder extends native.BehaviorBuilder {
/// Constant environment mapping [ConstantExpression]s to [ConstantValue]s using
/// [_EvaluationEnvironment] for the evaluation.
class KernelConstantEnvironment implements ConstantEnvironment {
- KernelWorldBuilder _worldBuilder;
+ KernelToElementMap _worldBuilder;
Map<ConstantExpression, ConstantValue> _valueMap =
<ConstantExpression, ConstantValue>{};
@@ -1065,7 +1062,7 @@ class KernelConstantEnvironment implements ConstantEnvironment {
/// Evaluation environment used for computing [ConstantValue]s for
/// kernel based [ConstantExpression]s.
class _EvaluationEnvironment implements Environment {
- final KernelWorldBuilder _worldBuilder;
+ final KernelToElementMap _worldBuilder;
_EvaluationEnvironment(this._worldBuilder);
@@ -1104,23 +1101,21 @@ class _EvaluationEnvironment implements Environment {
}
class KernelResolutionWorldBuilder extends KernelResolutionWorldBuilderBase {
- final KernelWorldBuilder worldBuilder;
+ final KernelToElementMap elementMap;
- KernelResolutionWorldBuilder(
- this.worldBuilder,
- NativeBasicData nativeBasicData,
+ KernelResolutionWorldBuilder(this.elementMap, NativeBasicData nativeBasicData,
SelectorConstraintsStrategy selectorConstraintsStrategy)
- : super(worldBuilder.elementEnvironment, worldBuilder.commonElements,
+ : super(elementMap.elementEnvironment, elementMap.commonElements,
nativeBasicData, selectorConstraintsStrategy);
@override
Iterable<InterfaceType> getSupertypes(ClassEntity cls) {
- return worldBuilder._getOrderedTypeSet(cls).supertypes;
+ return elementMap._getOrderedTypeSet(cls).supertypes;
}
@override
ClassEntity getSuperClass(ClassEntity cls) {
- return worldBuilder._getSuperType(cls)?.element;
+ return elementMap._getSuperType(cls)?.element;
}
@override
@@ -1131,7 +1126,7 @@ class KernelResolutionWorldBuilder extends KernelResolutionWorldBuilderBase {
@override
int getHierarchyDepth(ClassEntity cls) {
- return worldBuilder._getHierarchyDepth(cls);
+ return elementMap._getHierarchyDepth(cls);
}
@override
@@ -1149,7 +1144,7 @@ class KernelResolutionWorldBuilder extends KernelResolutionWorldBuilderBase {
// Interface for testing equivalence of Kernel-based entities.
class WorldDeconstructionForTesting {
- final KernelWorldBuilder builder;
+ final KernelToElementMap builder;
WorldDeconstructionForTesting(this.builder);
@@ -1158,7 +1153,7 @@ class WorldDeconstructionForTesting {
}
KLibrary getLibraryForClass(KClass cls) {
- KClassEnv env = builder._classEnvs[cls.classIndex];
+ _KClassEnv env = builder._classEnvs[cls.classIndex];
return builder.getLibrary(env.cls.enclosingLibrary);
}
@@ -1182,14 +1177,14 @@ class WorldDeconstructionForTesting {
_getLibrary(field, builder._fieldMap);
KClass getSuperclassForClass(KClass cls) {
- KClassEnv env = builder._classEnvs[cls.classIndex];
+ _KClassEnv env = builder._classEnvs[cls.classIndex];
ir.Supertype supertype = env.cls.supertype;
if (supertype == null) return null;
return builder.getClass(supertype.classNode);
}
InterfaceType getMixinTypeForClass(KClass cls) {
- KClassEnv env = builder._classEnvs[cls.classIndex];
+ _KClassEnv env = builder._classEnvs[cls.classIndex];
ir.Supertype mixedInType = env.cls.mixedInType;
if (mixedInType == null) return null;
return builder.createInterfaceType(
« no previous file with comments | « no previous file | pkg/compiler/lib/src/kernel/native_basic_data.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698