Index: src/isolate.cc |
diff --git a/src/isolate.cc b/src/isolate.cc |
index 774ad5ca5647271853a94320bb8be2d58b887765..58a3071450af98783f7564374652f1941cd709b6 100644 |
--- a/src/isolate.cc |
+++ b/src/isolate.cc |
@@ -343,7 +343,7 @@ Thread::LocalStorageKey Isolate::per_isolate_thread_data_key_; |
#ifdef DEBUG |
Thread::LocalStorageKey PerThreadAssertScopeBase::thread_local_key; |
#endif // DEBUG |
-Mutex* Isolate::process_wide_mutex_ = OS::CreateMutex(); |
+Mutex Isolate::process_wide_mutex_; |
Isolate::ThreadDataTable* Isolate::thread_data_table_ = NULL; |
Atomic32 Isolate::isolate_counter_ = 0; |
@@ -352,7 +352,7 @@ Isolate::PerIsolateThreadData* Isolate::AllocatePerIsolateThreadData( |
ASSERT(!thread_id.Equals(ThreadId::Invalid())); |
PerIsolateThreadData* per_thread = new PerIsolateThreadData(this, thread_id); |
{ |
- ScopedLock lock(process_wide_mutex_); |
+ LockGuard<Mutex> lock_guard(&process_wide_mutex_); |
ASSERT(thread_data_table_->Lookup(this, thread_id) == NULL); |
thread_data_table_->Insert(per_thread); |
ASSERT(thread_data_table_->Lookup(this, thread_id) == per_thread); |
@@ -366,11 +366,11 @@ Isolate::PerIsolateThreadData* |
ThreadId thread_id = ThreadId::Current(); |
PerIsolateThreadData* per_thread = NULL; |
{ |
- ScopedLock lock(process_wide_mutex_); |
+ LockGuard<Mutex> lock_guard(&process_wide_mutex_); |
per_thread = thread_data_table_->Lookup(this, thread_id); |
- if (per_thread == NULL) { |
- per_thread = AllocatePerIsolateThreadData(thread_id); |
- } |
+ } |
Michael Starzinger
2013/08/28 12:20:54
This introduces a potential race as we might alloc
Benedikt Meurer
2013/08/28 12:43:23
Done.
|
+ if (per_thread == NULL) { |
+ per_thread = AllocatePerIsolateThreadData(thread_id); |
} |
return per_thread; |
} |
@@ -386,7 +386,7 @@ Isolate::PerIsolateThreadData* Isolate::FindPerThreadDataForThread( |
ThreadId thread_id) { |
PerIsolateThreadData* per_thread = NULL; |
{ |
- ScopedLock lock(process_wide_mutex_); |
+ LockGuard<Mutex> lock_guard(&process_wide_mutex_); |
per_thread = thread_data_table_->Lookup(this, thread_id); |
} |
return per_thread; |
@@ -394,7 +394,7 @@ Isolate::PerIsolateThreadData* Isolate::FindPerThreadDataForThread( |
void Isolate::EnsureDefaultIsolate() { |
- ScopedLock lock(process_wide_mutex_); |
+ LockGuard<Mutex> lock_guard(&process_wide_mutex_); |
if (default_isolate_ == NULL) { |
isolate_key_ = Thread::CreateThreadLocalKey(); |
thread_id_key_ = Thread::CreateThreadLocalKey(); |
@@ -1751,10 +1751,8 @@ Isolate::Isolate() |
counters_(NULL), |
code_range_(NULL), |
// Must be initialized early to allow v8::SetResourceConstraints calls. |
Michael Starzinger
2013/08/28 12:20:54
Comment applied to the line being removed, let's a
Benedikt Meurer
2013/08/28 12:43:23
Done.
|
- break_access_(OS::CreateMutex()), |
debugger_initialized_(false), |
// Must be initialized early to allow v8::Debug calls. |
Michael Starzinger
2013/08/28 12:20:54
Comment applied to the line being removed, let's a
Benedikt Meurer
2013/08/28 12:43:23
Done.
|
- debugger_access_(OS::CreateMutex()), |
logger_(NULL), |
stats_table_(NULL), |
stub_cache_(NULL), |
@@ -1854,7 +1852,7 @@ void Isolate::TearDown() { |
Deinit(); |
- { ScopedLock lock(process_wide_mutex_); |
+ { LockGuard<Mutex> lock_guard(&process_wide_mutex_); |
thread_data_table_->RemoveAllThreads(this); |
} |
@@ -2025,10 +2023,6 @@ Isolate::~Isolate() { |
delete handle_scope_implementer_; |
handle_scope_implementer_ = NULL; |
- delete break_access_; |
- break_access_ = NULL; |
- delete debugger_access_; |
- debugger_access_ = NULL; |
delete compilation_cache_; |
compilation_cache_ = NULL; |
@@ -2127,7 +2121,7 @@ void Isolate::InitializeLoggingAndCounters() { |
void Isolate::InitializeDebugger() { |
#ifdef ENABLE_DEBUGGER_SUPPORT |
- ScopedLock lock(debugger_access_); |
+ LockGuard<RecursiveMutex> lock_guard(debugger_access()); |
if (NoBarrier_Load(&debugger_initialized_)) return; |
InitializeLoggingAndCounters(); |
debug_ = new Debug(this); |