summaryrefslogtreecommitdiff
path: root/openjdkjvmti/ti_object.cc
diff options
context:
space:
mode:
Diffstat (limited to 'openjdkjvmti/ti_object.cc')
-rw-r--r--openjdkjvmti/ti_object.cc14
1 files changed, 5 insertions, 9 deletions
diff --git a/openjdkjvmti/ti_object.cc b/openjdkjvmti/ti_object.cc
index 3333a8a834..f37df86048 100644
--- a/openjdkjvmti/ti_object.cc
+++ b/openjdkjvmti/ti_object.cc
@@ -105,17 +105,13 @@ jvmtiError ObjectUtil::GetObjectMonitorUsage(
notify_wait.push_back(jni->AddLocalReference<jthread>(thd->GetPeerFromOtherThread()));
wait.push_back(jni->AddLocalReference<jthread>(thd->GetPeerFromOtherThread()));
}
- // Scan all threads to see which are waiting on this particular monitor.
- std::list<art::Thread*> thread_list;
{
- // Since we're in a SuspendAll, exiting threads are not a concern.
+ // Scan all threads to see which are waiting on this particular monitor.
art::MutexLock tll(self, *art::Locks::thread_list_lock_);
- thread_list = art::Runtime::Current()->GetThreadList()->GetList();
- }
- for (art::Thread* thd : thread_list) {
- if (thd != info.owner_ && target.Ptr() == thd->GetMonitorEnterObject()) {
- art::mirror::Object* peer = thd->GetPeerFromOtherThread();
- wait.push_back(jni->AddLocalReference<jthread>(peer));
+ for (art::Thread* thd : art::Runtime::Current()->GetThreadList()->GetList()) {
+ if (thd != info.owner_ && target.Ptr() == thd->GetMonitorEnterObject()) {
+ wait.push_back(jni->AddLocalReference<jthread>(thd->GetPeerFromOtherThread()));
+ }
}
}
}