2011-08-23 9 views
6

He encontrado estos en el JDK abierta (archivo System.c)¿Dónde puedo encontrar las implementaciones nativas de estas funciones?

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

pero no fue capaz de encontrar las implemetations nativos de estas funciones currentTimeMillis nanoTime arraycopy Formulario

donde puedo conseguir el implementaciones nativas de estas funciones? ¿Está disponible en JDK abierto?

Respuesta

4

si se encuentra en

JDK7/punto de acceso/src/share/vm/PRIM/jvm.cpp: 229

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

la implementación real (para Linux) está en

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

los otros métodos están justo debajo de él

Cuestiones relacionadas