Brussels / 2 & 3 February 2013


Porting OpenJDK to AArch64

ARM's new, 64 bit ARMv8 architecture, is a break from the past in two regards. The change of scale from 32 to 64 bit implies a broadening of ARM's target market from (mostly) embedded devices to address the requirements of high end consumer devices and servers. The 64 bit mode (AArch64) programming model is significantly different from the existing 32 bit model. If ARM's change of direction does indeed grab a significant share of this market then there are two corresponding implications for the Free Java community. We need a high quality free Java implementation to ensure that the market is not colonised solely by commercial Java vendors. We need to provide this implementation from scratch rather than try to modify existing 32 bit Java implementations. Red Hat has decided to port OpenJDK to AArch64 precisely to meet these implications head on.

This talk will describe the significant progress we have made in porting OpenJDK to AArch64 since the project began in earnest in July 2012, even though real hardware is not yet available and will not be for many months to come.

During the talk we will:

outline our plan for converting the runtime JIT components of OpenJDK to generate AArch64 code -- the (generated AArch64 code) template interpreter and the C1/C2 JIT compilers

explain how we have already managed to execute and debug generated ARM code using our own ARMv8 functional simulator integrated into an x86 JVM

display execution of a Java program using the template interpreter running on our simulator

show both ARM instruction-level and Java bytecode-level stepping and debugging of generated code within gdb


Andrew Haley
Andrew Dinn