diff options
Diffstat (limited to 'runtime/instrumentation.cc')
| -rw-r--r-- | runtime/instrumentation.cc | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/runtime/instrumentation.cc b/runtime/instrumentation.cc index 12f1522386..42f940ecdd 100644 --- a/runtime/instrumentation.cc +++ b/runtime/instrumentation.cc @@ -164,7 +164,8 @@ Instrumentation::Instrumentation() have_watched_frame_pop_listeners_(false), have_branch_listeners_(false), have_exception_handled_listeners_(false), - deoptimized_methods_lock_("deoptimized methods lock", kGenericBottomLock), + deoptimized_methods_lock_(new ReaderWriterMutex("deoptimized methods lock", + kGenericBottomLock)), deoptimization_enabled_(false), interpreter_handler_table_(kMainHandlerTable), quick_alloc_entry_points_instrumentation_counter_(0), @@ -743,7 +744,7 @@ void Instrumentation::ConfigureStubs(const char* key, InstrumentationLevel desir // Restore stack only if there is no method currently deoptimized. bool empty; { - ReaderMutexLock mu(self, deoptimized_methods_lock_); + ReaderMutexLock mu(self, *GetDeoptimizedMethodsLock()); empty = IsDeoptimizedMethodsEmpty(); // Avoid lock violation. } if (empty) { @@ -931,7 +932,7 @@ void Instrumentation::Deoptimize(ArtMethod* method) { Thread* self = Thread::Current(); { - WriterMutexLock mu(self, deoptimized_methods_lock_); + WriterMutexLock mu(self, *GetDeoptimizedMethodsLock()); bool has_not_been_deoptimized = AddDeoptimizedMethod(method); CHECK(has_not_been_deoptimized) << "Method " << ArtMethod::PrettyMethod(method) << " is already deoptimized"; @@ -955,7 +956,7 @@ void Instrumentation::Undeoptimize(ArtMethod* method) { Thread* self = Thread::Current(); bool empty; { - WriterMutexLock mu(self, deoptimized_methods_lock_); + WriterMutexLock mu(self, *GetDeoptimizedMethodsLock()); bool found_and_erased = RemoveDeoptimizedMethod(method); CHECK(found_and_erased) << "Method " << ArtMethod::PrettyMethod(method) << " is not deoptimized"; @@ -987,12 +988,12 @@ void Instrumentation::Undeoptimize(ArtMethod* method) { bool Instrumentation::IsDeoptimized(ArtMethod* method) { DCHECK(method != nullptr); - ReaderMutexLock mu(Thread::Current(), deoptimized_methods_lock_); + ReaderMutexLock mu(Thread::Current(), *GetDeoptimizedMethodsLock()); return IsDeoptimizedMethod(method); } void Instrumentation::EnableDeoptimization() { - ReaderMutexLock mu(Thread::Current(), deoptimized_methods_lock_); + ReaderMutexLock mu(Thread::Current(), *GetDeoptimizedMethodsLock()); CHECK(IsDeoptimizedMethodsEmpty()); CHECK_EQ(deoptimization_enabled_, false); deoptimization_enabled_ = true; @@ -1009,7 +1010,7 @@ void Instrumentation::DisableDeoptimization(const char* key) { while (true) { ArtMethod* method; { - ReaderMutexLock mu(Thread::Current(), deoptimized_methods_lock_); + ReaderMutexLock mu(Thread::Current(), *GetDeoptimizedMethodsLock()); if (IsDeoptimizedMethodsEmpty()) { break; } |