我在哪里可以找到这些函数的原生实现?

时间:2011-08-23 16:00:58

标签: java openjdk

我在打开的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中可用吗?

1 个答案:

答案 0 :(得分:4)

如果在

中找到它

JDK7 /热点/ SRC /共享/ 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

其他方法就在它下面