diff options
Diffstat (limited to 'deps/v8/src/optimizing-compiler-thread.cc')
-rw-r--r-- | deps/v8/src/optimizing-compiler-thread.cc | 25 |
1 files changed, 24 insertions, 1 deletions
diff --git a/deps/v8/src/optimizing-compiler-thread.cc b/deps/v8/src/optimizing-compiler-thread.cc index 06018dd1a9..e41c352f48 100644 --- a/deps/v8/src/optimizing-compiler-thread.cc +++ b/deps/v8/src/optimizing-compiler-thread.cc @@ -48,6 +48,8 @@ void OptimizingCompilerThread::Run() { while (true) { input_queue_semaphore_->Wait(); + Logger::TimerEventScope timer( + isolate_, Logger::TimerEventScope::v8_recompile_parallel); if (Acquire_Load(&stop_thread_)) { stop_semaphore_->Signal(); if (FLAG_trace_parallel_recompilation) { @@ -72,7 +74,13 @@ void OptimizingCompilerThread::Run() { USE(status); output_queue_.Enqueue(optimizing_compiler); - isolate_->stack_guard()->RequestCodeReadyEvent(); + if (!FLAG_manual_parallel_recompilation) { + isolate_->stack_guard()->RequestCodeReadyEvent(); + } else { + // In manual mode, do not trigger a code ready event. + // Instead, wait for the optimized functions to be installed manually. + output_queue_semaphore_->Signal(); + } if (FLAG_trace_parallel_recompilation) { time_spent_compiling_ += OS::Ticks() - compiling_start; @@ -99,6 +107,9 @@ void OptimizingCompilerThread::InstallOptimizedFunctions() { HandleScope handle_scope(isolate_); int functions_installed = 0; while (!output_queue_.IsEmpty()) { + if (FLAG_manual_parallel_recompilation) { + output_queue_semaphore_->Wait(); + } OptimizingCompiler* compiler = NULL; output_queue_.Dequeue(&compiler); Compiler::InstallOptimizedCode(compiler); @@ -110,6 +121,18 @@ void OptimizingCompilerThread::InstallOptimizedFunctions() { } +Handle<SharedFunctionInfo> + OptimizingCompilerThread::InstallNextOptimizedFunction() { + ASSERT(FLAG_manual_parallel_recompilation); + output_queue_semaphore_->Wait(); + OptimizingCompiler* compiler = NULL; + output_queue_.Dequeue(&compiler); + Handle<SharedFunctionInfo> shared = compiler->info()->shared_info(); + Compiler::InstallOptimizedCode(compiler); + return shared; +} + + void OptimizingCompilerThread::QueueForOptimization( OptimizingCompiler* optimizing_compiler) { input_queue_.Enqueue(optimizing_compiler); |