hotspot/src/share/vm/services/threadService.cpp
void ConcurrentLocksDump::add_lock(JavaThread* thread, instanceOop o) {
{- -------------------------------------------
(1) ThreadConcurrentLocks::add_lock() を呼んで,
引数で指定されたスレッド(以下の thread)用の ThreadConcurrentLocks オブジェクトに
引数で指定された java.util.concurrent.locks.AbstractOwnableSynchronizer オブジェクト(以下の o)を登録する.
(なお, スレッドに対応する ThreadConcurrentLocks オブジェクトがまだ作成されていない場合には,
新しい ThreadConcurrentLocks オブジェクトを作って _map フィールドや _last フィールドに登録する処理も行っている.
作成済みかどうかは, ConcurrentLocksDump::thread_concurrent_locks() で調べられる)
---------------------------------------- -}
ThreadConcurrentLocks* tcl = thread_concurrent_locks(thread);
if (tcl != NULL) {
tcl->add_lock(o);
return;
}
// First owned lock found for this thread
tcl = new ThreadConcurrentLocks(thread);
tcl->add_lock(o);
if (_map == NULL) {
_map = tcl;
} else {
_last->set_next(tcl);
}
_last = tcl;
}
This document is available under the GNU GENERAL PUBLIC LICENSE Version 2.