| Index: src/parsing/parser.cc
|
| diff --git a/src/parsing/parser.cc b/src/parsing/parser.cc
|
| index 262ce278cf94cf256b5424a5261faa3f2f3cb121..a5eb0d20c0fec567fca9cda5990b23f83cf86b76 100644
|
| --- a/src/parsing/parser.cc
|
| +++ b/src/parsing/parser.cc
|
| @@ -582,7 +582,8 @@ Expression* Parser::NewV8Intrinsic(const AstRawString* name,
|
| Parser::Parser(ParseInfo* info)
|
| : ParserBase<Parser>(info->zone(), &scanner_, info->stack_limit(),
|
| info->extension(), info->ast_value_factory(),
|
| - info->isolate()->counters()->runtime_call_stats()),
|
| + info->isolate()->counters()->runtime_call_stats(),
|
| + true),
|
| scanner_(info->unicode_cache()),
|
| reusable_preparser_(nullptr),
|
| original_scope_(nullptr),
|
| @@ -591,7 +592,6 @@ Parser::Parser(ParseInfo* info)
|
| compile_options_(info->compile_options()),
|
| cached_parse_data_(nullptr),
|
| total_preparse_skipped_(0),
|
| - parsing_on_main_thread_(true),
|
| log_(nullptr) {
|
| // Even though we were passed ParseInfo, we should not store it in
|
| // Parser - this makes sure that Isolate is not accidentally accessed via
|
| @@ -664,7 +664,6 @@ FunctionLiteral* Parser::ParseProgram(Isolate* isolate, ParseInfo* info) {
|
| // It's OK to use the Isolate & counters here, since this function is only
|
| // called in the main thread.
|
| DCHECK(parsing_on_main_thread_);
|
| -
|
| RuntimeCallTimerScope runtime_timer(
|
| runtime_call_stats_, info->is_eval() ? &RuntimeCallStats::ParseEval
|
| : &RuntimeCallStats::ParseProgram);
|
| @@ -2577,8 +2576,11 @@ FunctionLiteral* Parser::ParseFunctionLiteral(
|
| bool is_lazy_top_level_function =
|
| can_preparse && impl()->AllowsLazyParsingWithoutUnresolvedVariables();
|
|
|
| - RuntimeCallTimerScope runtime_timer(runtime_call_stats_,
|
| - &RuntimeCallStats::ParseFunctionLiteral);
|
| + RuntimeCallTimerScope runtime_timer(
|
| + runtime_call_stats_,
|
| + parsing_on_main_thread_
|
| + ? &RuntimeCallStats::ParseFunctionLiteral
|
| + : &RuntimeCallStats::ParseBackgroundFunctionLiteral);
|
|
|
| // Determine whether we can still lazy parse the inner function.
|
| // The preconditions are:
|
| @@ -2787,9 +2789,9 @@ Parser::LazyParsingResult Parser::SkipFunction(
|
| TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("v8.compile"), "V8.PreParse");
|
|
|
| if (reusable_preparser_ == NULL) {
|
| - reusable_preparser_ = new PreParser(zone(), &scanner_, ast_value_factory(),
|
| - &pending_error_handler_,
|
| - runtime_call_stats_, stack_limit_);
|
| + reusable_preparser_ = new PreParser(
|
| + zone(), &scanner_, stack_limit_, ast_value_factory(),
|
| + &pending_error_handler_, runtime_call_stats_, parsing_on_main_thread_);
|
| #define SET_ALLOW(name) reusable_preparser_->set_allow_##name(allow_##name());
|
| SET_ALLOW(natives);
|
| SET_ALLOW(harmony_do_expressions);
|
|
|