我已经将unsafe.cpp和Unsafe.java克隆到自定义版本中。我需要构建新的JVM,但我的UnsafeNew.java似乎是与unsafe.cpp方法而不是新的unsafenew.cpp方法内联的。
希望在openJDK构建系统中拥有专业知识的人知道这是如何联系在一起的。
谢谢
托默
发布于 2015-11-22 12:33:22
那么,至少在openJDK 7中,答案是它是硬编码到构建系统中的。虽然常规的JNI需要一个LoadLibrary()调用,但对于不安全的文件和少数其他文件,这是由编译器完成的。
在hotspot/src/share/vm/prims/nativeLookup.cpp中,有一个名为
JNINativeMethod lookup_special_native_methods[] 这包括
{ CC"Java_sun_misc_Unsafe_registerNatives",NULL, FN_PTR(JVM_RegisterUnsafeMethods)} 这就行了。
我希望我帮了别人这个忙。
托默
https://stackoverflow.com/questions/33781468
复制相似问题