7

これらはオープンJDK(System.cファイル)で見つかりました

static JNINativeMethod methods[] = {
    {"currentTimeMillis", "()J",              (void *)&JVM_CurrentTimeMillis},
    {"nanoTime",          "()J",              (void *)&JVM_NanoTime},
    {"arraycopy",     "(" OBJ "I" OBJ "II)V", (void *)&JVM_ArrayCopy},
};

#undef OBJ

JNIEXPORT void JNICALL
Java_java_lang_System_registerNatives(JNIEnv *env, jclass cls)
{
    (*env)->RegisterNatives(env, cls,
                            methods, sizeof(methods)/sizeof(methods[0]));
}

しかし、これらの関数 currentTimeMillis nanoTime arraycopy のネイティブ実装を見つけることができませんでした

これらの関数のネイティブ実装はどこで入手できますか? それはオープンJDKで利用できますか?

4

1 に答える 1

5

で見つかった場合

jdk7/hotspot/src/share/vm/prims/jvm.cpp:229

JVM_LEAF(jlong, JVM_CurrentTimeMillis(JNIEnv *env, jclass ignored))
 JVMWrapper("JVM_CurrentTimeMillis");
 return os::javaTimeMillis();
JVM_END

実際の実装 (Linux 用) は

/jdk7/hotspot/src/os/linux/vm/os_linux.cpp

他のメソッドはそのすぐ下にあります

于 2011-08-23T16:12:31.410 に答える