--- old/src/cpu/x86/vm/shenandoahBarrierSetAssembler_x86.cpp 2019-10-28 20:26:19.661486431 +0100 +++ new/src/cpu/x86/vm/shenandoahBarrierSetAssembler_x86.cpp 2019-10-28 20:26:19.569486436 +0100 @@ -63,10 +63,15 @@ bool borrow_reg = (tmp == noreg); if (borrow_reg) { // No free registers available. Make one useful. - tmp = rscratch1; + tmp = LP64_ONLY(rscratch1) NOT_LP64(rdx); + if (tmp == dst) { + tmp = LP64_ONLY(rscratch2) NOT_LP64(rcx); + } __ push(tmp); } + assert_different_registers(dst, tmp); + Label done; __ movptr(tmp, Address(dst, oopDesc::mark_offset_in_bytes())); __ notptr(tmp);