Chromium Code Reviews| Index: src/isolate.cc |
| diff --git a/src/isolate.cc b/src/isolate.cc |
| index 4daeddcb67602f13387715fa1cf23b17e8bb9175..d151e6824a60e3bec876b96c1556cbc07fa01a3a 100644 |
| --- a/src/isolate.cc |
| +++ b/src/isolate.cc |
| @@ -336,6 +336,9 @@ Isolate* Isolate::default_isolate_ = NULL; |
| Thread::LocalStorageKey Isolate::isolate_key_; |
| Thread::LocalStorageKey Isolate::thread_id_key_; |
| Thread::LocalStorageKey Isolate::per_isolate_thread_data_key_; |
| +#ifdef DEBUG |
| +Thread::LocalStorageKey PerThreadAssertData::thread_local_key; |
| +#endif // DEBUG |
| Mutex* Isolate::process_wide_mutex_ = OS::CreateMutex(); |
| Isolate::ThreadDataTable* Isolate::thread_data_table_ = NULL; |
| Atomic32 Isolate::isolate_counter_ = 0; |
| @@ -392,6 +395,9 @@ void Isolate::EnsureDefaultIsolate() { |
| isolate_key_ = Thread::CreateThreadLocalKey(); |
| thread_id_key_ = Thread::CreateThreadLocalKey(); |
| per_isolate_thread_data_key_ = Thread::CreateThreadLocalKey(); |
| +#ifdef DEBUG |
| + PerThreadAssertData::thread_local_key = Thread::CreateThreadLocalKey(); |
|
Sven Panne
2013/06/03 09:58:23
Hmmm, I think all this key creation code should li
Yang
2013/06/03 13:37:15
Will do in a follow-up CL.
|
| +#endif // DEBUG |
| thread_data_table_ = new Isolate::ThreadDataTable(); |
| default_isolate_ = new Isolate(); |
| } |
| @@ -889,7 +895,7 @@ void Isolate::PrintStack(StringStream* accumulator) { |
| return; |
| } |
| // The MentionedObjectCache is not GC-proof at the moment. |
| - AssertNoAllocation nogc; |
| + DisallowHeapAllocation no_gc; |
| ASSERT(StringStream::IsMentionedObjectCacheClear()); |
| // Avoid printing anything if there are no frames. |
| @@ -974,7 +980,7 @@ bool Isolate::MayNamedAccess(JSObject* receiver, Object* key, |
| ASSERT(receiver->IsAccessCheckNeeded()); |
| // The callers of this method are not expecting a GC. |
| - AssertNoAllocation no_gc; |
| + DisallowHeapAllocation no_gc; |
| // Skip checks for hidden properties access. Note, we do not |
| // require existence of a context in this case. |
| @@ -1780,9 +1786,6 @@ Isolate::Isolate() |
| memset(&js_spill_information_, 0, sizeof(js_spill_information_)); |
| memset(code_kind_statistics_, 0, |
| sizeof(code_kind_statistics_[0]) * Code::NUMBER_OF_KINDS); |
| - |
| - compiler_thread_handle_deref_state_ = HandleDereferenceGuard::ALLOW; |
| - execution_thread_handle_deref_state_ = HandleDereferenceGuard::ALLOW; |
| #endif |
| #ifdef ENABLE_DEBUGGER_SUPPORT |
| @@ -2405,34 +2408,6 @@ void Isolate::UnlinkDeferredHandles(DeferredHandles* deferred) { |
| } |
| -#ifdef DEBUG |
| -HandleDereferenceGuard::State Isolate::HandleDereferenceGuardState() { |
| - if (execution_thread_handle_deref_state_ == HandleDereferenceGuard::ALLOW && |
| - compiler_thread_handle_deref_state_ == HandleDereferenceGuard::ALLOW) { |
| - // Short-cut to avoid polling thread id. |
| - return HandleDereferenceGuard::ALLOW; |
| - } |
| - if (FLAG_parallel_recompilation && |
| - optimizing_compiler_thread()->IsOptimizerThread()) { |
| - return compiler_thread_handle_deref_state_; |
| - } else { |
| - return execution_thread_handle_deref_state_; |
| - } |
| -} |
| - |
| - |
| -void Isolate::SetHandleDereferenceGuardState( |
| - HandleDereferenceGuard::State state) { |
| - if (FLAG_parallel_recompilation && |
| - optimizing_compiler_thread()->IsOptimizerThread()) { |
| - compiler_thread_handle_deref_state_ = state; |
| - } else { |
| - execution_thread_handle_deref_state_ = state; |
| - } |
| -} |
| -#endif |
| - |
| - |
| HStatistics* Isolate::GetHStatistics() { |
| if (hstatistics() == NULL) set_hstatistics(new HStatistics()); |
| return hstatistics(); |