RFR: JDK-8229977: Shenandoah: save/restore FPU state aroud LRB runtime call

Roman Kennke rkennke at redhat.com
Wed Aug 21 16:10:37 UTC 2019


Nightlies show failures in CAS/CAE related jcstress tests, and they only
seem to affect float/double variants.
The root cause is JDK-8228369 which removed
save_vector_registers()/restore_vector_registers() around the LRB
runtime call. It turns out that we actually need them, because the LRB
stub is used by C1/C2 CAS intrinsics.

Bug:
https://bugs.openjdk.java.net/browse/JDK-8229977

Instead of re-introducing save/restore_vector_registers(), my proposed
change uses push/pop_FPU_state() which uses whatever the platform
supports (e.g. fxsave/fxrestore) to push the whole FPU state on stack. A
little quirk is the requirement on 16-byte-alignment of the stack, hence
the extra setup code for this.

Testing:
The failing tests are passing with this change, and
hotspot_gc_shenandoah is happy too.

Webrev:
http://cr.openjdk.java.net/~rkennke/JDK-8229977/webrev.02/

Ok?

Roman




More information about the hotspot-gc-dev mailing list