| Index: pkg/compiler/lib/src/js_emitter/old_emitter/class_emitter.dart
|
| diff --git a/pkg/compiler/lib/src/js_emitter/old_emitter/class_emitter.dart b/pkg/compiler/lib/src/js_emitter/old_emitter/class_emitter.dart
|
| index 216b7d0d0a110430415e5217cd1067323409fcc3..0193ba25b95472978af13d76329126726cdc2a3a 100644
|
| --- a/pkg/compiler/lib/src/js_emitter/old_emitter/class_emitter.dart
|
| +++ b/pkg/compiler/lib/src/js_emitter/old_emitter/class_emitter.dart
|
| @@ -39,7 +39,8 @@ class ClassEmitter extends CodeEmitterHelper {
|
| emitCheckedClassSetters(cls, builder);
|
| emitClassGettersSettersForCSP(cls, builder);
|
| emitInstanceMembers(cls, builder);
|
| - emitCallStubs(cls, builder);
|
| + emitStubs(cls.callStubs, builder);
|
| + emitStubs(cls.typeVariableReaderStubs, builder);
|
| emitRuntimeTypeInformation(cls, builder);
|
| emitNativeInfo(cls, builder);
|
|
|
| @@ -51,8 +52,6 @@ class ClassEmitter extends CodeEmitterHelper {
|
| builder.addProperty(namer.getterNameFromAccessorName(name), function);
|
| }
|
|
|
| - emitTypeVariableReaders(classElement, builder);
|
| -
|
| emitClassBuilderWithReflectionData(cls, builder, enclosingBuilder);
|
| }
|
| /**
|
| @@ -213,8 +212,8 @@ class ClassEmitter extends CodeEmitterHelper {
|
| }
|
| }
|
|
|
| - void emitCallStubs(Class cls, ClassBuilder builder) {
|
| - for (Method method in cls.callStubs) {
|
| + void emitStubs(Iterable<StubMethod> stubs, ClassBuilder builder) {
|
| + for (Method method in stubs) {
|
| jsAst.Property property = builder.addProperty(method.name, method.code);
|
| compiler.dumpInfoTask.registerElementAst(method.element, property);
|
| }
|
| @@ -553,45 +552,4 @@ class ClassEmitter extends CodeEmitterHelper {
|
| builder.addProperty('+$reflectionName', reflectable);
|
| }
|
| }
|
| -
|
| - void emitTypeVariableReaders(ClassElement cls, ClassBuilder builder) {
|
| - List typeVariables = [];
|
| - ClassElement superclass = cls;
|
| - while (superclass != null) {
|
| - for (TypeVariableType parameter in superclass.typeVariables) {
|
| - if (backend.emitter.readTypeVariables.contains(parameter.element)) {
|
| - emitTypeVariableReader(cls, builder, parameter.element);
|
| - }
|
| - }
|
| - superclass = superclass.superclass;
|
| - }
|
| - }
|
| -
|
| - void emitTypeVariableReader(ClassElement cls,
|
| - ClassBuilder builder,
|
| - TypeVariableElement element) {
|
| - String name = namer.readTypeVariableName(element);
|
| - int index = RuntimeTypes.getTypeVariableIndex(element);
|
| - jsAst.Expression computeTypeVariable;
|
| -
|
| - Substitution substitution =
|
| - backend.rti.computeSubstitution(
|
| - cls, element.typeDeclaration, alwaysGenerateFunction: true);
|
| - if (substitution != null) {
|
| - computeTypeVariable =
|
| - js(r'#.apply(null, this.$builtinTypeInfo)',
|
| - substitution.getCodeForVariable(index, backend.rti));
|
| - } else {
|
| - // TODO(ahe): These can be generated dynamically.
|
| - computeTypeVariable =
|
| - js(r'this.$builtinTypeInfo && this.$builtinTypeInfo[#]',
|
| - js.number(index));
|
| - }
|
| - jsAst.Expression convertRtiToRuntimeType = emitter
|
| - .staticFunctionAccess(backend.findHelper('convertRtiToRuntimeType'));
|
| - compiler.dumpInfoTask.registerElementAst(element,
|
| - builder.addProperty(name,
|
| - js('function () { return #(#) }',
|
| - [convertRtiToRuntimeType, computeTypeVariable])));
|
| - }
|
| }
|
|
|