src/cpu/sparc/vm/sparc.ad

Print this page

        

*** 2776,2789 **** MacroAssembler _masm(&cbuf); Register Rmem = reg_to_register_object($mem$$reg); Register Rold = reg_to_register_object($old$$reg); Register Rnew = reg_to_register_object($new$$reg); ! // casx_under_lock picks 1 of 3 encodings: ! // For 32-bit pointers you get a 32-bit CAS ! // For 64-bit pointers you get a 64-bit CASX ! __ casn(Rmem, Rold, Rnew); // Swap(*Rmem,Rnew) if *Rmem == Rold __ cmp( Rold, Rnew ); %} enc_class enc_casx( iRegP mem, iRegL old, iRegL new) %{ Register Rmem = reg_to_register_object($mem$$reg); --- 2776,2786 ---- MacroAssembler _masm(&cbuf); Register Rmem = reg_to_register_object($mem$$reg); Register Rold = reg_to_register_object($old$$reg); Register Rnew = reg_to_register_object($new$$reg); ! __ cas_ptr(Rmem, Rold, Rnew); // Swap(*Rmem,Rnew) if *Rmem == Rold __ cmp( Rold, Rnew ); %} enc_class enc_casx( iRegP mem, iRegL old, iRegL new) %{ Register Rmem = reg_to_register_object($mem$$reg);