Condition code not set after CAS on aarch64

Roman Kennke rkennke at redhat.com
Wed Nov 16 15:59:29 UTC 2016


Am Mittwoch, den 16.11.2016, 15:56 +0000 schrieb Andrew Haley:
> On 16/11/16 14:04, Roman Kennke wrote:
> > 
> > Am Freitag, den 28.10.2016, 13:35 +0200 schrieb Roland Westrelin:
> > > 
> > > http://cr.openjdk.java.net/~roland/shenandoah/aarch64-cas-cc/webr
> > > ev.0
> > > 0/
> > > 
> > > Instructions that set the condition code got dropped...
> > 
> > The condition code gets set in
> > MacroAssembler::cmpxchg_oop_shenandoah() already. Setting it
> > afterwards using cset might actually be harmful because I am not
> > sure
> > that the condition flags are correct.
> > 
> > I'd revert the whole changeset:
> > http://cr.openjdk.java.net/~roland/shenandoah/aarch64-cas-cc/webrev
> > .00/
> > 
> > Ok to revert?
> 
> No.
> 
> CSET doesn't set a condition code, it sets a register.
> We need the register.

Yes. And we set that register in cmpxchg_oop_shenandoah(). The
condition code might be foobar after the loop.

Roman


More information about the shenandoah-dev mailing list