RFR: 8260355: AArch64: deoptimization stub should save vector registers
Andrew Haley
aph at redhat.com
Thu Jan 28 09:48:32 UTC 2021
On 1/28/21 8:31 AM, Nick Gasson wrote:
> The fix is to store the full vector registers by passing
> save_vectors=true to save_live_registers() in the deopt blob. Because
> save_live_registers() places the integer registers above the floating
> registers in the stack frame, RegisterSaver::r0_offset_in_bytes() needs
> to calculate the SP offset based on whether full vectors were saved, and
> whether those vectors were NEON or SVE, rather than using a static
> offset as it does currently.
It seems to me that save_vectors is only set here:
bool save_vectors = COMPILER2_OR_JVMCI != 0;
which means that save_vectors is a static property of a build, not something
that can vary. Therefore, there is nothing to be gained by passing save_vectors
around. Could we simply have a save_vectors_on_deopt() function?
Also, I'm wondering how much all of this complexity gains us for the sake
of configurations without C2. I'd be very tempted to just leave a hole in
the stack for these systems. How much stack would that cost?
--
Andrew Haley (he/him)
Java Platform Lead Engineer
Red Hat UK Ltd. <https://www.redhat.com>
https://keybase.io/andrewhaley
EAC8 43EB D3EF DB98 CC77 2FAD A5CD 6035 332F A671
More information about the hotspot-dev
mailing list