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