Mercurial > hg > truffle
changeset 21486:95647f646143
[SPARC] Make CAS delayable
author | Stefan Anzinger <stefan.anzinger@oracle.com> |
---|---|
date | Fri, 22 May 2015 11:41:03 +0200 |
parents | b6ebdfc9f611 |
children | 6b59a0656841 |
files | graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCMove.java |
diffstat | 1 files changed, 5 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- 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));