@Nullable private T getVersionOne(int index) { checkIndex(index); final int startOffset; final int endOffset; if (index == 0) { startOffset = Integer.BYTES; endOffset = headerBuffer.getInt(0); } else { int headerPosition = (index - 1) * Integer.BYTES; startOffset = headerBuffer.getInt(headerPosition) + Integer.BYTES; endOffset = headerBuffer.getInt(headerPosition + Integer.BYTES); } return copyBufferAndGet(firstValueBuffer, startOffset, endOffset); }
@Nullable private T getVersionTwo(int index) { checkIndex(index); final int startOffset; final int endOffset; int relativePositionOfIndex = index & relativeIndexMask; if (relativePositionOfIndex == 0) { int headerPosition = index * Integer.BYTES; startOffset = Integer.BYTES; endOffset = headerBuffer.getInt(headerPosition); } else { int headerPosition = (index - 1) * Integer.BYTES; startOffset = headerBuffer.getInt(headerPosition) + Integer.BYTES; endOffset = headerBuffer.getInt(headerPosition + Integer.BYTES); } int fileNum = index >> logBaseTwoOfElementsPerValueFile; return copyBufferAndGet(valueBuffers[fileNum], startOffset, endOffset); }
@Nullable private T getVersionOne(int index) { checkIndex(index); final int startOffset; final int endOffset; if (index == 0) { startOffset = Integer.BYTES; endOffset = headerBuffer.getInt(0); } else { int headerPosition = (index - 1) * Integer.BYTES; startOffset = headerBuffer.getInt(headerPosition) + Integer.BYTES; endOffset = headerBuffer.getInt(headerPosition + Integer.BYTES); } return copyBufferAndGet(firstValueBuffer, startOffset, endOffset); }
@Nullable private T getVersionTwo(int index) { checkIndex(index); final int startOffset; final int endOffset; int relativePositionOfIndex = index & relativeIndexMask; if (relativePositionOfIndex == 0) { int headerPosition = index * Integer.BYTES; startOffset = Integer.BYTES; endOffset = headerBuffer.getInt(headerPosition); } else { int headerPosition = (index - 1) * Integer.BYTES; startOffset = headerBuffer.getInt(headerPosition) + Integer.BYTES; endOffset = headerBuffer.getInt(headerPosition + Integer.BYTES); } int fileNum = index >> logBaseTwoOfElementsPerValueFile; return copyBufferAndGet(valueBuffers[fileNum], startOffset, endOffset); }