2011-08-23 61 views
6

我發現這些開放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])); 
} 

,但我沒能找到這些功能的本地implemetations 的currentTimeMillis nanoTime arraycopy

表我在哪裏可以買到的這些功能的本地實現? 是否可以在JDK中使用?

回答

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

其他方法正好在它下面

相關問題