RFR: 8146709: AArch64: Incorrect use of ADRP for byte_map_base
aph at redhat.com
Mon Jan 11 15:18:03 UTC 2016
The adrp() (address of page) assembler macro can reach anywhere in the
48-bit AArch64 address space. However, byte_map_base is not
necessarily an address: it might even wrap around the address space so
that it is a negative 64-bit constant. in that case, we should not use
ADRP to form its address.
While investigating this bug we discovered that the code stubs for
C1's G1 pre- and post-barriers push the incorrect set of registers. We
must include the call-clobbered vector registers too; they probably
won't be used by the native runtime, but the ABI says that they may be
so we must save them.
More information about the hotspot-dev