Mercurial > hg > graal-compiler
changeset 16164:3d76b518b007
refactoring of BitCountNode.inferStamp
author | Lukas Stadler <lukas.stadler@oracle.com> |
---|---|
date | Mon, 23 Jun 2014 17:03:21 +0200 |
parents | d5e66f2adf8f |
children | 0244e5bdddc1 |
files | graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/BitCountNode.java |
diffstat | 1 files changed, 3 insertions(+), 7 deletions(-) [+] |
line wrap: on
line diff
--- 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