Commit a443998e authored by jochen's avatar jochen Committed by Commit bot

Make sure that the TimerEventScope is destroyed before we signal completion

Otherwise, the isolate that is referenced by the scope might already be
gone

BUG=v8:3608
R=yangguo@chromium.org
LOG=n

Review URL: https://codereview.chromium.org/836413005

Cr-Commit-Position: refs/heads/master@{#25993}
parent ad0069e8
...@@ -53,25 +53,28 @@ class OptimizingCompilerThread::CompileTask : public v8::Task { ...@@ -53,25 +53,28 @@ class OptimizingCompilerThread::CompileTask : public v8::Task {
DisallowHandleAllocation no_handles; DisallowHandleAllocation no_handles;
DisallowHandleDereference no_deref; DisallowHandleDereference no_deref;
TimerEventScope<TimerEventRecompileConcurrent> timer(isolate_);
OptimizingCompilerThread* thread = isolate_->optimizing_compiler_thread(); OptimizingCompilerThread* thread = isolate_->optimizing_compiler_thread();
if (thread->recompilation_delay_ != 0) { {
base::OS::Sleep(thread->recompilation_delay_); TimerEventScope<TimerEventRecompileConcurrent> timer(isolate_);
}
if (thread->recompilation_delay_ != 0) {
base::OS::Sleep(thread->recompilation_delay_);
}
StopFlag flag; StopFlag flag;
OptimizedCompileJob* job = thread->NextInput(&flag); OptimizedCompileJob* job = thread->NextInput(&flag);
if (flag == CONTINUE) { if (flag == CONTINUE) {
thread->CompileNext(job); thread->CompileNext(job);
} else { } else {
AllowHandleDereference allow_handle_dereference; AllowHandleDereference allow_handle_dereference;
if (!job->info()->is_osr()) { if (!job->info()->is_osr()) {
DisposeOptimizedCompileJob(job, true); DisposeOptimizedCompileJob(job, true);
}
} }
} }
bool signal = false; bool signal = false;
{ {
base::LockGuard<base::RecursiveMutex> lock(&thread->task_count_mutex_); base::LockGuard<base::RecursiveMutex> lock(&thread->task_count_mutex_);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment