Status of AArch64 lworld port

Nick Gasson nick.gasson at arm.com
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:

https://github.com/openjdk/valhalla/pull/353

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
LIRGenerator::get_and_load_element_address():

https://github.com/openjdk/valhalla/pull/353/files#diff-cc27fc51caa691478ce875140a75940aea610cb6b3a67976852867b05672e56c

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
  ...

--
Thanks,
Nick


More information about the valhalla-dev mailing list