c++ - unsafe.cpp 如何链接到 openJDK 构建系统中的 Unsafe.java

标签 c++ java

我已将 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/

相关文章:

java - 我应该如何解决这种错误

java - 如何以编程方式替换/更改图像按钮android

java - 仅关闭一个 Jframe 窗口

java - 如何有条件添加JPA规范进行查询?

java - 创建只有 ID 属性的实体表有意义吗?

c++ - std::map 赋值

c++ - 为什么 DWORD 值通常以十六进制表示?

C++ 错误 3 错误 C2159 : more than one storage class specified

c++ - gcc 编译器提示来自 char* 测试的测试 [0] 错误;

c++ - 重新连接设备后 boost::asio::serial_port 读取