8229470: Shenandoah: Fix C1 getAndSetObject() failure

Reviewed-by: shade
This commit is contained in:
Roman Kennke 2019-08-13 16:05:58 +02:00
parent b1ea3a780c
commit a8aedcea47
2 changed files with 6 additions and 0 deletions
src/hotspot/cpu
aarch64/gc/shenandoah/c1
x86/gc/shenandoah/c1

@ -100,6 +100,9 @@ LIR_Opr ShenandoahBarrierSetC1::atomic_xchg_at_resolved(LIRAccess& access, LIRIt
if (access.is_oop()) {
result = load_reference_barrier(access.gen(), result);
LIR_Opr tmp = gen->new_register(type);
__ move(result, tmp);
result = tmp;
if (ShenandoahSATBBarrier) {
pre_barrier(access.gen(), access.access_emit_info(), access.decorators(), LIR_OprFact::illegalOpr,
result /* pre_val */);

@ -111,6 +111,9 @@ LIR_Opr ShenandoahBarrierSetC1::atomic_xchg_at_resolved(LIRAccess& access, LIRIt
if (access.is_oop()) {
result = load_reference_barrier(access.gen(), result);
LIR_Opr tmp = gen->new_register(type);
__ move(result, tmp);
result = tmp;
if (ShenandoahSATBBarrier) {
pre_barrier(access.gen(), access.access_emit_info(), access.decorators(), LIR_OprFact::illegalOpr,
result /* pre_val */);