< prev index next >
src/hotspot/cpu/x86/gc/shenandoah/shenandoahBarrierSetAssembler_x86.cpp
Print this page
rev 56811 : 8233500: Shenandoah: Shenandoah load barrier should save registers before calling keep alive barrier on x86
*** 491,500 ****
--- 491,501 ----
dst = result_dst;
}
if (ShenandoahKeepAliveBarrier && on_reference && keep_alive) {
+ __ 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));
// Generate the SATB pre-barrier code to log the value of
// the referent field in an SATB buffer.
*** 503,512 ****
--- 504,514 ----
dst /* pre_val */,
thread /* thread */,
tmp1 /* tmp */,
true /* tosca_live */,
true /* expand_call */);
+ __ pop_IU_state();
}
}
}
void ShenandoahBarrierSetAssembler::store_at(MacroAssembler* masm, DecoratorSet decorators, BasicType type,
< prev index next >