# HG changeset patch # User Roland Schatz # Date 1383751794 -3600 # Node ID 4aec62c32a821a6d7e42da887215e270afd03fd2 # Parent 65513c398fd291aa4836fb8062d84d688d81e11b Helper functions for identifying numeric kinds. diff -r 65513c398fd2 -r 4aec62c32a82 graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/Constant.java --- a/graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/Constant.java Wed Nov 06 16:01:03 2013 +0100 +++ b/graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/Constant.java Wed Nov 06 16:29:54 2013 +0100 @@ -194,7 +194,7 @@ * @return the constant value */ public long asLong() { - assert getKind() == Kind.Long || getKind().getStackKind() == Kind.Int; + assert getKind().isNumericInteger(); return primitive; } diff -r 65513c398fd2 -r 4aec62c32a82 graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/Kind.java --- a/graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/Kind.java Wed Nov 06 16:01:03 2013 +0100 +++ b/graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/Kind.java Wed Nov 06 16:29:54 2013 +0100 @@ -117,6 +117,24 @@ } /** + * Checks whether this type is a Java primitive type representing an integer number. + * + * @return {@code true} if the stack kind is {@link #Int} or {@link #Long}. + */ + public boolean isNumericInteger() { + return isStackInt || this == Kind.Long; + } + + /** + * Checks whether this type is a Java primitive type representing a floating point number. + * + * @return {@code true} if this is {@link #Float} or {@link #Double}. + */ + public boolean isNumericFloat() { + return this == Kind.Float || this == Kind.Double; + } + + /** * Returns the kind corresponding to the Java type string. * * @param typeString the Java type string diff -r 65513c398fd2 -r 4aec62c32a82 graal/com.oracle.graal.compiler.amd64/src/com/oracle/graal/compiler/amd64/AMD64LIRGenerator.java --- a/graal/com.oracle.graal.compiler.amd64/src/com/oracle/graal/compiler/amd64/AMD64LIRGenerator.java Wed Nov 06 16:01:03 2013 +0100 +++ b/graal/com.oracle.graal.compiler.amd64/src/com/oracle/graal/compiler/amd64/AMD64LIRGenerator.java Wed Nov 06 16:29:54 2013 +0100 @@ -279,7 +279,7 @@ } private void emitIntegerTest(Value a, Value b) { - assert a.getKind().getStackKind() == Kind.Int || a.getKind() == Kind.Long; + assert a.getKind().isNumericInteger(); if (LIRValueUtil.isVariable(b)) { append(new AMD64TestOp(load(b), loadNonConst(a))); } else { diff -r 65513c398fd2 -r 4aec62c32a82 graal/com.oracle.graal.compiler.ptx/src/com/oracle/graal/compiler/ptx/PTXLIRGenerator.java --- a/graal/com.oracle.graal.compiler.ptx/src/com/oracle/graal/compiler/ptx/PTXLIRGenerator.java Wed Nov 06 16:01:03 2013 +0100 +++ b/graal/com.oracle.graal.compiler.ptx/src/com/oracle/graal/compiler/ptx/PTXLIRGenerator.java Wed Nov 06 16:29:54 2013 +0100 @@ -414,7 +414,7 @@ private void emitIntegerTest(Value a, Value b) { - assert a.getKind().getStackKind() == Kind.Int || a.getKind() == Kind.Long; + assert a.getKind().isNumericInteger(); if (LIRValueUtil.isVariable(b)) { append(new PTXTestOp(load(b), loadNonConst(a), nextPredRegNum)); diff -r 65513c398fd2 -r 4aec62c32a82 graal/com.oracle.graal.compiler.sparc/src/com/oracle/graal/compiler/sparc/SPARCLIRGenerator.java --- a/graal/com.oracle.graal.compiler.sparc/src/com/oracle/graal/compiler/sparc/SPARCLIRGenerator.java Wed Nov 06 16:01:03 2013 +0100 +++ b/graal/com.oracle.graal.compiler.sparc/src/com/oracle/graal/compiler/sparc/SPARCLIRGenerator.java Wed Nov 06 16:29:54 2013 +0100 @@ -267,7 +267,7 @@ } private void emitIntegerTest(Value a, Value b) { - assert a.getKind().getStackKind() == Kind.Int || a.getKind() == Kind.Long; + assert a.getKind().isNumericInteger(); if (LIRValueUtil.isVariable(b)) { append(new SPARCTestOp(load(b), loadNonConst(a))); } else { diff -r 65513c398fd2 -r 4aec62c32a82 graal/com.oracle.graal.java/src/com/oracle/graal/java/GraphBuilderPhase.java --- a/graal/com.oracle.graal.java/src/com/oracle/graal/java/GraphBuilderPhase.java Wed Nov 06 16:01:03 2013 +0100 +++ b/graal/com.oracle.graal.java/src/com/oracle/graal/java/GraphBuilderPhase.java Wed Nov 06 16:29:54 2013 +0100 @@ -747,7 +747,7 @@ ValueNode b = mirror ? x : y; CompareNode condition; - assert a.kind() != Kind.Double && a.kind() != Kind.Float; + assert !a.kind().isNumericFloat(); if (cond == Condition.EQ || cond == Condition.NE) { if (a.kind() == Kind.Object) { condition = new ObjectEqualsNode(a, b); diff -r 65513c398fd2 -r 4aec62c32a82 graal/com.oracle.graal.lir/src/com/oracle/graal/lir/asm/TargetMethodAssembler.java --- a/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/asm/TargetMethodAssembler.java Wed Nov 06 16:01:03 2013 +0100 +++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/asm/TargetMethodAssembler.java Wed Nov 06 16:29:54 2013 +0100 @@ -186,7 +186,7 @@ * including long constants that fit into the 32-bit range. */ public int asIntConst(Value value) { - assert (value.getKind().getStackKind() == Kind.Int || value.getKind() == Kind.Long) && isConstant(value); + assert (value.getKind().isNumericInteger()) && isConstant(value); Constant constant = (Constant) value; assert !codeCache.needsDataPatch(constant) : constant + " should be in a DataPatch"; long c = constant.asLong(); diff -r 65513c398fd2 -r 4aec62c32a82 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/CompareNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/CompareNode.java Wed Nov 06 16:01:03 2013 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/CompareNode.java Wed Nov 06 16:29:54 2013 +0100 @@ -147,22 +147,22 @@ public static CompareNode createCompareNode(StructuredGraph graph, Condition condition, ValueNode x, ValueNode y) { assert x.kind() == y.kind(); assert condition.isCanonical() : "condition is not canonical: " + condition; - assert x.kind() != Kind.Double && x.kind() != Kind.Float; + assert !x.kind().isNumericFloat(); CompareNode comparison; if (condition == Condition.EQ) { if (x.kind() == Kind.Object) { comparison = new ObjectEqualsNode(x, y); } else { - assert x.kind().getStackKind() == Kind.Int || x.kind() == Kind.Long; + assert x.kind().isNumericInteger(); comparison = new IntegerEqualsNode(x, y); } } else if (condition == Condition.LT) { - assert x.kind().getStackKind() == Kind.Int || x.kind() == Kind.Long; + assert x.kind().isNumericInteger(); comparison = new IntegerLessThanNode(x, y); } else { assert condition == Condition.BT; - assert x.kind().getStackKind() == Kind.Int || x.kind() == Kind.Long; + assert x.kind().isNumericInteger(); comparison = new IntegerBelowThanNode(x, y); } diff -r 65513c398fd2 -r 4aec62c32a82 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/Condition.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/Condition.java Wed Nov 06 16:01:03 2013 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/Condition.java Wed Nov 06 16:29:54 2013 +0100 @@ -322,7 +322,7 @@ * the comparison is known to be false */ public boolean foldCondition(Constant lt, Constant rt, ConstantReflectionProvider constantReflection) { - assert lt.getKind() != Kind.Double && lt.getKind() != Kind.Float && rt.getKind() != Kind.Double && rt.getKind() != Kind.Float; + assert !lt.getKind().isNumericFloat() && !rt.getKind().isNumericFloat(); return foldCondition(lt, rt, constantReflection, false); } diff -r 65513c398fd2 -r 4aec62c32a82 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/FloatArithmeticNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/FloatArithmeticNode.java Wed Nov 06 16:01:03 2013 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/FloatArithmeticNode.java Wed Nov 06 16:29:54 2013 +0100 @@ -32,6 +32,7 @@ public FloatArithmeticNode(Kind kind, ValueNode x, ValueNode y, boolean isStrictFP) { super(kind, x, y); + assert kind.isNumericFloat(); this.isStrictFP = isStrictFP; } diff -r 65513c398fd2 -r 4aec62c32a82 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IntegerAddNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IntegerAddNode.java Wed Nov 06 16:01:03 2013 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IntegerAddNode.java Wed Nov 06 16:29:54 2013 +0100 @@ -97,7 +97,7 @@ public static boolean isIntegerAddition(ValueNode result, ValueNode a, ValueNode b) { Kind kind = result.kind(); - if (kind != a.kind() || kind != b.kind() || !(kind.getStackKind() == Kind.Int || kind == Kind.Long)) { + if (kind != a.kind() || kind != b.kind() || !kind.isNumericInteger()) { return false; } if (result.isConstant() && a.isConstant() && b.isConstant()) { diff -r 65513c398fd2 -r 4aec62c32a82 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IntegerArithmeticNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IntegerArithmeticNode.java Wed Nov 06 16:01:03 2013 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IntegerArithmeticNode.java Wed Nov 06 16:29:54 2013 +0100 @@ -30,7 +30,7 @@ public IntegerArithmeticNode(Kind kind, ValueNode x, ValueNode y) { super(kind, x, y); - assert kind == Kind.Int || kind == Kind.Long; + assert kind.isNumericInteger(); } public static IntegerAddNode add(StructuredGraph graph, ValueNode v1, ValueNode v2) { diff -r 65513c398fd2 -r 4aec62c32a82 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IntegerBelowThanNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IntegerBelowThanNode.java Wed Nov 06 16:01:03 2013 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IntegerBelowThanNode.java Wed Nov 06 16:29:54 2013 +0100 @@ -39,8 +39,8 @@ */ public IntegerBelowThanNode(ValueNode x, ValueNode y) { super(x, y); - assert x.kind() != Kind.Double && x.kind() != Kind.Float && x.kind() != Kind.Object; - assert y.kind() != Kind.Double && y.kind() != Kind.Float && y.kind() != Kind.Object; + assert !x.kind().isNumericFloat() && x.kind() != Kind.Object; + assert !y.kind().isNumericFloat() && y.kind() != Kind.Object; } @Override diff -r 65513c398fd2 -r 4aec62c32a82 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IntegerEqualsNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IntegerEqualsNode.java Wed Nov 06 16:01:03 2013 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IntegerEqualsNode.java Wed Nov 06 16:29:54 2013 +0100 @@ -38,8 +38,8 @@ */ public IntegerEqualsNode(ValueNode x, ValueNode y) { super(x, y); - assert x.kind() != Kind.Double && x.kind() != Kind.Float && x.kind() != Kind.Object; - assert y.kind() != Kind.Double && y.kind() != Kind.Float && y.kind() != Kind.Object; + assert !x.kind().isNumericFloat() && x.kind() != Kind.Object; + assert !y.kind().isNumericFloat() && y.kind() != Kind.Object; } @Override diff -r 65513c398fd2 -r 4aec62c32a82 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IntegerLessThanNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IntegerLessThanNode.java Wed Nov 06 16:01:03 2013 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IntegerLessThanNode.java Wed Nov 06 16:29:54 2013 +0100 @@ -39,8 +39,8 @@ */ public IntegerLessThanNode(ValueNode x, ValueNode y) { super(x, y); - assert x.kind() != Kind.Double && x.kind() != Kind.Float && x.kind() != Kind.Object; - assert y.kind() != Kind.Double && y.kind() != Kind.Float && y.kind() != Kind.Object; + assert !x.kind().isNumericFloat() && x.kind() != Kind.Object; + assert !y.kind().isNumericFloat() && y.kind() != Kind.Object; } @Override diff -r 65513c398fd2 -r 4aec62c32a82 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/ReadNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/ReadNode.java Wed Nov 06 16:01:03 2013 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/ReadNode.java Wed Nov 06 16:29:54 2013 +0100 @@ -77,7 +77,7 @@ return ConstantNode.forConstant(constant, metaAccess, read.graph()); } } - } else if (object.kind() == Kind.Long || object.kind().getStackKind() == Kind.Int) { + } else if (object.kind().isNumericInteger()) { long base = object.asConstant().asLong(); if (base != 0L) { Constant constant = tool.getConstantReflection().readUnsafeConstant(kind, null, base + displacement, compressible); diff -r 65513c398fd2 -r 4aec62c32a82 graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/ReverseBytesNode.java --- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/ReverseBytesNode.java Wed Nov 06 16:01:03 2013 +0100 +++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/ReverseBytesNode.java Wed Nov 06 16:29:54 2013 +0100 @@ -38,7 +38,7 @@ public ReverseBytesNode(ValueNode value) { super(StampFactory.forKind(value.kind())); - assert kind().getStackKind() == Kind.Int || kind() == Kind.Long; + assert kind().isNumericInteger(); this.value = value; }