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:
yangguo@chromium.org 2013-06-28 11:24:27 +00:00
parent bf632a8364
commit 41cac47d57
2 changed files with 6 additions and 1 deletions

View File

@ -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

View File

@ -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_;