Mercurial > hg > truffle
changeset 11357:307eec0f460f
fix incorrect lower bound in StampTool
author | Lukas Stadler <lukas.stadler@jku.at> |
---|---|
date | Mon, 19 Aug 2013 12:12:43 +0200 |
parents | 90201030d3cf |
children | a88f1ddbbad1 |
files | graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/IntegerStampTest.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/type/StampTool.java |
diffstat | 2 files changed, 5 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/IntegerStampTest.java Sat Aug 17 16:01:48 2013 +0200 +++ b/graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/IntegerStampTest.java Mon Aug 19 12:12:43 2013 +0200 @@ -174,6 +174,10 @@ StampTool.add(StampFactory.forInteger(Kind.Long, Long.MIN_VALUE, Long.MIN_VALUE + 1), StampFactory.forInteger(Kind.Long, Integer.MIN_VALUE, Integer.MAX_VALUE))); assertEquals(StampFactory.forInteger(Kind.Int, -2147483647, 31 - 2147483647), StampTool.add(StampFactory.forInteger(Kind.Int, 0, 31), StampFactory.forInteger(Kind.Int, -2147483647, -2147483647))); + } + @Test + public void testAnd() { + assertEquals(new IntegerStamp(Kind.Int, Integer.MIN_VALUE, 0x40000000L, 0, 0xc0000000L), StampTool.and(StampFactory.forKind(Kind.Int), StampFactory.forConstant(Constant.forInt(0xc0000000)))); } }
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/type/StampTool.java Sat Aug 17 16:01:48 2013 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/type/StampTool.java Mon Aug 19 12:12:43 2013 +0200 @@ -163,7 +163,7 @@ lowerBound = downMask; upperBound = upMask; } else { - lowerBound = upMask; + lowerBound = downMask | (-1L << (kind.getBitCount() - 1)); upperBound = kind.getMaxValue() & upMask; } if (kind == Kind.Int) {