hotspot/src/share/vm/prims/jni.cpp
_JNI_IMPORT_OR_EXPORT_ jint JNICALL JNI_GetDefaultJavaVMInitArgs(void *args_) {
{- -------------------------------------------
(1) (DTrace のフック点)
---------------------------------------- -}
HS_DTRACE_PROBE1(hotspot_jni, GetDefaultJavaVMInitArgs__entry, args_);
{- -------------------------------------------
(1) (変数宣言など)
---------------------------------------- -}
JDK1_1InitArgs *args = (JDK1_1InitArgs *)args_;
jint ret = JNI_ERR;
{- -------------------------------------------
(1) (DTrace のフック点)(リターン用) (See: DT_RETURN_MARK)
---------------------------------------- -}
DT_RETURN_MARK(GetDefaultJavaVMInitArgs, jint, (const jint&)ret);
{- -------------------------------------------
(1) 返値は, Threads::is_supported_jni_version() が true を返せば JNI_OK, そうでなければ JNI_ERR とする.
---------------------------------------- -}
if (Threads::is_supported_jni_version(args->version)) {
ret = JNI_OK;
}
{- -------------------------------------------
(1) なお, 指定されたバージョンが 1.1(HotSpot はもうサポートしない) の場合には,
引数の JDK1_1InitArgs 内に以下の情報を書き込んで launcher に伝えている.
* バージョンについては, 最も近いサポート対象バージョンである 1.2 を書き込む.
* javaStackSize についても, デフォルトのスタックサイズを書き込む.
---------------------------------------- -}
// 1.1 style no longer supported in hotspot.
// According the JNI spec, we should update args->version on return.
// We also use the structure to communicate with launcher about default
// stack size.
if (args->version == JNI_VERSION_1_1) {
args->version = JNI_VERSION_1_2;
// javaStackSize is int in arguments structure
assert(jlong(ThreadStackSize) * K < INT_MAX, "integer overflow");
args->javaStackSize = (jint)(ThreadStackSize * K);
}
{- -------------------------------------------
(1) 返値をリターン
---------------------------------------- -}
return ret;
}
This document is available under the GNU GENERAL PUBLIC LICENSE Version 2.