hotspot/src/share/vm/services/threadService.cpp
StackFrameInfo::StackFrameInfo(javaVFrame* jvf, bool with_lock_info) {
{- -------------------------------------------
(1) 各フィールドに値をセットする.
---------------------------------------- -}
_method = jvf->method();
_bci = jvf->bci();
_locked_monitors = NULL;
{- -------------------------------------------
(1) 「現在ロックされているオブジェクトモニターの一覧」も取得するようにと
コンストラクタ引数で指定されていた場合 (= with_lock_info が true の場合),
javaVFrame::locked_monitors() でロックしているモニタの一覧を取得し,
#TODO
---------------------------------------- -}
if (with_lock_info) {
ResourceMark rm;
GrowableArray<MonitorInfo*>* list = jvf->locked_monitors();
int length = list->length();
if (length > 0) {
_locked_monitors = new (ResourceObj::C_HEAP) GrowableArray<oop>(length, true);
for (int i = 0; i < length; i++) {
MonitorInfo* monitor = list->at(i);
assert(monitor->owner(), "This monitor must have an owning object");
_locked_monitors->append(monitor->owner());
}
}
}
}
This document is available under the GNU GENERAL PUBLIC LICENSE Version 2.