8233500: Shenandoah: Shenandoah load barrier should save registers before calling keep alive barrier on x86
authorzgu
Tue, 26 Nov 2019 14:33:56 -0500
changeset 59283 78aa7484c722
parent 59282 f5f129bfa403
child 59284 88502b1cf76f
8233500: Shenandoah: Shenandoah load barrier should save registers before calling keep alive barrier on x86 Reviewed-by: rkennke
src/hotspot/cpu/x86/gc/shenandoah/shenandoahBarrierSetAssembler_x86.cpp
--- a/src/hotspot/cpu/x86/gc/shenandoah/shenandoahBarrierSetAssembler_x86.cpp	Fri Nov 22 17:45:48 2019 -0800
+++ b/src/hotspot/cpu/x86/gc/shenandoah/shenandoahBarrierSetAssembler_x86.cpp	Tue Nov 26 14:33:56 2019 -0500
@@ -511,6 +511,7 @@
 
   // 3: apply keep-alive barrier if needed
   if (ShenandoahBarrierSet::need_keep_alive_barrier(decorators, type)) {
+    __ push_IU_state();
     const Register thread = NOT_LP64(tmp_thread) LP64_ONLY(r15_thread);
     assert_different_registers(dst, tmp1, tmp_thread);
     NOT_LP64(__ get_thread(thread));
@@ -523,6 +524,7 @@
                                  tmp1 /* tmp */,
                                  true /* tosca_live */,
                                  true /* expand_call */);
+    __ pop_IU_state();
   }
 }