| Index: src/compiler-dispatcher/compiler-dispatcher-job.cc
|
| diff --git a/src/compiler-dispatcher/compiler-dispatcher-job.cc b/src/compiler-dispatcher/compiler-dispatcher-job.cc
|
| index 986a822093ff4fa2dcb81da13ec13f9915a158b5..793b02d2614817de99a5784448b8d4ca102e0827 100644
|
| --- a/src/compiler-dispatcher/compiler-dispatcher-job.cc
|
| +++ b/src/compiler-dispatcher/compiler-dispatcher-job.cc
|
| @@ -84,27 +84,26 @@
|
| }
|
| }
|
|
|
| -CompilerDispatcherJob::CompilerDispatcherJob(
|
| - Isolate* isolate, CompilerDispatcherTracer* tracer,
|
| - Handle<SharedFunctionInfo> shared, FunctionLiteral* literal,
|
| - std::shared_ptr<Zone> parse_zone,
|
| - std::shared_ptr<DeferredHandles> parse_handles,
|
| - std::shared_ptr<DeferredHandles> compile_handles, size_t max_stack_size)
|
| +CompilerDispatcherJob::CompilerDispatcherJob(Isolate* isolate,
|
| + CompilerDispatcherTracer* tracer,
|
| + Handle<SharedFunctionInfo> shared,
|
| + FunctionLiteral* literal,
|
| + size_t max_stack_size)
|
| : status_(CompileJobStatus::kAnalyzed),
|
| isolate_(isolate),
|
| tracer_(tracer),
|
| shared_(Handle<SharedFunctionInfo>::cast(
|
| isolate_->global_handles()->Create(*shared))),
|
| max_stack_size_(max_stack_size),
|
| - parse_info_(new ParseInfo(shared_)),
|
| - parse_zone_(parse_zone),
|
| + parse_info_(
|
| + new ParseInfo(Handle<Script>(Script::cast(shared->script())))),
|
| compile_info_(new CompilationInfo(parse_info_->zone(), parse_info_.get(),
|
| Handle<JSFunction>::null())),
|
| trace_compiler_dispatcher_jobs_(FLAG_trace_compiler_dispatcher_jobs) {
|
| parse_info_->set_literal(literal);
|
| - parse_info_->set_deferred_handles(parse_handles);
|
| - compile_info_->set_deferred_handles(compile_handles);
|
| -
|
| + parse_info_->set_shared_info(shared);
|
| + parse_info_->set_function_literal_id(shared->function_literal_id());
|
| + parse_info_->set_language_mode(literal->scope()->language_mode());
|
| if (trace_compiler_dispatcher_jobs_) {
|
| PrintF("CompilerDispatcherJob[%p] created for ", static_cast<void*>(this));
|
| shared_->ShortPrint();
|
| @@ -277,19 +276,17 @@
|
| wrapper_ = Handle<String>::null();
|
| }
|
|
|
| - Handle<Script> script(Script::cast(shared_->script()), isolate_);
|
| - parse_info_->set_script(script);
|
| if (parse_info_->literal() == nullptr) {
|
| - parser_->ReportErrors(isolate_, script);
|
| status_ = CompileJobStatus::kFailed;
|
| } else {
|
| status_ = CompileJobStatus::kReadyToAnalyze;
|
| }
|
| - parser_->UpdateStatistics(isolate_, script);
|
|
|
| DeferredHandleScope scope(isolate_);
|
| {
|
| - parse_info_->ReopenHandlesInNewHandleScope();
|
| + Handle<Script> script(Script::cast(shared_->script()), isolate_);
|
| +
|
| + parse_info_->set_script(script);
|
| Handle<ScopeInfo> outer_scope_info(
|
| handle(ScopeInfo::cast(shared_->outer_scope_info())));
|
| if (outer_scope_info->length() > 0) {
|
| @@ -297,8 +294,9 @@
|
| }
|
| parse_info_->set_shared_info(shared_);
|
|
|
| - // Internalize ast values on the main thread.
|
| - parse_info_->ast_value_factory()->Internalize(isolate_);
|
| + // Do the parsing tasks which need to be done on the main thread. This
|
| + // will also handle parse errors.
|
| + parser_->Internalize(isolate_, script, parse_info_->literal() == nullptr);
|
| parser_->HandleSourceURLComments(isolate_, script);
|
|
|
| parse_info_->set_character_stream(nullptr);
|
| @@ -307,7 +305,7 @@
|
| unicode_cache_.reset();
|
| character_stream_.reset();
|
| }
|
| - parse_info_->set_deferred_handles(scope.Detach());
|
| + handles_from_parsing_.reset(scope.Detach());
|
|
|
| return status_ != CompileJobStatus::kFailed;
|
| }
|
| @@ -395,7 +393,7 @@
|
|
|
| compile_job_.reset();
|
| compile_info_.reset();
|
| - parse_zone_.reset();
|
| + handles_from_parsing_.reset();
|
| parse_info_.reset();
|
|
|
| status_ = CompileJobStatus::kDone;
|
| @@ -411,10 +409,10 @@
|
|
|
| compile_job_.reset();
|
| compile_info_.reset();
|
| - parse_zone_.reset();
|
| parser_.reset();
|
| unicode_cache_.reset();
|
| character_stream_.reset();
|
| + handles_from_parsing_.reset();
|
| parse_info_.reset();
|
|
|
| if (!source_.is_null()) {
|
|
|