Я клонировал 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)}
Это делает трюк.
Я надеюсь, что помог кому-то с этим.
Томер
Других решений пока нет …