hotspot/src/share/vm/prims/nativeLookup.cpp
static address lookup_special_native(char* jni_name) {
{- -------------------------------------------
(1) 対応付けがハードコーディングされている native method について処理を行う.
ハードコーディングされた対応付けの情報は lookup_special_native_methods 内に入っているため,
それを先頭から最後まで見ていって一致するものがあるかどうかを調べる.
一致するものがあれば, 対応する関数ポインタをリターン.
(なお, JDK1.4 以上の場合は, 先頭2要素分はスキップする)
---------------------------------------- -}
int i = !JDK_Version::is_gte_jdk14x_version() ? 0 : 2; // see comment in lookup_special_native_methods
int count = sizeof(lookup_special_native_methods) / sizeof(JNINativeMethod);
for (; i < count; i++) {
// NB: To ignore the jni prefix and jni postfix strstr is used matching.
if (strstr(jni_name, lookup_special_native_methods[i].name) != NULL) {
return CAST_FROM_FN_PTR(address, lookup_special_native_methods[i].fnPtr);
}
}
return NULL;
}
This document is available under the GNU GENERAL PUBLIC LICENSE Version 2.