2011-08-23 16 views
6

I (System.c dosyası)Bu işlevlerin yerel uygulamalarını nerede bulabilirim?

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])); 
} 

açık JDK bunları bulduk ama ben alabileceğiniz

Formu arraycopy nanoTime currentTimeMillis bu fonksiyonların yerli implemetations bulmak mümkün değildi Bu fonksiyonların yerli uygulamaları? Bu açık JDK'de kullanılabilir mi?

cevap

4

jdk7/hotspot/src/share/vm/prims/jvm.cpp bunu buldum: (linux için) 229

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

gerçek uygulanmasını

içindedir

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

diğer yöntemler hemen altındadır

İlgili konular