Top


定義場所(file name)

hotspot/src/share/vm/prims/nativeLookup.cpp

名前(function name)

static address lookup_special_native(char* jni_name) {

本体部(body)

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