This is an automated email from the ASF dual-hosted git repository.

dcapwell pushed a commit to branch CASSANDRA-21077
in repository https://gitbox.apache.org/repos/asf/cassandra-accord.git

commit 313f4ad87d1ae88d7d75ba0fa65818990e39b29f
Author: David Capwell <[email protected]>
AuthorDate: Fri Dec 12 15:42:40 2025 -0800

    rename setRange to show inclusive/exclusive and fixed a bug with small bit 
set where to=64 would no-op
---
 .../main/java/accord/utils/ImmutableBitSet.java    |  2 +-
 .../src/main/java/accord/utils/LargeBitSet.java    | 22 +++++++++++-----------
 .../src/main/java/accord/utils/SimpleBitSet.java   |  2 +-
 .../src/main/java/accord/utils/SmallBitSet.java    |  5 +++--
 4 files changed, 16 insertions(+), 15 deletions(-)

diff --git a/accord-core/src/main/java/accord/utils/ImmutableBitSet.java 
b/accord-core/src/main/java/accord/utils/ImmutableBitSet.java
index bdc4a3f4..0a9e4598 100644
--- a/accord-core/src/main/java/accord/utils/ImmutableBitSet.java
+++ b/accord-core/src/main/java/accord/utils/ImmutableBitSet.java
@@ -67,7 +67,7 @@ public class ImmutableBitSet extends LargeBitSet
     }
 
     @Override
-    public void setRange(int from, int to)
+    public void setRange(int fromInclusive, int toExclusive)
     {
         throw new UnsupportedOperationException();
     }
diff --git a/accord-core/src/main/java/accord/utils/LargeBitSet.java 
b/accord-core/src/main/java/accord/utils/LargeBitSet.java
index fbeae5bf..5d519e4e 100644
--- a/accord-core/src/main/java/accord/utils/LargeBitSet.java
+++ b/accord-core/src/main/java/accord/utils/LargeBitSet.java
@@ -98,36 +98,36 @@ public class LargeBitSet implements SimpleBitSet
         return true;
     }
 
-    public void setRange(int from, int to)
+    public void setRange(int fromInclusive, int toExclusive)
     {
-        Invariants.requireArgument(from <= to, "from > to (%s > %s)", from, 
to);
-        if (from == to)
+        Invariants.requireArgument(fromInclusive <= toExclusive, "from > to 
(%s > %s)", fromInclusive, toExclusive);
+        if (fromInclusive == toExclusive)
             return;
 
-        int fromIndex = from >>> 6;
-        int toIndex = (to + 63) >>> 6;
+        int fromIndex = fromInclusive >>> 6;
+        int toIndex = (toExclusive + 63) >>> 6;
         if (fromIndex + 1 == toIndex)
         {
-            long addBits = (-1L >>> (64 - (to & 63))) & (-1L << (from & 63));
+            long addBits = (-1L >>> (64 - (toExclusive & 63))) & (-1L << 
(fromInclusive & 63));
             orBitsAtIndex(fromIndex,  addBits);
         }
         else if (count == 0)
         {
-            bits[toIndex - 1] = -1L >>> (64 - (to & 63));
+            bits[toIndex - 1] = -1L >>> (64 - (toExclusive & 63));
             for (int i = fromIndex + 1, maxi = toIndex - 1; i < maxi ; ++i)
                 bits[i] = -1L;
-            bits[fromIndex] = -1L << (from & 63);
-            count = to - from;
+            bits[fromIndex] = -1L << (fromInclusive & 63);
+            count = toExclusive - fromInclusive;
         }
         else
         {
-            orBitsAtIndex(fromIndex, -1L << (from & 63));
+            orBitsAtIndex(fromIndex, -1L << (fromInclusive & 63));
             for (int i = fromIndex + 1, maxi = toIndex - 1; i < maxi ; ++i)
             {
                 count += 64 - Long.bitCount(bits[i]);
                 bits[i] = -1L;
             }
-            orBitsAtIndex(toIndex - 1, -1L >>> (64 - (to & 63)));
+            orBitsAtIndex(toIndex - 1, -1L >>> (64 - (toExclusive & 63)));
         }
     }
 
diff --git a/accord-core/src/main/java/accord/utils/SimpleBitSet.java 
b/accord-core/src/main/java/accord/utils/SimpleBitSet.java
index 4380e3c8..695ca935 100644
--- a/accord-core/src/main/java/accord/utils/SimpleBitSet.java
+++ b/accord-core/src/main/java/accord/utils/SimpleBitSet.java
@@ -22,7 +22,7 @@ public interface SimpleBitSet
 {
     boolean get(int i);
     boolean set(int i);
-    void setRange(int from, int to);
+    void setRange(int fromInclusive, int toExclusive);
     boolean unset(int i);
     void clear();
     boolean isEmpty();
diff --git a/accord-core/src/main/java/accord/utils/SmallBitSet.java 
b/accord-core/src/main/java/accord/utils/SmallBitSet.java
index 2deb43b3..3ac6e7f9 100644
--- a/accord-core/src/main/java/accord/utils/SmallBitSet.java
+++ b/accord-core/src/main/java/accord/utils/SmallBitSet.java
@@ -49,9 +49,10 @@ public class SmallBitSet implements SimpleBitSet
     }
 
     @Override
-    public void setRange(int from, int to)
+    public void setRange(int fromInclusive, int toExclusive)
     {
-        bits |= ~(-1L << to) & (-1L << from);
+        long maskTo = (toExclusive >= 64) ? -1L : ~(-1L << toExclusive);
+        bits |= maskTo & (-1L << fromInclusive);
     }
 
     public boolean get(int i)


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to