Top


定義場所(file name)

jdk/src/share/native/java/lang/ClassLoader.c

説明(description)

/*
 * Returns NULL if class not found.
 */

名前(function name)

JNIEXPORT jclass JNICALL
Java_java_lang_ClassLoader_findBootstrapClass(JNIEnv *env, jobject loader,
                                              jstring classname)
{

本体部(body)

  {- -------------------------------------------
  (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.