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 shenandoah-dev
mailing list