Status of AArch64 lworld port

Nick Gasson nick.gasson at
Thu Feb 25 10:03:51 UTC 2021

On 02/05/21 17:17 pm, Tobias Hartmann wrote:
> yes, the AArch64 port misses significant changes and is currently not tested on our (Oracle) side.
> Dmitriy Samersoff worked on this in the past but I'm not sure what his current plans are. In any
> case, contributions are very welcome and I'm happy to answer questions about the JIT related changes.

Hi Tobias,

OK I started working on this. I've put my in-progress changes as draft
pull request here:

It's not ready for review yet but simple test cases are passing. For the
time being I'm building without C2 and focusing on getting
C1/interpreter to work.

I had to make one change/hack to the shared code in

The problem is LIR_Address on AArch64 cannot have both an index and a
displacement. I thought it should be possible to call
LIRGenerator::generate_address() instead of explicitly constructing a
new LIR_Address() because generate_address() handles the necessary
adjustments in the AArch64-specific code. However that fails with the
error below and I haven't worked out why yet.

Error: live_in set of first block must be empty (when this fails, virtual registers are used before they are defined)
affected registers:
344 353 360 416 440 456
* vreg 344 (HIR instruction  0)
  used in block B0


More information about the valhalla-dev mailing list