我已将unsafe.cpp和Unsafe.java克隆到自定义版本。我已经有了新的JVM来构建,但似乎我的UnsafeNew.java正在使用unsafe.cpp方法而不是我的新unsafenew.cpp方法。
希望拥有openJDK构建系统专业知识的人知道这是如何捆绑在一起的。
由于
托默
答案 0 :(得分:1)
好吧,至少在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)}
这就是诀窍。
我希望我帮助过这个人。
托默