summaryrefslogtreecommitdiff
path: root/deps/v8/src/optimizing-compiler-thread.h
diff options
context:
space:
mode:
Diffstat (limited to 'deps/v8/src/optimizing-compiler-thread.h')
-rw-r--r--deps/v8/src/optimizing-compiler-thread.h16
1 files changed, 7 insertions, 9 deletions
diff --git a/deps/v8/src/optimizing-compiler-thread.h b/deps/v8/src/optimizing-compiler-thread.h
index 3088843309..7d60d9bf74 100644
--- a/deps/v8/src/optimizing-compiler-thread.h
+++ b/deps/v8/src/optimizing-compiler-thread.h
@@ -6,6 +6,7 @@
#define V8_OPTIMIZING_COMPILER_THREAD_H_
#include "src/base/atomicops.h"
+#include "src/base/platform/condition-variable.h"
#include "src/base/platform/mutex.h"
#include "src/base/platform/platform.h"
#include "src/base/platform/time.h"
@@ -35,10 +36,10 @@ class OptimizingCompilerThread : public base::Thread {
input_queue_shift_(0),
osr_buffer_capacity_(FLAG_concurrent_recompilation_queue_length + 4),
osr_buffer_cursor_(0),
- task_count_(0),
osr_hits_(0),
osr_attempts_(0),
blocked_jobs_(0),
+ ref_count_(0),
tracing_enabled_(FLAG_trace_concurrent_recompilation),
job_based_recompilation_(FLAG_job_based_recompilation),
recompilation_delay_(FLAG_concurrent_recompilation_delay) {
@@ -96,7 +97,7 @@ class OptimizingCompilerThread : public base::Thread {
void FlushOutputQueue(bool restore_function_code);
void FlushOsrBuffer(bool restore_function_code);
void CompileNext(OptimizedCompileJob* job);
- OptimizedCompileJob* NextInput(StopFlag* flag = NULL);
+ OptimizedCompileJob* NextInput(bool check_if_flushing = false);
// Add a recompilation task for OSR to the cyclic buffer, awaiting OSR entry.
// Tasks evicted from the cyclic buffer are discarded.
@@ -140,18 +141,15 @@ class OptimizingCompilerThread : public base::Thread {
base::TimeDelta time_spent_compiling_;
base::TimeDelta time_spent_total_;
- int task_count_;
- // TODO(jochen): This is currently a RecursiveMutex since both Flush/Stop and
- // Unblock try to get it, but the former methods both can call Unblock. Once
- // job based recompilation is on by default, and the dedicated thread can be
- // removed, this should be refactored to not use a RecursiveMutex.
- base::RecursiveMutex task_count_mutex_;
-
int osr_hits_;
int osr_attempts_;
int blocked_jobs_;
+ int ref_count_;
+ base::Mutex ref_count_mutex_;
+ base::ConditionVariable ref_count_zero_;
+
// Copies of FLAG_trace_concurrent_recompilation,
// FLAG_concurrent_recompilation_delay and
// FLAG_job_based_recompilation that will be used from the background thread.