# HG changeset patch # User Lukas Stadler # Date 1403535801 -7200 # Node ID 3d76b518b0071a4158463940d6d4052321cc47a1 # Parent d5e66f2adf8f261fb950885f4b2b7af1496829e8 refactoring of BitCountNode.inferStamp diff -r d5e66f2adf8f -r 3d76b518b007 graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/BitCountNode.java --- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/BitCountNode.java Mon Jun 23 17:03:30 2014 +0200 +++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/BitCountNode.java Mon Jun 23 17:03:21 2014 +0200 @@ -39,14 +39,10 @@ @Override public boolean inferStamp() { - int min = 0; - int max = 0; IntegerStamp valueStamp = (IntegerStamp) getValue().stamp(); - for (int i = 0; i < valueStamp.getBits(); i++) { - min += (valueStamp.downMask() & (1L << i)) == 0 ? 0 : 1; - max += (valueStamp.upMask() & (1L << i)) == 0 ? 0 : 1; - } - return updateStamp(StampFactory.forInteger(Kind.Int, min, max)); + assert (valueStamp.downMask() & IntegerStamp.defaultMask(valueStamp.getBits())) == valueStamp.downMask(); + assert (valueStamp.upMask() & IntegerStamp.defaultMask(valueStamp.getBits())) == valueStamp.upMask(); + return updateStamp(StampFactory.forInteger(Kind.Int, bitCount(valueStamp.downMask()), bitCount(valueStamp.upMask()))); } @Override