JEP 237: Linux/AArch64 Port | Linux/AArch64 端口
摘要
将 JDK 9 移植到 Linux/AArch64。
动机
AArch64 是 ARM Holdings plc 的新处理器架构。它不同于 32 位 ARM 处理器架构,实际上是完全重新设计的。需要一个新的 OpenJDK 移植。
描述
我们(AArch64 移植项目)已将 JDK 移植到了一个新平台:Linux/AArch64。我们已经实现了模板解释器、C1(客户端)和 C2(服务器端)JIT 编译器。
这个 JEP 的重点不在于移植工作本身,因为移植工作大部分已经完成,而是在将移植内容集成到 OpenJDK 主存储库中。
目前,在 HotSpot 存储库的共享部分有许多微小的变更集。这些变更主要是用于包含相关特定平台文件的 #ifdef
指令。还有一些其他类型的变更,但同样也受到 #ifdef
AARCH64 的保护。因此,对其他平台的风险较低。
还对 HotSpot 和 JDK 的构建机制进行了一些变更,以添加适当的字节序、字长等定义。同样,这些变更不应影响其他平台。
要集成的大部分变更不会对当前的 OpenJDK 平台产生任何影响,因为它们只在新平台上激活。
构建系统中也有一些变更,但不应引起太多麻烦。
这里是对 HotSpot 共享代码所需的变更的补丁。
所有变更集都被收集在一个暂存存储库中:http://hg.openjdk.java.net/aarch64-port/stage/
测试
Red Hat 和 Linaro 定期在移植平台以及当前支持的 JDK 8 平台上构建和测试移植内容,以确保不会引入破坏现有平台的回归问题。
Red Hat 致力于全面支持(即定期更新、增强和测试)由此工作引入的新平台的代码。
风险和假设
在进行这项工作时,可能存在 AArch64 硬件可用性的问题,但我们希望在项目进行过程中它会得到广泛提供。
类似于 PPC/AIX 移植,将创建一个由 AArch64 移植项目拥有的暂存存储库(例如 aarch64-port/stage),包含已经经过审查和批准的变更集。