| Index: src/parser.cc
|
| diff --git a/src/parser.cc b/src/parser.cc
|
| index df6dc3b8445ae12c0ea7e29b23035625974be4e4..e8d20bfa63896b37cc111ed781c2df10ac01b337 100644
|
| --- a/src/parser.cc
|
| +++ b/src/parser.cc
|
| @@ -4521,6 +4521,7 @@ FunctionLiteral* Parser::ParseFunctionLiteral(Handle<String> function_name,
|
| // The heuristics are:
|
| // - It must not have been prohibited by the caller to Parse (some callers
|
| // need a full AST).
|
| + // - The outer scope must allow lazy compilation of inner functions.
|
| // - The function mustn't be a function expression with an open parenthesis
|
| // before; we consider that a hint that the function will be called
|
| // immediately, and it would be a waste of time to make it lazily
|
| @@ -4528,6 +4529,7 @@ FunctionLiteral* Parser::ParseFunctionLiteral(Handle<String> function_name,
|
| // These are all things we can know at this point, without looking at the
|
| // function itself.
|
| bool is_lazily_compiled = (mode() == PARSE_LAZILY &&
|
| + top_scope_->AllowsLazyCompilation() &&
|
| !parenthesized_function_);
|
| parenthesized_function_ = false; // The bit was set for this function only.
|
|
|
|
|