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

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

Issue 2982733002: Use entities in most of MirrorsData (Closed)
Patch Set: 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 side-by-side diff with in-line comments
Download patch
Index: pkg/compiler/lib/src/kernel/element_map_impl.dart
diff --git a/pkg/compiler/lib/src/kernel/element_map_impl.dart b/pkg/compiler/lib/src/kernel/element_map_impl.dart
index fd3010471b0bb6a623bd7b6ab3fc6d7691dc1297..daeb574c9fe6c193671de47ede197d9edd1576cf 100644
--- a/pkg/compiler/lib/src/kernel/element_map_impl.dart
+++ b/pkg/compiler/lib/src/kernel/element_map_impl.dart
@@ -84,6 +84,10 @@ abstract class KernelToElementMapBase extends KernelToElementMapBaseMixin {
/// used for fast lookup into library classes and members.
List<LibraryEnv> _libraryEnvs = <LibraryEnv>[];
+ /// List of library data by `IndexedLibrary.libraryIndex`. This is used for
+ /// fast lookup into library properties.
+ List<LibraryData> _libraryData = <LibraryData>[];
+
/// List of class environments by `IndexedClass.classIndex`. This is used for
/// fast lookup into class members.
List<ClassEnv> _classEnvs = <ClassEnv>[];
@@ -608,6 +612,7 @@ abstract class ElementCreatorMixin {
ProgramEnv get _env;
List<LibraryEntity> get _libraryList;
List<LibraryEnv> get _libraryEnvs;
+ List<LibraryData> get _libraryData;
List<ClassEntity> get _classList;
List<ClassEnv> get _classEnvs;
List<ClassData> get _classData;
@@ -653,6 +658,7 @@ abstract class ElementCreatorMixin {
LibraryEntity library =
createLibrary(_libraryMap.length, name, canonicalUri);
_libraryList.add(library);
+ _libraryData.add(new LibraryData(node));
return library;
});
}
@@ -1284,7 +1290,27 @@ class KernelElementEnvironment implements ElementEnvironment {
}
@override
- Iterable<ConstantValue> getMemberMetadata(covariant IndexedMember member) {
+ Iterable<ConstantValue> getLibraryMetadata(covariant IndexedLibrary library) {
+ LibraryData libraryData = elementMap._libraryData[library.libraryIndex];
+ return libraryData.getMetadata(elementMap);
+ }
+
+ @override
+ Iterable<ConstantValue> getClassMetadata(covariant IndexedClass cls) {
+ ClassData classData = elementMap._classData[cls.classIndex];
+ return classData.getMetadata(elementMap);
+ }
+
+ @override
+ Iterable<ConstantValue> getTypedefMetadata(TypedefEntity typedef) {
+ // TODO(redemption): Support this.
+ throw new UnsupportedError('ElementEnvironment.getTypedefMetadata');
+ }
+
+ @override
+ Iterable<ConstantValue> getMemberMetadata(covariant IndexedMember member,
+ {bool includeParameterMetadata: false}) {
+ // TODO(redemption): Support includeParameterMetadata.
MemberData memberData = elementMap._memberData[member.memberIndex];
return memberData.getMetadata(elementMap);
}
@@ -1790,10 +1816,12 @@ class JsKernelToElementMap extends KernelToElementMapBase
libraryIndex < _elementMap._libraryEnvs.length;
libraryIndex++) {
LibraryEnv env = _elementMap._libraryEnvs[libraryIndex];
+ LibraryData data = _elementMap._libraryData[libraryIndex];
LibraryEntity oldLibrary = _elementMap._libraryList[libraryIndex];
LibraryEntity newLibrary = convertLibrary(oldLibrary);
_libraryMap[env.library] = newLibrary;
_libraryList.add(newLibrary);
+ _libraryData.add(data.copy());
_libraryEnvs.add(env);
}
for (int classIndex = 0;
« no previous file with comments | « pkg/compiler/lib/src/js_emitter/program_builder/collector.dart ('k') | pkg/compiler/lib/src/kernel/env.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698