2011-08-23 26 views
6

tôi thấy những trong JDK mở (System.c tập tin)Tôi có thể tìm các bản triển khai gốc của các chức năng này ở đâu?

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

nhưng tôi đã không thể tìm ra implemetations mẹ đẻ của các chức năng này currentTimeMillis nanoTime arraycopy

Mẫu nơi tôi có thể nhận được triển khai bản địa của các hàm này? Có sẵn trong JDK mở không?

Trả lời

4

nếu tìm thấy nó trong

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 

việc thực hiện thực (đối với Linux) là trong

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

các phương pháp khác nằm ngay bên dưới nó

Các vấn đề liên quan