# HG changeset patch # User Stefan Anzinger # Date 1439285653 -7200 # Node ID 2a7fbe9382965f7d210a5e6eb46b5081cf8fcf20 # Parent 896d0a9f94da3b46635b10f364fb3f380ff83cf5 [SPARC] Move storing of DelayedLIRInstruction into the TailDelayedLIRInstruction interface diff -r 896d0a9f94da -r 2a7fbe938296 graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotBackend.java --- a/graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotBackend.java Tue Aug 11 11:07:15 2015 +0200 +++ b/graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotBackend.java Tue Aug 11 11:34:13 2015 +0200 @@ -414,7 +414,7 @@ boolean overlap = acc.add(inst); if (!overlap && inst instanceof SPARCTailDelayedLIRInstruction) { // We have found a non overlapping LIR instruction which can be delayed - ((SPARCLIRInstructionMixin) inst).setDelayedControlTransfer(delayedTransfer); + ((SPARCTailDelayedLIRInstruction) inst).setDelayedControlTransfer(delayedTransfer); delayedTransfer = null; } } diff -r 896d0a9f94da -r 2a7fbe938296 graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCLIRInstructionMixin.java --- a/graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCLIRInstructionMixin.java Tue Aug 11 11:07:15 2015 +0200 +++ b/graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCLIRInstructionMixin.java Tue Aug 11 11:34:13 2015 +0200 @@ -28,15 +28,6 @@ return false; } - default void setDelayedControlTransfer(SPARCDelayedControlTransfer holder) { - assert this instanceof SPARCTailDelayedLIRInstruction : this; - getSPARCLIRInstructionStore().delayedControlTransfer = holder; - } - - default SPARCDelayedControlTransfer getDelayedControlTransfer() { - return getSPARCLIRInstructionStore().delayedControlTransfer; - } - default SizeEstimate estimateSize() { return getSPARCLIRInstructionStore().estimate; } diff -r 896d0a9f94da -r 2a7fbe938296 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 Tue Aug 11 11:07:15 2015 +0200 +++ b/graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCMove.java Tue Aug 11 11:34:13 2015 +0200 @@ -377,7 +377,7 @@ } @Opcode("CAS") - public static final class CompareAndSwapOp extends SPARCLIRInstruction { + public static final class CompareAndSwapOp extends SPARCLIRInstruction implements SPARCTailDelayedLIRInstruction { public static final LIRInstructionClass TYPE = LIRInstructionClass.create(CompareAndSwapOp.class); public static final SizeEstimate SIZE = SizeEstimate.create(2); diff -r 896d0a9f94da -r 2a7fbe938296 graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCTailDelayedLIRInstruction.java --- a/graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCTailDelayedLIRInstruction.java Tue Aug 11 11:07:15 2015 +0200 +++ b/graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCTailDelayedLIRInstruction.java Tue Aug 11 11:34:13 2015 +0200 @@ -45,4 +45,11 @@ * . The DelayedControlTransfer instruction will emit the code just with Nop in the delay slot. */ public interface SPARCTailDelayedLIRInstruction extends SPARCLIRInstructionMixin { + default void setDelayedControlTransfer(SPARCDelayedControlTransfer holder) { + getSPARCLIRInstructionStore().delayedControlTransfer = holder; + } + + default SPARCDelayedControlTransfer getDelayedControlTransfer() { + return getSPARCLIRInstructionStore().delayedControlTransfer; + } }