diff --git a/src/optimizing-compiler-thread.cc b/src/optimizing-compiler-thread.cc index b9ff7d83ec..dbf9ad7cdc 100644 --- a/src/optimizing-compiler-thread.cc +++ b/src/optimizing-compiler-thread.cc @@ -39,7 +39,9 @@ namespace internal { void OptimizingCompilerThread::Run() { #ifdef DEBUG - thread_id_ = ThreadId::Current().ToInteger(); + { ScopedLock lock(thread_id_mutex_); + thread_id_ = ThreadId::Current().ToInteger(); + } #endif Isolate::SetIsolateThreadLocals(isolate_, NULL); DisallowHeapAllocation no_allocation; @@ -156,6 +158,7 @@ void OptimizingCompilerThread::QueueForOptimization( #ifdef DEBUG bool OptimizingCompilerThread::IsOptimizerThread() { if (!FLAG_parallel_recompilation) return false; + ScopedLock lock(thread_id_mutex_); return ThreadId::Current().ToInteger() == thread_id_; } #endif diff --git a/src/optimizing-compiler-thread.h b/src/optimizing-compiler-thread.h index 004fce7ada..59c94cb214 100644 --- a/src/optimizing-compiler-thread.h +++ b/src/optimizing-compiler-thread.h @@ -46,6 +46,7 @@ class OptimizingCompilerThread : public Thread { Thread("OptimizingCompilerThread"), #ifdef DEBUG thread_id_(0), + thread_id_mutex_(OS::CreateMutex()), #endif isolate_(isolate), stop_semaphore_(OS::CreateSemaphore(0)), @@ -89,6 +90,7 @@ class OptimizingCompilerThread : public Thread { private: #ifdef DEBUG int thread_id_; + Mutex* thread_id_mutex_; #endif Isolate* isolate_;