# HG changeset patch # User Stefan Anzinger # Date 1432287663 -7200 # Node ID 95647f646143a723b402ccd8ebf3a102e2f901b0 # Parent b6ebdfc9f6110de2273b74330f60b5a9bb1629b9 [SPARC] Make CAS delayable diff -r b6ebdfc9f611 -r 95647f646143 graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCMove.java --- a/graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCMove.java Fri May 22 11:29:13 2015 +0200 +++ b/graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCMove.java Fri May 22 11:41:03 2015 +0200 @@ -466,8 +466,8 @@ @Override public void emitCode(CompilationResultBuilder crb, SPARCMacroAssembler masm) { - move(crb, masm, result, newValue, delayedControlTransfer); - compareAndSwap(masm, address, cmpValue, result); + move(crb, masm, result, newValue, SPARCDelayedControlTransfer.DUMMY); + compareAndSwap(crb, masm, address, cmpValue, result, delayedControlTransfer); } } @@ -779,7 +779,9 @@ } } - protected static void compareAndSwap(SPARCMacroAssembler masm, AllocatableValue address, AllocatableValue cmpValue, AllocatableValue newValue) { + protected static void compareAndSwap(CompilationResultBuilder crb, SPARCMacroAssembler masm, AllocatableValue address, AllocatableValue cmpValue, AllocatableValue newValue, + SPARCDelayedControlTransfer delay) { + delay.emitControlTransfer(crb, masm); switch (cmpValue.getKind()) { case Int: masm.cas(asRegister(address), asRegister(cmpValue), asRegister(newValue));