[ https://issues.apache.org/jira/browse/LUCENE-9673?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17267611#comment-17267611 ]
mashudong commented on LUCENE-9673: ----------------------------------- Yes, it's probably an ancient bug. IMHO, ByteBlockPool do not have the same issue. > The level of IntBlockPool slice is always 1 > -------------------------------------------- > > Key: LUCENE-9673 > URL: https://issues.apache.org/jira/browse/LUCENE-9673 > Project: Lucene - Core > Issue Type: Bug > Components: core/other > Reporter: mashudong > Priority: Minor > > First slice is allocated by IntBlockPoo.newSlice(), and its level is 1, > > {code:java} > private int newSlice(final int size) { > if (intUpto > INT_BLOCK_SIZE-size) { > nextBuffer(); > assert assertSliceBuffer(buffer); > } > > final int upto = intUpto; > intUpto += size; > buffer[intUpto-1] = 1; > return upto; > }{code} > > > If one slice is not enough, IntBlockPoo.allocSlice() is called to allocate > more slices, > as the following code shows, level is 1, newLevel is NEXT_LEVEL_ARRAY[0] > which is also 1. > > The result is the level of IntBlockPool slice is always 1, the first slice is > 2 bytes long, and all subsequent slices are 4 bytes long. > > {code:java} > private static final int[] NEXT_LEVEL_ARRAY = {1, 2, 3, 4, 5, 6, 7, 8, 9, 9}; > private int allocSlice(final int[] slice, final int sliceOffset) { > final int level = slice[sliceOffset]; > final int newLevel = NEXT_LEVEL_ARRAY[level - 1]; > final int newSize = LEVEL_SIZE_ARRAY[newLevel]; > // Maybe allocate another block > if (intUpto > INT_BLOCK_SIZE - newSize) { > nextBuffer(); > assert assertSliceBuffer(buffer); > } > final int newUpto = intUpto; > final int offset = newUpto + intOffset; > intUpto += newSize; > // Write forwarding address at end of last slice: > slice[sliceOffset] = offset; > // Write new level: > buffer[intUpto - 1] = newLevel; > return newUpto; > } > {code} > -- This message was sent by Atlassian Jira (v8.3.4#803005) --------------------------------------------------------------------- To unsubscribe, e-mail: issues-unsubscr...@lucene.apache.org For additional commands, e-mail: issues-h...@lucene.apache.org