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

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

Issue 223403003: Use closure tracer to identify closures that are not passed to Function.apply (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Fix regression in emitted meta data Created 6 years, 9 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: 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 eeb19bef119e6fa8d1ae14461570a71f2fc863ea..66e0a857ec57cffd6075c4bfbb00169ea5ae9587 100644
--- a/sdk/lib/_internal/compiler/implementation/js_emitter/container_builder.dart
+++ b/sdk/lib/_internal/compiler/implementation/js_emitter/container_builder.dart
@@ -353,8 +353,9 @@ class ContainerBuilder extends CodeEmitterHelper {
bool needsStubs = !parameters.optionalParameters.isEmpty;
bool canTearOff = false;
bool isClosure = false;
- bool isNotApplyTarget =
- !member.isFunction() || member.isConstructor() || member.isAccessor();
+ bool isNotApplyTarget = !member.isFunction() ||
+ member.isConstructor() ||
+ member.isAccessor();
String tearOffName;
if (isNotApplyTarget) {
canTearOff = false;
@@ -373,9 +374,9 @@ class ContainerBuilder extends CodeEmitterHelper {
compiler.codegenWorld.staticFunctionsNeedingGetter.contains(member);
tearOffName = namer.getStaticClosureName(member);
}
- final bool canBeApplied = !isNotApplyTarget &&
- compiler.enabledFunctionApply &&
- (canTearOff || member.name == 'call' || !member.isInstanceMember());
+ final bool canBeApplied = compiler.enabledFunctionApply &&
+ compiler.world.getMightBePassedToApply(member);
+
final bool canBeReflected = backend.isAccessibleByReflection(member);
final bool needStructuredInfo =
canTearOff || canBeReflected || canBeApplied;

Powered by Google App Engine
This is Rietveld 408576698