| Index: src/isolate.cc
|
| diff --git a/src/isolate.cc b/src/isolate.cc
|
| index 17762b2b0bf9b163cf405531ef97773e53e0495e..74a77c6d4a3a3f0c0b6f7331d277ad3f1f7bf8b4 100644
|
| --- a/src/isolate.cc
|
| +++ b/src/isolate.cc
|
| @@ -343,35 +343,23 @@ Thread::LocalStorageKey Isolate::per_isolate_thread_data_key_;
|
| #ifdef DEBUG
|
| Thread::LocalStorageKey PerThreadAssertScopeBase::thread_local_key;
|
| #endif // DEBUG
|
| -RecursiveMutex Isolate::process_wide_mutex_;
|
| +Mutex Isolate::process_wide_mutex_;
|
| Isolate::ThreadDataTable* Isolate::thread_data_table_ = NULL;
|
| Atomic32 Isolate::isolate_counter_ = 0;
|
|
|
| -Isolate::PerIsolateThreadData* Isolate::AllocatePerIsolateThreadData(
|
| - ThreadId thread_id) {
|
| - ASSERT(!thread_id.Equals(ThreadId::Invalid()));
|
| - PerIsolateThreadData* per_thread = new PerIsolateThreadData(this, thread_id);
|
| - {
|
| - LockGuard<RecursiveMutex> 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);
|
| - }
|
| - return per_thread;
|
| -}
|
| -
|
| -
|
| Isolate::PerIsolateThreadData*
|
| Isolate::FindOrAllocatePerThreadDataForThisThread() {
|
| ThreadId thread_id = ThreadId::Current();
|
| PerIsolateThreadData* per_thread = NULL;
|
| {
|
| - LockGuard<RecursiveMutex> lock_guard(&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);
|
| + per_thread = new PerIsolateThreadData(this, thread_id);
|
| + thread_data_table_->Insert(per_thread);
|
| }
|
| }
|
| + ASSERT(thread_data_table_->Lookup(this, thread_id) == per_thread);
|
| return per_thread;
|
| }
|
|
|
| @@ -386,7 +374,7 @@ Isolate::PerIsolateThreadData* Isolate::FindPerThreadDataForThread(
|
| ThreadId thread_id) {
|
| PerIsolateThreadData* per_thread = NULL;
|
| {
|
| - LockGuard<RecursiveMutex> lock_guard(&process_wide_mutex_);
|
| + LockGuard<Mutex> lock_guard(&process_wide_mutex_);
|
| per_thread = thread_data_table_->Lookup(this, thread_id);
|
| }
|
| return per_thread;
|
| @@ -394,7 +382,7 @@ Isolate::PerIsolateThreadData* Isolate::FindPerThreadDataForThread(
|
|
|
|
|
| void Isolate::EnsureDefaultIsolate() {
|
| - LockGuard<RecursiveMutex> lock_guard(&process_wide_mutex_);
|
| + LockGuard<Mutex> lock_guard(&process_wide_mutex_);
|
| if (default_isolate_ == NULL) {
|
| isolate_key_ = Thread::CreateThreadLocalKey();
|
| thread_id_key_ = Thread::CreateThreadLocalKey();
|
| @@ -1717,15 +1705,6 @@ void Isolate::ThreadDataTable::Remove(PerIsolateThreadData* data) {
|
| }
|
|
|
|
|
| -void Isolate::ThreadDataTable::Remove(Isolate* isolate,
|
| - ThreadId thread_id) {
|
| - PerIsolateThreadData* data = Lookup(isolate, thread_id);
|
| - if (data != NULL) {
|
| - Remove(data);
|
| - }
|
| -}
|
| -
|
| -
|
| void Isolate::ThreadDataTable::RemoveAllThreads(Isolate* isolate) {
|
| PerIsolateThreadData* data = list_;
|
| while (data != NULL) {
|
| @@ -1864,7 +1843,7 @@ void Isolate::TearDown() {
|
|
|
| Deinit();
|
|
|
| - { LockGuard<RecursiveMutex> lock_guard(&process_wide_mutex_);
|
| + { LockGuard<Mutex> lock_guard(&process_wide_mutex_);
|
| thread_data_table_->RemoveAllThreads(this);
|
| }
|
|
|
|
|