Mercurial > hg > graal-compiler
changeset 21137:fb2b27418347
[SPARC] Improve verify in Compare
author | Stefan Anzinger <stefan.anzinger@oracle.com> |
---|---|
date | Tue, 28 Apr 2015 18:35:01 +0200 |
parents | 8722ffa310d0 |
children | 7a62f41ed610 |
files | graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCCompare.java graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCControlFlow.java |
diffstat | 2 files changed, 11 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- 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) ||
--- 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<CompareBranchOp> TYPE = LIRInstructionClass.create(CompareBranchOp.class); - private static final EnumSet<Kind> SUPPORTED_KINDS = EnumSet.of(Kind.Long, Kind.Int, Kind.Object, Kind.Float, Kind.Double); + static final EnumSet<Kind> 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,