RFR: Fix x86_32 build failure due to cmpxchg_oop mismatch

Aleksey Shipilev shade at redhat.com
Tue Jun 12 08:08:06 UTC 2018


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