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

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

Issue 3011803002: dart2js kernel: Sort constants
Patch Set: implement DartType ordering 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 side-by-side diff with in-line comments
Download patch
Index: pkg/compiler/lib/src/kernel/kernel_backend_strategy.dart
diff --git a/pkg/compiler/lib/src/kernel/kernel_backend_strategy.dart b/pkg/compiler/lib/src/kernel/kernel_backend_strategy.dart
index 8ced1c7ac954184bc39894a0973ee358003c6a99..d5882aa05a75da67e8f9d2ebf93eb8b69a339f6e 100644
--- a/pkg/compiler/lib/src/kernel/kernel_backend_strategy.dart
+++ b/pkg/compiler/lib/src/kernel/kernel_backend_strategy.dart
@@ -222,28 +222,11 @@ class KernelSorter implements Sorter {
@override
Iterable<MemberEntity> sortMembers(Iterable<MemberEntity> members) {
- return members.toList()
- ..sort((MemberEntity member1, MemberEntity member2) {
- int r = _compareLibraries(member1.library, member2.library);
- if (r != 0) return r;
- MemberDefinition definition1 = elementMap.getMemberDefinition(member1);
- MemberDefinition definition2 = elementMap.getMemberDefinition(member2);
- return _compareSourceSpans(
- member1, definition1.location, member2, definition2.location);
- });
+ return members.toList()..sort(compareMembersByLocation);
}
@override
Iterable<ClassEntity> sortClasses(Iterable<ClassEntity> classes) {
- int compareClasses(ClassEntity cls1, ClassEntity cls2) {
- int r = _compareLibraries(cls1.library, cls2.library);
- if (r != 0) return r;
- ClassDefinition definition1 = elementMap.getClassDefinition(cls1);
- ClassDefinition definition2 = elementMap.getClassDefinition(cls2);
- return _compareSourceSpans(
- cls1, definition1.location, cls2, definition2.location);
- }
-
List<ClassEntity> regularClasses = <ClassEntity>[];
List<ClassEntity> unnamedMixins = <ClassEntity>[];
for (ClassEntity cls in classes) {
@@ -254,7 +237,7 @@ class KernelSorter implements Sorter {
}
}
List<ClassEntity> sorted = <ClassEntity>[];
- regularClasses.sort(compareClasses);
+ regularClasses.sort(compareClassesByLocation);
sorted.addAll(regularClasses);
unnamedMixins.sort((a, b) {
int result = _compareLibraries(a.library, b.library);
@@ -274,4 +257,36 @@ class KernelSorter implements Sorter {
assert(typedefs.isEmpty);
return typedefs;
}
+
+ @override
+ int compareLibrariesByLocation(LibraryEntity a, LibraryEntity b) {
+ return _compareLibraries(a, b);
+ }
+
+ @override
+ int compareClassesByLocation(ClassEntity a, ClassEntity b) {
+ int r = _compareLibraries(a.library, b.library);
+ if (r != 0) return r;
+ ClassDefinition definition1 = elementMap.getClassDefinition(a);
+ ClassDefinition definition2 = elementMap.getClassDefinition(b);
+ return _compareSourceSpans(
+ a, definition1.location, b, definition2.location);
+ }
+
+ @override
+ int compareTypedefsByLocation(TypedefEntity a, TypedefEntity b) {
+ // TODO(redemption): Support this.
+ failedAt(a, 'KernelSorter.compareTypedefsByLocation unimplemented');
+ return 0;
+ }
+
+ @override
+ int compareMembersByLocation(MemberEntity a, MemberEntity b) {
+ int r = _compareLibraries(a.library, b.library);
+ if (r != 0) return r;
+ MemberDefinition definition1 = elementMap.getMemberDefinition(a);
+ MemberDefinition definition2 = elementMap.getMemberDefinition(b);
+ return _compareSourceSpans(
+ a, definition1.location, b, definition2.location);
+ }
}

Powered by Google App Engine
This is Rietveld 408576698