Chromium Code Reviews| Index: sdk/lib/_internal/compiler/implementation/js_emitter/container_builder.dart |
| diff --git a/sdk/lib/_internal/compiler/implementation/js_emitter/container_builder.dart b/sdk/lib/_internal/compiler/implementation/js_emitter/container_builder.dart |
| index 379d68721cdf0b6c0641634d8d4376c2ffecea6e..3f5177bf59e7d8c672e7996bf9c3120c6247a879 100644 |
| --- a/sdk/lib/_internal/compiler/implementation/js_emitter/container_builder.dart |
| +++ b/sdk/lib/_internal/compiler/implementation/js_emitter/container_builder.dart |
| @@ -359,6 +359,9 @@ class ContainerBuilder extends CodeEmitterHelper { |
| member.isConstructor || |
| member.isAccessor; |
| String tearOffName; |
| + |
| + final bool canBeReflected = backend.isAccessibleByReflection(member); |
| + |
| if (isNotApplyTarget) { |
| canTearOff = false; |
| } else if (member.isInstanceMember) { |
| @@ -367,19 +370,21 @@ class ContainerBuilder extends CodeEmitterHelper { |
| isClosure = true; |
| } else { |
| // Careful with operators. |
| - canTearOff = compiler.codegenWorld.hasInvokedGetter(member, compiler); |
| + canTearOff = |
| + compiler.codegenWorld.hasInvokedGetter(member, compiler) || |
| + canBeReflected; |
| assert(!needsSuperGetter(member) || canTearOff); |
| tearOffName = namer.getterName(member); |
| } |
| } else { |
| canTearOff = |
| - compiler.codegenWorld.staticFunctionsNeedingGetter.contains(member); |
| + compiler.codegenWorld.staticFunctionsNeedingGetter.contains(member) || |
|
herhut
2014/05/08 14:21:55
long line
floitsch
2014/05/08 15:40:14
Not for me.
|
| + canBeReflected; |
| tearOffName = namer.getStaticClosureName(member); |
| } |
| final bool canBeApplied = compiler.enabledFunctionApply && |
| compiler.world.getMightBePassedToApply(member); |
| - final bool canBeReflected = backend.isAccessibleByReflection(member); |
| final bool needStructuredInfo = |
| canTearOff || canBeReflected || canBeApplied; |
| if (!needStructuredInfo) { |