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

Side by Side Diff: src/compiler-dispatcher/compiler-dispatcher-job.cc

Issue 2686673002: [Compiler] Avoid blocking on inner function parallel compilation. (Closed)
Patch Set: Rebase Created 3 years, 10 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 unified diff | Download patch
OLDNEW
1 // Copyright 2016 the V8 project authors. All rights reserved. 1 // Copyright 2016 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "src/compiler-dispatcher/compiler-dispatcher-job.h" 5 #include "src/compiler-dispatcher/compiler-dispatcher-job.h"
6 6
7 #include "src/assert-scope.h" 7 #include "src/assert-scope.h"
8 #include "src/compilation-info.h" 8 #include "src/compilation-info.h"
9 #include "src/compiler-dispatcher/compiler-dispatcher-tracer.h" 9 #include "src/compiler-dispatcher/compiler-dispatcher-tracer.h"
10 #include "src/compiler.h" 10 #include "src/compiler.h"
11 #include "src/flags.h" 11 #include "src/flags.h"
12 #include "src/global-handles.h" 12 #include "src/global-handles.h"
13 #include "src/isolate.h" 13 #include "src/isolate.h"
14 #include "src/objects-inl.h" 14 #include "src/objects-inl.h"
15 #include "src/parsing/parse-info.h" 15 #include "src/parsing/parse-info.h"
16 #include "src/parsing/parser.h" 16 #include "src/parsing/parser.h"
17 #include "src/parsing/scanner-character-streams.h" 17 #include "src/parsing/scanner-character-streams.h"
18 #include "src/unicode-cache.h" 18 #include "src/unicode-cache.h"
19 #include "src/utils.h" 19 #include "src/utils.h"
20 #include "src/zone/zone.h"
21 20
22 namespace v8 { 21 namespace v8 {
23 namespace internal { 22 namespace internal {
24 23
25 namespace { 24 namespace {
26 25
27 class OneByteWrapper : public v8::String::ExternalOneByteStringResource { 26 class OneByteWrapper : public v8::String::ExternalOneByteStringResource {
28 public: 27 public:
29 OneByteWrapper(const void* data, int length) : data_(data), length_(length) {} 28 OneByteWrapper(const void* data, int length) : data_(data), length_(length) {}
30 ~OneByteWrapper() override = default; 29 ~OneByteWrapper() override = default;
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
78 Handle<Script> script(Script::cast(shared_->script()), isolate_); 77 Handle<Script> script(Script::cast(shared_->script()), isolate_);
79 Handle<String> source(String::cast(script->source()), isolate_); 78 Handle<String> source(String::cast(script->source()), isolate_);
80 if (trace_compiler_dispatcher_jobs_) { 79 if (trace_compiler_dispatcher_jobs_) {
81 PrintF("CompilerDispatcherJob[%p] created for ", static_cast<void*>(this)); 80 PrintF("CompilerDispatcherJob[%p] created for ", static_cast<void*>(this));
82 shared_->ShortPrint(); 81 shared_->ShortPrint();
83 PrintF(" in initial state.\n"); 82 PrintF(" in initial state.\n");
84 } 83 }
85 } 84 }
86 85
87 CompilerDispatcherJob::CompilerDispatcherJob( 86 CompilerDispatcherJob::CompilerDispatcherJob(
88 Isolate* isolate, CompilerDispatcherTracer* tracer, 87 Isolate* isolate, CompilerDispatcherTracer* tracer, Handle<Script> script,
89 Handle<SharedFunctionInfo> shared, FunctionLiteral* literal, 88 Handle<SharedFunctionInfo> shared, FunctionLiteral* literal,
90 std::shared_ptr<Zone> parse_zone, 89 std::shared_ptr<Zone> parse_zone,
91 std::shared_ptr<DeferredHandles> parse_handles, 90 std::shared_ptr<DeferredHandles> parse_handles,
92 std::shared_ptr<DeferredHandles> compile_handles, size_t max_stack_size) 91 std::shared_ptr<DeferredHandles> compile_handles, size_t max_stack_size)
93 : status_(CompileJobStatus::kAnalyzed), 92 : status_(CompileJobStatus::kAnalyzed),
94 isolate_(isolate), 93 isolate_(isolate),
95 tracer_(tracer), 94 tracer_(tracer),
96 shared_(Handle<SharedFunctionInfo>::cast( 95 shared_(Handle<SharedFunctionInfo>::cast(
97 isolate_->global_handles()->Create(*shared))), 96 isolate_->global_handles()->Create(*shared))),
98 max_stack_size_(max_stack_size), 97 max_stack_size_(max_stack_size),
99 parse_info_(new ParseInfo(shared_)), 98 parse_info_(new ParseInfo(shared_)),
100 parse_zone_(parse_zone), 99 parse_zone_(parse_zone),
101 compile_info_(new CompilationInfo(parse_info_->zone(), parse_info_.get(), 100 compile_info_(new CompilationInfo(parse_info_->zone(), parse_info_.get(),
102 Handle<JSFunction>::null())), 101 Handle<JSFunction>::null())),
103 trace_compiler_dispatcher_jobs_(FLAG_trace_compiler_dispatcher_jobs) { 102 trace_compiler_dispatcher_jobs_(FLAG_trace_compiler_dispatcher_jobs) {
104 parse_info_->set_literal(literal); 103 parse_info_->set_literal(literal);
104 parse_info_->set_script(script);
105 parse_info_->set_deferred_handles(parse_handles); 105 parse_info_->set_deferred_handles(parse_handles);
106 compile_info_->set_deferred_handles(compile_handles); 106 compile_info_->set_deferred_handles(compile_handles);
107 107
108 if (trace_compiler_dispatcher_jobs_) { 108 if (trace_compiler_dispatcher_jobs_) {
109 PrintF("CompilerDispatcherJob[%p] created for ", static_cast<void*>(this)); 109 PrintF("CompilerDispatcherJob[%p] created for ", static_cast<void*>(this));
110 shared_->ShortPrint(); 110 shared_->ShortPrint();
111 PrintF(" in Analyzed state.\n"); 111 PrintF(" in Analyzed state.\n");
112 } 112 }
113 } 113 }
114 114
(...skipping 348 matching lines...) Expand 10 before | Expand all | Expand 10 after
463 return 0.0; 463 return 0.0;
464 } 464 }
465 465
466 void CompilerDispatcherJob::ShortPrint() { 466 void CompilerDispatcherJob::ShortPrint() {
467 DCHECK(ThreadId::Current().Equals(isolate_->thread_id())); 467 DCHECK(ThreadId::Current().Equals(isolate_->thread_id()));
468 shared_->ShortPrint(); 468 shared_->ShortPrint();
469 } 469 }
470 470
471 } // namespace internal 471 } // namespace internal
472 } // namespace v8 472 } // namespace v8
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698