Avoid data race in debug mode on the parallel thread.
R=jkummerow@chromium.org BUG= Review URL: https://codereview.chromium.org/18194004 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15376 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
This commit is contained in:
parent
bf632a8364
commit
41cac47d57
@ -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
|
||||
|
@ -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_;
|
||||
|
Loading…
Reference in New Issue
Block a user