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

Unified Diff: sdk/lib/_internal/compiler/implementation/js_emitter/old_emitter/class_emitter.dart

Issue 693883003: Encode super calls via extra properties on prototypes. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 6 years, 1 month 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: sdk/lib/_internal/compiler/implementation/js_emitter/old_emitter/class_emitter.dart
diff --git a/sdk/lib/_internal/compiler/implementation/js_emitter/old_emitter/class_emitter.dart b/sdk/lib/_internal/compiler/implementation/js_emitter/old_emitter/class_emitter.dart
index 13e2df190681008572bc6c6b58a45d41942953b3..f97c49845ec566bd2ffe88b97a62d84f100a019a 100644
--- a/sdk/lib/_internal/compiler/implementation/js_emitter/old_emitter/class_emitter.dart
+++ b/sdk/lib/_internal/compiler/implementation/js_emitter/old_emitter/class_emitter.dart
@@ -43,6 +43,7 @@ class ClassEmitter extends CodeEmitterHelper {
emitFields(classElement, builder, superName, onlyForRti: onlyForRti);
emitClassGettersSetters(classElement, builder, onlyForRti: onlyForRti);
emitInstanceMembers(classElement, builder, onlyForRti: onlyForRti);
+ emitAliasedSuperMembers(classElement, builder, onlyForRti: onlyForRti);
emitter.typeTestEmitter.emitIsTests(classElement, builder);
if (additionalProperties != null) {
additionalProperties.forEach(builder.addProperty);
@@ -286,6 +287,19 @@ class ClassEmitter extends CodeEmitterHelper {
}
}
+ void emitAliasedSuperMembers(ClassElement classElement,
+ ClassBuilder builder,
+ {bool onlyForRti: false}) {
+ if (onlyForRti) return;
+ Set<Element> aliases = backend.getAliasedSuperMembers(classElement);
+
+ for (Element alias in aliases) {
+ String newProperty = backend.namer.getNameOfAliasedSuperMember(alias);
+ String target = backend.namer.getNameOfMember(alias);
+ builder.addAliasedSuperMethod("$newProperty:$target");
+ }
+ }
+
void emitClassBuilderWithReflectionData(String className,
ClassElement classElement,
ClassBuilder classBuilder,

Powered by Google App Engine
This is Rietveld 408576698