diff --git a/lucene/core/src/java/org/apache/lucene/codecs/lucene103/Lucene103PostingsReader.java b/lucene/core/src/java/org/apache/lucene/codecs/lucene103/Lucene103PostingsReader.java index ca9780833a1a..1c05e4847cb4 100644 --- a/lucene/core/src/java/org/apache/lucene/codecs/lucene103/Lucene103PostingsReader.java +++ b/lucene/core/src/java/org/apache/lucene/codecs/lucene103/Lucene103PostingsReader.java @@ -204,10 +204,11 @@ public void init(IndexInput termsIn, SegmentReadState state) throws IOException } } - static void prefixSum(int[] buffer, int count, long base) { - buffer[0] += base; - for (int i = 1; i < count; ++i) { - buffer[i] += buffer[i - 1]; + static void prefixSum(int[] buffer, int count, int base) { + int sum = base; + for (int i = 0; i < count; ++i) { + sum += buffer[i]; + buffer[i] = sum; } } @@ -617,9 +618,7 @@ private void refillFullBlock() throws IOException { for (int i = 0; i < numLongs - 1; ++i) { docCumulativeWordPopCounts[i] = Long.bitCount(docBitSet.getBits()[i]); } - for (int i = 1; i < numLongs - 1; ++i) { - docCumulativeWordPopCounts[i] += docCumulativeWordPopCounts[i - 1]; - } + prefixSum(docCumulativeWordPopCounts, numLongs - 1, 0); docCumulativeWordPopCounts[numLongs - 1] = BLOCK_SIZE; assert docCumulativeWordPopCounts[numLongs - 2] + Long.bitCount(docBitSet.getBits()[numLongs - 1])