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