hotspot/src/share/vm/runtime/jniHandles.cpp
bool JNIHandles::is_local_handle(Thread* thread, jobject handle) {
{- -------------------------------------------
(1) handle 引数で指定されたオブジェクトが
thread 引数で指定された Thread の active_handles 内にあれば true をリターン.
(逆に, なければ false をリターン)
(あるかどうかの調査は JNIHandleBlock::chain_contains() で行う.
ただし, active_handles は複数の JNIHandleBlock からなるので
全ての JNIHandleBlock についてループして調べている)
---------------------------------------- -}
JNIHandleBlock* block = thread->active_handles();
// Look back past possible native calls to jni_PushLocalFrame.
while (block != NULL) {
if (block->chain_contains(handle)) {
return true;
}
block = block->pop_frame_link();
}
return false;
}
This document is available under the GNU GENERAL PUBLIC LICENSE Version 2.