Index: src/x64/full-codegen-x64.cc |
diff --git a/src/x64/full-codegen-x64.cc b/src/x64/full-codegen-x64.cc |
index 4bf84a8585c0b8e8456bd0c16e4e7d4b2bc9fe32..45ffefe8358d8f56a75f40f84917a49fff20f52c 100644 |
--- a/src/x64/full-codegen-x64.cc |
+++ b/src/x64/full-codegen-x64.cc |
@@ -2247,6 +2247,15 @@ void FullCodeGenerator::VisitCall(Call* expr) { |
} |
} |
} else { |
+ // Call to some other expression. If the expression is an anonymous |
+ // function literal not called in a loop, mark it as one that should |
+ // also use the full code generator. |
+ FunctionLiteral* lit = fun->AsFunctionLiteral(); |
+ if (lit != NULL && |
+ lit->name()->Equals(isolate()->heap()->empty_string()) && |
+ loop_depth() == 0) { |
+ lit->set_try_full_codegen(true); |
+ } |
{ PreservePositionScope scope(masm()->positions_recorder()); |
VisitForStackValue(fun); |
} |