| Index: pkg/compiler/lib/src/js_emitter/old_emitter/container_builder.dart
|
| diff --git a/pkg/compiler/lib/src/js_emitter/old_emitter/container_builder.dart b/pkg/compiler/lib/src/js_emitter/old_emitter/container_builder.dart
|
| index 94bd8901ea907fd113f3f9388d70db6645b3deee..573a9ee662cbdfb5725cd66bb22d8f5a13d54d69 100644
|
| --- a/pkg/compiler/lib/src/js_emitter/old_emitter/container_builder.dart
|
| +++ b/pkg/compiler/lib/src/js_emitter/old_emitter/container_builder.dart
|
| @@ -295,16 +295,13 @@ class ContainerBuilder extends CodeEmitterHelper {
|
| if (!needStructuredInfo) {
|
| compiler.dumpInfoTask.registerElementAst(member,
|
| builder.addProperty(name, code));
|
| - if (needsStubs) {
|
| - for (AdapterStubMethod adapter in
|
| - generateParameterStubs(member, canTearOff: false)) {
|
| - assert(adapter.callName == null);
|
| - String invocationName = adapter.name;
|
| - emitter.interceptorEmitter
|
| - .recordMangledNameOfMemberMethod(member, invocationName);
|
| - compiler.dumpInfoTask.registerElementAst(
|
| - member, builder.addProperty(invocationName, adapter.code));
|
| - }
|
| + for (AdapterStubMethod adapter in method.adapterStubs) {
|
| + assert(adapter.callName == null);
|
| + String invocationName = adapter.name;
|
| + emitter.interceptorEmitter
|
| + .recordMangledNameOfMemberMethod(member, invocationName);
|
| + compiler.dumpInfoTask.registerElementAst(
|
| + member, builder.addProperty(invocationName, adapter.code));
|
| }
|
| return;
|
| }
|
| @@ -360,9 +357,8 @@ class ContainerBuilder extends CodeEmitterHelper {
|
| }
|
|
|
| String callSelectorString = 'null';
|
| - if (member.isFunction) {
|
| - Selector callSelector = new Selector.fromElement(member).toCallSelector();
|
| - callSelectorString = '"${namer.invocationName(callSelector)}"';
|
| + if (method.callName != null) {
|
| + callSelectorString = '"${method.callName}"';
|
| }
|
|
|
| // On [requiredParameterCount], the lower bit is set if this method can be
|
| @@ -376,26 +372,24 @@ class ContainerBuilder extends CodeEmitterHelper {
|
| // TODO(sra): Don't use LiteralString for non-strings.
|
| List tearOffInfo = [new jsAst.LiteralString(callSelectorString)];
|
|
|
| - if (needsStubs || canTearOff) {
|
| - for (AdapterStubMethod adapter in
|
| - generateParameterStubs(member, canTearOff: canTearOff)) {
|
| - String invocationName = adapter.name;
|
| - emitter.interceptorEmitter
|
| - .recordMangledNameOfMemberMethod(member, invocationName);
|
| + for (AdapterStubMethod adapter in method.adapterStubs) {
|
| + String invocationName = adapter.name;
|
| + emitter.interceptorEmitter
|
| + .recordMangledNameOfMemberMethod(member, invocationName);
|
|
|
| - expressions.add(adapter.code);
|
| - if (member.isInstanceMember) {
|
| - expressions.add(js.string(invocationName));
|
| - } else {
|
| - // TOOD(floitsch): Since we know when reading static data versus
|
| - // instance data, we can eliminate this element.
|
| - expressions.add(js('null'));
|
| - }
|
| - String callName = adapter.callName;
|
| - String callSelectorString = (callName == null) ? 'null' : '"$callName"';
|
| - tearOffInfo.add(new jsAst.LiteralString(callSelectorString));
|
| + expressions.add(adapter.code);
|
| + if (member.isInstanceMember) {
|
| + expressions.add(js.string(invocationName));
|
| + } else {
|
| + // TOOD(floitsch): Since we know when reading static data versus
|
| + // instance data, we can eliminate this element.
|
| + expressions.add(js('null'));
|
| }
|
| + String callName = adapter.callName;
|
| + String callSelectorString = (callName == null) ? 'null' : '"$callName"';
|
| + tearOffInfo.add(new jsAst.LiteralString(callSelectorString));
|
| }
|
| +
|
| jsAst.Expression memberTypeExpression;
|
| if (canTearOff || canBeReflected) {
|
| DartType memberType;
|
|
|