hotspot/src/share/vm/prims/jvmtiEnvBase.cpp
void
JvmtiEnvBase::record_first_time_class_file_load_hook_enabled() {
{- -------------------------------------------
(1) (assert)
---------------------------------------- -}
assert(Threads::number_of_threads() == 0 || JvmtiThreadState_lock->is_locked(),
"sanity check");
{- -------------------------------------------
(1) もし一度も class_file_load_hook が enabled になったことがなければ,
can_retransform_classes が既に取得されていたかどうかをチェックする.
取得されていなければ, get_prohibited_capabilities に can_retransform_classes が追加される
(= これ以降 retransform capability は取得できなくなる)
(これは, 「retransform capability を取得する場合は
ClassFileLoadHook が有効化されるまでに取得しないといけない」という
JVMTI 仕様上の制約のための処理.)
---------------------------------------- -}
if (!_class_file_load_hook_ever_enabled) {
_class_file_load_hook_ever_enabled = true;
if (get_capabilities()->can_retransform_classes) {
_is_retransformable = true;
} else {
_is_retransformable = false;
// cannot add retransform capability after ClassFileLoadHook has been enabled
get_prohibited_capabilities()->can_retransform_classes = 1;
}
}
}
This document is available under the GNU GENERAL PUBLIC LICENSE Version 2.