[lworld] RFR: 8265184: [lworld] [AArch64] Broken fast class init barrier for static calls in c2i adapter

Nick Gasson ngasson at openjdk.java.net
Wed Apr 14 08:49:29 UTC 2021

The tier1 test runtime/clinit/ClassInitBarrier.java fails on the lworld
branch on AArch64.  The particular case that fails is calling a static
native method `A.staticN()` which should block in the c2i adapter until
class A's initialisation is complete but doesn't.

The check for a static method is backwards: the class initialisation
barrier code is executed when the method is *not* static (ANDS will set
the EQ flag if the result is zero).  I'm not sure why it's like this but
fast class initialisation for AArch64 was added after the original
lworld port which also touches generate_i2c2i_adapters so maybe
something got messed up in the merge.

Fix by making the code the same as mainline.


Commit messages:
 - 8265184: [lworld] [AArch64] Broken fast class init barrier for static calls in c2i adapter

Changes: https://git.openjdk.java.net/valhalla/pull/384/files
 Webrev: https://webrevs.openjdk.java.net/?repo=valhalla&pr=384&range=00
  Issue: https://bugs.openjdk.java.net/browse/JDK-8265184
  Stats: 12 lines in 1 file changed: 1 ins; 5 del; 6 mod
  Patch: https://git.openjdk.java.net/valhalla/pull/384.diff
  Fetch: git fetch https://git.openjdk.java.net/valhalla pull/384/head:pull/384

PR: https://git.openjdk.java.net/valhalla/pull/384

More information about the valhalla-dev mailing list