Mercurial > hg > truffle
changeset 14008:1658d30cd273
Fix type error in compare convert-constant optimization.
author | Roland Schatz <roland.schatz@oracle.com> |
---|---|
date | Mon, 24 Feb 2014 11:15:27 +0100 |
parents | 22804fafdb9f |
children | 384d7fc0e27b |
files | graal/com.oracle.graal.jtt/src/com/oracle/graal/jtt/optimize/ConvertCompare.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ConstantNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/CompareNode.java |
diffstat | 3 files changed, 23 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/graal/com.oracle.graal.jtt/src/com/oracle/graal/jtt/optimize/ConvertCompare.java Sat Feb 22 06:17:50 2014 +0100 +++ b/graal/com.oracle.graal.jtt/src/com/oracle/graal/jtt/optimize/ConvertCompare.java Mon Feb 24 11:15:27 2014 +0100 @@ -34,4 +34,13 @@ public void run0() throws Throwable { runTest("test", 0, 2.87f); } + + public static boolean testChar(int x) { + return ((char) x) == 42; + } + + @Test + public void run1() { + runTest("testChar", 42); + } }
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ConstantNode.java Sat Feb 22 06:17:50 2014 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ConstantNode.java Mon Feb 24 11:15:27 2014 +0100 @@ -160,6 +160,19 @@ } /** + * Returns a node for a primitive of a given type. + */ + public static ConstantNode forPrimitive(Stamp stamp, Constant constant, StructuredGraph graph) { + if (stamp instanceof IntegerStamp) { + assert constant.getKind().isNumericInteger() && stamp.getStackKind() == constant.getKind().getStackKind(); + return forIntegerStamp(stamp, constant.asLong(), graph); + } else { + assert constant.getKind().isNumericFloat() && stamp.getStackKind() == constant.getKind(); + return forPrimitive(constant, graph); + } + } + + /** * Returns a node for a double constant. * * @param d the double value for which to create the instruction
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/CompareNode.java Sat Feb 22 06:17:50 2014 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/CompareNode.java Mon Feb 24 11:15:27 2014 +0100 @@ -162,7 +162,7 @@ if (convert.isLossless()) { Constant reverseConverted = convert.reverse(constant); if (convert.convert(reverseConverted).equals(constant)) { - return ConstantNode.forPrimitive(reverseConverted, convert.graph()); + return ConstantNode.forPrimitive(convert.getInput().stamp(), reverseConverted, convert.graph()); } } return null;