# HG changeset patch # User Stefan Anzinger # Date 1430238901 -7200 # Node ID fb2b2741834746c078fdae7ceee4b1981ba52f61 # Parent 8722ffa310d0d3409e4ce8193955d658621efab4 [SPARC] Improve verify in Compare diff -r 8722ffa310d0 -r fb2b27418347 graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCCompare.java --- a/graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCCompare.java Tue Apr 28 18:07:08 2015 +0200 +++ b/graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCCompare.java Tue Apr 28 18:35:01 2015 +0200 @@ -33,6 +33,7 @@ import com.oracle.graal.compiler.common.*; import com.oracle.graal.lir.*; import com.oracle.graal.lir.asm.*; +import com.oracle.graal.lir.sparc.SPARCControlFlow.CompareBranchOp; public enum SPARCCompare { ICMP, @@ -63,11 +64,11 @@ @Override public void verify() { super.verify(); + assert CompareBranchOp.SUPPORTED_KINDS.contains(x.getKind()) : x.getKind(); + assert x.getKind().equals(y.getKind()) : x + " " + y; // @formatter:off - assert (name().startsWith("I") && - (!(x.getKind() == Kind.Int) || y.getKind().getStackKind() == Kind.Int) && - (!(x.getKind() == Kind.Short) || y.getKind().getStackKind() == Kind.Int) && - (!(x.getKind() == Kind.Byte) || y.getKind().getStackKind() == Kind.Int)) || + assert + (name().startsWith("I") && x.getKind() == Kind.Int && y.getKind().getStackKind() == Kind.Int) || (name().startsWith("L") && x.getKind() == Kind.Long && y.getKind() == Kind.Long) || (name().startsWith("A") && x.getKind() == Kind.Object && y.getKind() == Kind.Object) || (name().startsWith("F") && x.getKind() == Kind.Float && y.getKind() == Kind.Float) || diff -r 8722ffa310d0 -r fb2b27418347 graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCControlFlow.java --- a/graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCControlFlow.java Tue Apr 28 18:07:08 2015 +0200 +++ b/graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCControlFlow.java Tue Apr 28 18:35:01 2015 +0200 @@ -77,7 +77,7 @@ public static final class CompareBranchOp extends SPARCLIRInstruction implements BlockEndOp, SPARCDelayedControlTransfer { public static final LIRInstructionClass TYPE = LIRInstructionClass.create(CompareBranchOp.class); - private static final EnumSet SUPPORTED_KINDS = EnumSet.of(Kind.Long, Kind.Int, Kind.Object, Kind.Float, Kind.Double); + static final EnumSet SUPPORTED_KINDS = EnumSet.of(Kind.Long, Kind.Int, Kind.Object, Kind.Float, Kind.Double); private final SPARCCompare opcode; @Use({REG}) protected Value x; @@ -346,6 +346,11 @@ public void emitCode(CompilationResultBuilder crb, SPARCMacroAssembler masm) { emitBranch(crb, masm, kind, conditionFlag, trueDestination, falseDestination, true, trueDestinationProbability); } + + @Override + public void verify() { + assert CompareBranchOp.SUPPORTED_KINDS.contains(kind); + } } private static boolean emitBranch(CompilationResultBuilder crb, SPARCMacroAssembler masm, Kind kind, ConditionFlag conditionFlag, LabelRef trueDestination, LabelRef falseDestination,