There was a bug in the x86_64 implementation of the c2i entry barriers. We read the CLD::_keep_alive int as a 64 bit integer, while it is of course in fact a 32 bit integer. It was fixed in the patch that ported it to x86_32 (
JDK-8235262). However, somewhere in-between I think the wrong code was used as a basis for the AArch64 implementation, which now seemingly has that same bug.