jdk/src/share/native/java/lang/ClassLoader.c
/*
* Returns NULL if class not found.
*/
JNIEXPORT jclass JNICALL
Java_java_lang_ClassLoader_findBootstrapClass(JNIEnv *env, jobject loader,
jstring classname)
{
{- -------------------------------------------
(1) (変数宣言など)
---------------------------------------- -}
char *clname;
jclass cls = 0;
char buf[128];
{- -------------------------------------------
(1) classname 引数が不正な場合は, ここでリターン.
---------------------------------------- -}
if (classname == NULL) {
return 0;
}
{- -------------------------------------------
(1) (変数宣言など)
---------------------------------------- -}
clname = getUTF(env, classname, buf, sizeof(buf));
if (clname == NULL) {
JNU_ThrowOutOfMemoryError(env, NULL);
return NULL;
}
{- -------------------------------------------
(1) クラス名中の '.' を '/' に置き換える.
---------------------------------------- -}
VerifyFixClassname(clname);
{- -------------------------------------------
(1) クラス名として妥当かどうかチェックしておく.
妥当でなければ (以降の処理はスキップして) done ラベルまでジャンプ.
---------------------------------------- -}
if (!VerifyClassname(clname, JNI_TRUE)) { /* expects slashed name */
goto done;
}
{- -------------------------------------------
(1) ブートストラップクラスローダーを使って, classname 引数で指定されたクラスを取得する.
---------------------------------------- -}
cls = JVM_FindClassFromBootLoader(env, clname);
{- -------------------------------------------
(1) 確保したメモリを解放しておく.
---------------------------------------- -}
done:
if (clname != buf) {
free(clname);
}
{- -------------------------------------------
(1) 結果をリターン
---------------------------------------- -}
return cls;
}
This document is available under the GNU GENERAL PUBLIC LICENSE Version 2.