# HG changeset patch # User zgu # Date 1574796836 18000 # Node ID 78aa7484c722ec0abae100571ccb0974a038881a # Parent f5f129bfa403a395f1a676ea67581dab0effa130 8233500: Shenandoah: Shenandoah load barrier should save registers before calling keep alive barrier on x86 Reviewed-by: rkennke diff -r f5f129bfa403 -r 78aa7484c722 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(); } }