Chromium Code Reviews| 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); |