Где я могу найти нативные реализации этих функций? - PullRequest
6 голосов
/ 23 августа 2011

Я нашел их в открытом 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 Ответ

4 голосов
/ 23 августа 2011

если найдено в

jdk7 / точка доступа / SRC / доля / VM / Призмы / jvm.cpp: 229

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

Реальная реализация (для Linux) находится в

/ jdk7 / точка доступа / SRC / OS / Linux / VM / os_linux.cpp

остальные методы чуть ниже

...