我已将 unsafe.cpp 和 Unsafe.java 克隆到自定义版本。我要构建新的 JVM,但似乎我的 UnsafeNew.java 内联了 unsafe.cpp 方法,而不是新的 unsafenew.cpp 方法。
希望具有 openJDK 构建系统专业知识的人知道这是如何联系在一起的。
谢谢
汤姆
最佳答案
好吧,至少在 openJDK 7 中,答案是它被硬编码到构建系统中。虽然常规 JNI 需要 LoadLibrary() 调用,但对于 Unsafe 和少数其他文件,这是由编译器完成的。
在 hotspot/src/share/vm/prims/nativeLookup.cpp 中有一个名为
的数组JNINativeMethod lookup_special_native_methods[]
包括
{ CC"Java_sun_misc_Unsafe_registerNatives",NULL, FN_PTR(JVM_RegisterUnsafeMethods)}
这就是诀窍。
我希望我在这方面对某人有所帮助。
汤姆
关于c++ - unsafe.cpp 如何链接到 openJDK 构建系统中的 Unsafe.java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33781468/