Skip to content

Commit 06bc741

Browse files
committed
Switch back to ByteBlockPool
1 parent 214091c commit 06bc741

File tree

4 files changed

+139
-105
lines changed

4 files changed

+139
-105
lines changed

lucene/core/src/java/org/apache/lucene/util/ByteBlockPool.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -256,6 +256,18 @@ public void readBytes(final long offset, final byte[] bytes, int bytesOffset, in
256256
}
257257
}
258258

259+
/**
260+
* Read a single byte at the given offset
261+
*
262+
* @param offset the offset to read
263+
* @return the byte
264+
*/
265+
public byte readByte(final long offset) {
266+
int bufferIndex = (int) (offset >> BYTE_BLOCK_SHIFT);
267+
int pos = (int) (offset & BYTE_BLOCK_MASK);
268+
return buffers[bufferIndex][pos];
269+
}
270+
259271
@Override
260272
public long ramBytesUsed() {
261273
long size = BASE_RAM_BYTES;

lucene/core/src/java/org/apache/lucene/util/fst/RelativeReverseBytesReader.java renamed to lucene/core/src/java/org/apache/lucene/util/fst/ByteBlockPoolReverseBytesReader.java

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -17,41 +17,45 @@
1717
package org.apache.lucene.util.fst;
1818

1919
import java.io.IOException;
20+
import org.apache.lucene.util.ByteBlockPool;
2021

21-
/** Same as ReverseBytesReader but acts upon a relative position */
22-
final class RelativeReverseBytesReader extends FST.BytesReader {
22+
/** Reads in reverse from a ByteBlockPool. */
23+
final class ByteBlockPoolReverseBytesReader extends FST.BytesReader {
2324

24-
private final FST.BytesReader reader;
25+
private final ByteBlockPool buf;
2526
private final long relativePos;
27+
private long pos;
2628

27-
public RelativeReverseBytesReader(byte[] bytes, long relativePos) {
28-
this.reader = new ReverseBytesReader(bytes);
29+
public ByteBlockPoolReverseBytesReader(ByteBlockPool buf, long relativePos) {
30+
this.buf = buf;
2931
this.relativePos = relativePos;
3032
}
3133

3234
@Override
33-
public byte readByte() throws IOException {
34-
return reader.readByte();
35+
public byte readByte() {
36+
return buf.readByte(pos--);
3537
}
3638

3739
@Override
38-
public void readBytes(byte[] b, int offset, int len) throws IOException {
39-
reader.readBytes(b, offset, len);
40+
public void readBytes(byte[] b, int offset, int len) {
41+
for (int i = 0; i < len; i++) {
42+
b[offset + i] = buf.readByte(pos--);
43+
}
4044
}
4145

4246
@Override
43-
public void skipBytes(long count) throws IOException {
44-
reader.skipBytes(count);
47+
public void skipBytes(long numBytes) throws IOException {
48+
pos -= numBytes;
4549
}
4650

4751
@Override
4852
public long getPosition() {
49-
return reader.getPosition() + relativePos;
53+
return pos + relativePos;
5054
}
5155

5256
@Override
5357
public void setPosition(long pos) {
54-
reader.setPosition(pos - relativePos);
58+
this.pos = pos - relativePos;
5559
}
5660

5761
@Override

lucene/core/src/java/org/apache/lucene/util/fst/BytesStore.java

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -444,11 +444,7 @@ public boolean reversed() {
444444

445445
@Override
446446
public FST.BytesReader getReverseBytesReader() {
447-
return getReverseReader(true);
448-
}
449-
450-
FST.BytesReader getReverseReader(boolean allowSingle) {
451-
if (allowSingle && blocks.size() == 1) {
447+
if (blocks.size() == 1) {
452448
return new ReverseBytesReader(blocks.get(0));
453449
}
454450
return new FST.BytesReader() {

0 commit comments

Comments
 (0)