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 2c16cddd06193d66c56d0097107e15fba92fd7fc..037847ac95f4f6307ff175cc189ca42f558c1033 100644 |
--- a/src/compiler-dispatcher/compiler-dispatcher-job.cc |
+++ b/src/compiler-dispatcher/compiler-dispatcher-job.cc |
@@ -6,6 +6,7 @@ |
#include "src/assert-scope.h" |
#include "src/compilation-info.h" |
+#include "src/compiler-dispatcher/compiler-dispatcher-tracer.h" |
#include "src/compiler.h" |
#include "src/global-handles.h" |
#include "src/isolate.h" |
@@ -23,6 +24,7 @@ CompilerDispatcherJob::CompilerDispatcherJob(Isolate* isolate, |
Handle<SharedFunctionInfo> shared, |
size_t max_stack_size) |
: isolate_(isolate), |
+ tracer_(isolate_->compiler_dispatcher_tracer()), |
shared_(Handle<SharedFunctionInfo>::cast( |
isolate_->global_handles()->Create(*shared))), |
max_stack_size_(max_stack_size), |
@@ -45,6 +47,7 @@ CompilerDispatcherJob::~CompilerDispatcherJob() { |
void CompilerDispatcherJob::PrepareToParseOnMainThread() { |
DCHECK(ThreadId::Current().Equals(isolate_->thread_id())); |
DCHECK(status() == CompileJobStatus::kInitial); |
+ COMPILER_DISPATCHER_TRACE_SCOPE(tracer_, kPrepareToParse); |
HandleScope scope(isolate_); |
unicode_cache_.reset(new UnicodeCache()); |
zone_.reset(new Zone(isolate_->allocator())); |
@@ -92,6 +95,9 @@ void CompilerDispatcherJob::Parse() { |
DCHECK(can_parse_on_background_thread_ || |
ThreadId::Current().Equals(isolate_->thread_id())); |
DCHECK(status() == CompileJobStatus::kReadyToParse); |
+ COMPILER_DISPATCHER_TRACE_SCOPE_WITH_NUM( |
+ tracer_, kParse, |
+ parse_info_->end_position() - parse_info_->start_position()); |
DisallowHeapAllocation no_allocation; |
DisallowHandleAllocation no_handles; |
@@ -119,6 +125,7 @@ void CompilerDispatcherJob::Parse() { |
bool CompilerDispatcherJob::FinalizeParsingOnMainThread() { |
DCHECK(ThreadId::Current().Equals(isolate_->thread_id())); |
DCHECK(status() == CompileJobStatus::kParsed); |
+ COMPILER_DISPATCHER_TRACE_SCOPE(tracer_, kFinalizeParsing); |
if (!source_.is_null()) { |
i::GlobalHandles::Destroy(Handle<Object>::cast(source_).location()); |
@@ -170,6 +177,7 @@ bool CompilerDispatcherJob::FinalizeParsingOnMainThread() { |
bool CompilerDispatcherJob::PrepareToCompileOnMainThread() { |
DCHECK(ThreadId::Current().Equals(isolate_->thread_id())); |
DCHECK(status() == CompileJobStatus::kReadyToAnalyse); |
+ COMPILER_DISPATCHER_TRACE_SCOPE(tracer_, kPrepareToCompile); |
compile_info_.reset( |
new CompilationInfo(parse_info_.get(), Handle<JSFunction>::null())); |
@@ -197,6 +205,8 @@ void CompilerDispatcherJob::Compile() { |
DCHECK(status() == CompileJobStatus::kReadyToCompile); |
DCHECK(can_compile_on_background_thread_ || |
ThreadId::Current().Equals(isolate_->thread_id())); |
+ COMPILER_DISPATCHER_TRACE_SCOPE_WITH_NUM( |
+ tracer_, kCompile, parse_info_->literal()->ast_node_count()); |
// Disallowing of handle dereference and heap access dealt with in |
// CompilationJob::ExecuteJob. |
@@ -215,6 +225,7 @@ void CompilerDispatcherJob::Compile() { |
bool CompilerDispatcherJob::FinalizeCompilingOnMainThread() { |
DCHECK(ThreadId::Current().Equals(isolate_->thread_id())); |
DCHECK(status() == CompileJobStatus::kCompiled); |
+ COMPILER_DISPATCHER_TRACE_SCOPE(tracer_, kFinalizeCompiling); |
if (compile_job_->state() == CompilationJob::State::kFailed || |
!Compiler::FinalizeCompilationJob(compile_job_.release())) { |