RFR: Fix x86_32 build failure due to cmpxchg_oop mismatch

Roman Kennke rkennke at redhat.com
Tue Jun 12 08:54:18 UTC 2018


Oops. Please push! Thanks! Roman

> x86_32 build fails with:
> 
> /pool/buildbot/slaves/sobornost/shenandoah-jdkX/build/src/hotspot/cpu/x86/gc/shenandoah/shenandoahBarrierSetAssembler_x86.cpp:626:59:
> error: no ‘void MacroAssembler::cmpxchg_oop_shenandoah(MacroAssembler*, Register, Address, Register,
> Register, bool, Register, Register)’ member function declared in class ‘MacroAssembler’
>                                Register tmp1, Register tmp2) {
> 
> This is because non-LP64 stub should match the signature with existing cmpxchg_oop.
> 
> Fix:
> 
> diff -r 10818b1e3954 src/hotspot/cpu/x86/gc/shenandoah/shenandoahBarrierSetAssembler_x86.cpp
> --- a/src/hotspot/cpu/x86/gc/shenandoah/shenandoahBarrierSetAssembler_x86.cpp	Tue Jun 12 09:54:58
> 2018 +0200
> +++ b/src/hotspot/cpu/x86/gc/shenandoah/shenandoahBarrierSetAssembler_x86.cpp	Tue Jun 12 10:06:41
> 2018 +0200
> @@ -621,9 +621,9 @@
>  // Special Shenandoah CAS implementation that handles false negatives
>  // due to concurrent evacuation.
>  #ifndef _LP64
> -void MacroAssembler::cmpxchg_oop_shenandoah(MacroAssembler* masm, Register res, Address addr,
> Register oldval, Register newval,
> -                              bool exchange,
> -                              Register tmp1, Register tmp2) {
> +void ShenandoahBarrierSetAssembler::cmpxchg_oop(MacroAssembler* masm, DecoratorSet decorators,
> +                                                Register res, Address addr, Register oldval,
> Register newval,
> +                                                bool exchange, bool encode, Register tmp1, Register
> tmp2) {
>    // Shenandoah has no 32-bit version for this.
>    Unimplemented();
>  }
> 
> Thanks,
> -Aleksey
> 




More information about the shenandoah-dev mailing list