[vfs][cleanup] remove 'final' from params/locals

GitOrigin-RevId: de92aacaa939069f4f22bf49a4b27d3cc6df6562
This commit is contained in:
Ruslan Cheremin
2024-03-27 16:33:40 +00:00
committed by intellij-monorepo-bot
parent 6707e4accd
commit 823a110625
@@ -136,7 +136,7 @@ public final class PersistentFSRecordsLockFreeOverMMappedFile implements Persist
private volatile int owningProcessId = 0;
public PersistentFSRecordsLockFreeOverMMappedFile(@NotNull MMappedFileStorage storage) throws IOException {
final int pageSize = storage.pageSize();
int pageSize = storage.pageSize();
if (pageSize < HEADER_SIZE) {
throw new IllegalArgumentException("pageSize(=" + pageSize + ") must fit header(=" + HEADER_SIZE + " b)");
}
@@ -148,7 +148,7 @@ public final class PersistentFSRecordsLockFreeOverMMappedFile implements Persist
headerPage = this.storage.pageByOffset(0);
final int modCount = getIntHeaderField(HEADER_GLOBAL_MOD_COUNT_OFFSET);
int modCount = getIntHeaderField(HEADER_GLOBAL_MOD_COUNT_OFFSET);
globalModCount.set(modCount);
if (UNALLOCATED_RECORDS_TO_CHECK_ZEROED > 0) {
@@ -164,26 +164,26 @@ public final class PersistentFSRecordsLockFreeOverMMappedFile implements Persist
}
@Override
public <R, E extends Throwable> R readRecord(final int recordId,
final @NotNull RecordReader<R, E> reader) throws E, IOException {
final long recordOffsetInFile = recordOffsetInFile(recordId);
final int recordOffsetOnPage = storage.toOffsetInPage(recordOffsetInFile);
final Page page = storage.pageByOffset(recordOffsetInFile);
final RecordAccessor recordAccessor = new RecordAccessor(recordId, recordOffsetOnPage, page, this);
public <R, E extends Throwable> R readRecord(int recordId,
@NotNull RecordReader<R, E> reader) throws E, IOException {
long recordOffsetInFile = recordOffsetInFile(recordId);
int recordOffsetOnPage = storage.toOffsetInPage(recordOffsetInFile);
Page page = storage.pageByOffset(recordOffsetInFile);
RecordAccessor recordAccessor = new RecordAccessor(recordId, recordOffsetOnPage, page, this);
return reader.readRecord(recordAccessor);
}
@Override
public <E extends Throwable> int updateRecord(final int recordId,
final @NotNull RecordUpdater<E> updater) throws E, IOException {
final int trueRecordId = (recordId <= NULL_ID) ?
allocateRecord() :
recordId;
final long recordOffsetInFile = recordOffsetInFile(recordId);
final int recordOffsetOnPage = storage.toOffsetInPage(recordOffsetInFile);
final Page page = storage.pageByOffset(recordOffsetInFile);
public <E extends Throwable> int updateRecord(int recordId,
@NotNull RecordUpdater<E> updater) throws E, IOException {
int trueRecordId = (recordId <= NULL_ID) ?
allocateRecord() :
recordId;
long recordOffsetInFile = recordOffsetInFile(recordId);
int recordOffsetOnPage = storage.toOffsetInPage(recordOffsetInFile);
Page page = storage.pageByOffset(recordOffsetInFile);
//RC: hope EscapeAnalysis removes the allocation here:
final RecordAccessor recordAccessor = new RecordAccessor(recordId, recordOffsetOnPage, page, this);
RecordAccessor recordAccessor = new RecordAccessor(recordId, recordOffsetOnPage, page, this);
boolean updated = updater.updateRecord(recordAccessor);
if (updated) {
incrementRecordVersion(recordAccessor.pageBuffer, recordOffsetOnPage);
@@ -192,12 +192,12 @@ public final class PersistentFSRecordsLockFreeOverMMappedFile implements Persist
}
@Override
public <R, E extends Throwable> R readHeader(final @NotNull HeaderReader<R, E> reader) throws E, IOException {
public <R, E extends Throwable> R readHeader(@NotNull HeaderReader<R, E> reader) throws E, IOException {
return reader.readHeader(headerAccessor);
}
@Override
public <E extends Throwable> void updateHeader(final @NotNull HeaderUpdater<E> updater) throws E, IOException {
public <E extends Throwable> void updateHeader(@NotNull HeaderUpdater<E> updater) throws E, IOException {
if (updater.updateHeader(headerAccessor)) {
incrementGlobalModCount();
}
@@ -210,10 +210,10 @@ public final class PersistentFSRecordsLockFreeOverMMappedFile implements Persist
private final transient ByteBuffer pageBuffer;
private final @NotNull PersistentFSRecordsLockFreeOverMMappedFile records;
private RecordAccessor(final int recordId,
final int recordOffsetInPage,
final Page recordPage,
final @NotNull PersistentFSRecordsLockFreeOverMMappedFile records) {
private RecordAccessor(int recordId,
int recordOffsetInPage,
Page recordPage,
@NotNull PersistentFSRecordsLockFreeOverMMappedFile records) {
this.recordId = recordId;
this.recordOffsetInPage = recordOffsetInPage;
pageBuffer = recordPage.rawPageBuffer();
@@ -267,53 +267,53 @@ public final class PersistentFSRecordsLockFreeOverMMappedFile implements Persist
}
@Override
public void setAttributeRecordId(final int attributeRecordId) {
public void setAttributeRecordId(int attributeRecordId) {
checkValidIdField(recordId, attributeRecordId, "attributeRecordId");
setIntField(RecordLayout.ATTR_REF_OFFSET, attributeRecordId);
}
@Override
public void setParent(final int parentId) {
public void setParent(int parentId) {
records.checkParentIdIsValid(parentId);
setIntField(RecordLayout.PARENT_REF_OFFSET, parentId);
}
@Override
public void setNameId(final int nameId) {
public void setNameId(int nameId) {
checkValidIdField(recordId, nameId, "nameId");
setIntField(RecordLayout.NAME_REF_OFFSET, nameId);
}
@Override
public boolean setFlags(final @PersistentFS.Attributes int flags) {
public boolean setFlags(@PersistentFS.Attributes int flags) {
return setIntFieldIfChanged(RecordLayout.FLAGS_OFFSET, flags);
}
@Override
public boolean setLength(final long length) {
public boolean setLength(long length) {
return setLongFieldIfChanged(RecordLayout.LENGTH_OFFSET, length);
}
@Override
public boolean setTimestamp(final long timestamp) {
public boolean setTimestamp(long timestamp) {
return setLongFieldIfChanged(RecordLayout.TIMESTAMP_OFFSET, timestamp);
}
@Override
public boolean setContentRecordId(final int contentRecordId) {
public boolean setContentRecordId(int contentRecordId) {
checkValidIdField(recordId, contentRecordId, "contentRecordId");
return setIntFieldIfChanged(RecordLayout.CONTENT_REF_OFFSET, contentRecordId);
}
private long getLongField(final int fieldRelativeOffset) {
private long getLongField(int fieldRelativeOffset) {
return (long)LONG_HANDLE.getVolatile(pageBuffer, recordOffsetInPage + fieldRelativeOffset);
}
private boolean setLongFieldIfChanged(final int fieldRelativeOffset,
final long newValue) {
final int fieldOffsetInPage = recordOffsetInPage + fieldRelativeOffset;
final long oldValue = (long)LONG_HANDLE.getVolatile(pageBuffer, fieldOffsetInPage);
private boolean setLongFieldIfChanged(int fieldRelativeOffset,
long newValue) {
int fieldOffsetInPage = recordOffsetInPage + fieldRelativeOffset;
long oldValue = (long)LONG_HANDLE.getVolatile(pageBuffer, fieldOffsetInPage);
if (oldValue != newValue) {
setLongVolatile(pageBuffer, fieldOffsetInPage, newValue);
return true;
@@ -321,19 +321,19 @@ public final class PersistentFSRecordsLockFreeOverMMappedFile implements Persist
return false;
}
private int getIntField(final int fieldRelativeOffset) {
private int getIntField(int fieldRelativeOffset) {
return (int)INT_HANDLE.getVolatile(pageBuffer, recordOffsetInPage + fieldRelativeOffset);
}
private void setIntField(final int fieldRelativeOffset,
final int newValue) {
private void setIntField(int fieldRelativeOffset,
int newValue) {
setIntVolatile(pageBuffer, recordOffsetInPage + fieldRelativeOffset, newValue);
}
private boolean setIntFieldIfChanged(final int fieldRelativeOffset,
final int newValue) {
final int fieldOffsetInPage = recordOffsetInPage + fieldRelativeOffset;
final int oldValue = (int)INT_HANDLE.getVolatile(pageBuffer, fieldOffsetInPage);
private boolean setIntFieldIfChanged(int fieldRelativeOffset,
int newValue) {
int fieldOffsetInPage = recordOffsetInPage + fieldRelativeOffset;
int oldValue = (int)INT_HANDLE.getVolatile(pageBuffer, fieldOffsetInPage);
if (oldValue != newValue) {
setIntVolatile(pageBuffer, fieldOffsetInPage, newValue);
return true;
@@ -345,7 +345,7 @@ public final class PersistentFSRecordsLockFreeOverMMappedFile implements Persist
private static final class HeaderAccessor implements HeaderForUpdate {
private final @NotNull PersistentFSRecordsLockFreeOverMMappedFile records;
private HeaderAccessor(final @NotNull PersistentFSRecordsLockFreeOverMMappedFile records) { this.records = records; }
private HeaderAccessor(@NotNull PersistentFSRecordsLockFreeOverMMappedFile records) { this.records = records; }
@Override
public long getTimestamp() throws IOException {
@@ -363,7 +363,7 @@ public final class PersistentFSRecordsLockFreeOverMMappedFile implements Persist
}
@Override
public void setVersion(final int version) throws IOException {
public void setVersion(int version) throws IOException {
records.setVersion(version);
}
}
@@ -374,8 +374,8 @@ public final class PersistentFSRecordsLockFreeOverMMappedFile implements Persist
@Override
public int allocateRecord() {
final Page headerPage = headerPage();
final ByteBuffer headerPageBuffer = headerPage.rawPageBuffer();
Page headerPage = headerPage();
ByteBuffer headerPageBuffer = headerPage.rawPageBuffer();
while (true) {// CAS loop:
int allocatedRecords = (int)INT_HANDLE.getVolatile(headerPageBuffer, HEADER_RECORDS_ALLOCATED);
int newAllocatedRecords = allocatedRecords + 1;
@@ -388,72 +388,72 @@ public final class PersistentFSRecordsLockFreeOverMMappedFile implements Persist
// 'one field at a time' operations
@Override
public void setAttributeRecordId(final int recordId,
final int attributeRecordId) throws IOException {
public void setAttributeRecordId(int recordId,
int attributeRecordId) throws IOException {
checkValidIdField(recordId, attributeRecordId, "attributeRecordId");
setIntField(recordId, RecordLayout.ATTR_REF_OFFSET, attributeRecordId);
}
@Override
public int getAttributeRecordId(final int recordId) throws IOException {
public int getAttributeRecordId(int recordId) throws IOException {
return getIntField(recordId, RecordLayout.ATTR_REF_OFFSET);
}
@Override
public int getParent(final int recordId) throws IOException {
public int getParent(int recordId) throws IOException {
return getIntField(recordId, RecordLayout.PARENT_REF_OFFSET);
}
@Override
public void setParent(final int recordId,
final int parentId) throws IOException {
public void setParent(int recordId,
int parentId) throws IOException {
checkParentIdIsValid(parentId);
setIntField(recordId, RecordLayout.PARENT_REF_OFFSET, parentId);
}
@Override
public int getNameId(final int recordId) throws IOException {
public int getNameId(int recordId) throws IOException {
return getIntField(recordId, RecordLayout.NAME_REF_OFFSET);
}
@Override
public int updateNameId(final int recordId,
final int nameId) throws IOException {
public int updateNameId(int recordId,
int nameId) throws IOException {
PersistentFSConnection.ensureIdIsValid(nameId);
return getAndSetIntField(recordId, RecordLayout.NAME_REF_OFFSET, nameId);
}
@Override
public boolean setFlags(final int recordId,
final @PersistentFS.Attributes int newFlags) throws IOException {
final long recordOffsetInFile = recordOffsetInFile(recordId);
final int recordOffsetOnPage = storage.toOffsetInPage(recordOffsetInFile);
final Page page = storage.pageByOffset(recordOffsetInFile);
final ByteBuffer pageBuffer = page.rawPageBuffer();
public boolean setFlags(int recordId,
@PersistentFS.Attributes int newFlags) throws IOException {
long recordOffsetInFile = recordOffsetInFile(recordId);
int recordOffsetOnPage = storage.toOffsetInPage(recordOffsetInFile);
Page page = storage.pageByOffset(recordOffsetInFile);
ByteBuffer pageBuffer = page.rawPageBuffer();
return setIntFieldIfChanged(pageBuffer, recordOffsetOnPage, RecordLayout.FLAGS_OFFSET, newFlags);
}
@Override
public @PersistentFS.Attributes int getFlags(final int recordId) throws IOException {
public @PersistentFS.Attributes int getFlags(int recordId) throws IOException {
//noinspection MagicConstant
return getIntField(recordId, RecordLayout.FLAGS_OFFSET);
}
@Override
public long getLength(final int recordId) throws IOException {
public long getLength(int recordId) throws IOException {
return getLongField(recordId, RecordLayout.LENGTH_OFFSET);
}
@Override
public boolean setLength(final int recordId,
final long newLength) throws IOException {
final long recordOffsetInFile = recordOffsetInFile(recordId);
final int recordOffsetOnPage = storage.toOffsetInPage(recordOffsetInFile);
final int fieldOffsetOnPage = recordOffsetOnPage + RecordLayout.LENGTH_OFFSET;
final Page page = storage.pageByOffset(recordOffsetInFile);
final ByteBuffer pageBuffer = page.rawPageBuffer();
final long storedLength = (long)LONG_HANDLE.getVolatile(pageBuffer, fieldOffsetOnPage);
public boolean setLength(int recordId,
long newLength) throws IOException {
long recordOffsetInFile = recordOffsetInFile(recordId);
int recordOffsetOnPage = storage.toOffsetInPage(recordOffsetInFile);
int fieldOffsetOnPage = recordOffsetOnPage + RecordLayout.LENGTH_OFFSET;
Page page = storage.pageByOffset(recordOffsetInFile);
ByteBuffer pageBuffer = page.rawPageBuffer();
long storedLength = (long)LONG_HANDLE.getVolatile(pageBuffer, fieldOffsetOnPage);
if (storedLength != newLength) {
setLongVolatile(pageBuffer, fieldOffsetOnPage, newLength);
incrementRecordVersion(pageBuffer, recordOffsetOnPage);
@@ -465,56 +465,56 @@ public final class PersistentFSRecordsLockFreeOverMMappedFile implements Persist
@Override
public long getTimestamp(final int recordId) throws IOException {
public long getTimestamp(int recordId) throws IOException {
return getLongField(recordId, RecordLayout.TIMESTAMP_OFFSET);
}
@Override
public boolean setTimestamp(final int recordId,
final long newTimestamp) throws IOException {
final long recordOffsetInFile = recordOffsetInFile(recordId);
final int recordOffsetOnPage = storage.toOffsetInPage(recordOffsetInFile);
final Page page = storage.pageByOffset(recordOffsetInFile);
final ByteBuffer pageBuffer = page.rawPageBuffer();
public boolean setTimestamp(int recordId,
long newTimestamp) throws IOException {
long recordOffsetInFile = recordOffsetInFile(recordId);
int recordOffsetOnPage = storage.toOffsetInPage(recordOffsetInFile);
Page page = storage.pageByOffset(recordOffsetInFile);
ByteBuffer pageBuffer = page.rawPageBuffer();
return setLongFieldIfChanged(pageBuffer, recordOffsetOnPage, RecordLayout.TIMESTAMP_OFFSET, newTimestamp);
}
@Override
public int getModCount(final int recordId) throws IOException {
public int getModCount(int recordId) throws IOException {
return getIntField(recordId, RecordLayout.MOD_COUNT_OFFSET);
}
@Override
public int getContentRecordId(final int recordId) throws IOException {
public int getContentRecordId(int recordId) throws IOException {
return getIntField(recordId, RecordLayout.CONTENT_REF_OFFSET);
}
@Override
public boolean setContentRecordId(final int recordId,
final int newContentRecordId) throws IOException {
public boolean setContentRecordId(int recordId,
int newContentRecordId) throws IOException {
checkValidIdField(recordId, newContentRecordId, "contentRecordId");
final long recordOffsetInFile = recordOffsetInFile(recordId);
final int recordOffsetOnPage = storage.toOffsetInPage(recordOffsetInFile);
final Page page = storage.pageByOffset(recordOffsetInFile);
final ByteBuffer pageBuffer = page.rawPageBuffer();
long recordOffsetInFile = recordOffsetInFile(recordId);
int recordOffsetOnPage = storage.toOffsetInPage(recordOffsetInFile);
Page page = storage.pageByOffset(recordOffsetInFile);
ByteBuffer pageBuffer = page.rawPageBuffer();
return setIntFieldIfChanged(pageBuffer, recordOffsetOnPage, RecordLayout.CONTENT_REF_OFFSET, newContentRecordId);
}
@Override
public void fillRecord(final int recordId,
final long timestamp,
final long length,
final int flags,
final int nameId,
final int parentId,
final boolean cleanAttributeRef) throws IOException {
public void fillRecord(int recordId,
long timestamp,
long length,
int flags,
int nameId,
int parentId,
boolean cleanAttributeRef) throws IOException {
checkParentIdIsValid(parentId);
final long recordOffsetInFile = recordOffsetInFile(recordId);
final int recordOffsetOnPage = storage.toOffsetInPage(recordOffsetInFile);
final Page page = storage.pageByOffset(recordOffsetInFile);
final ByteBuffer pageBuffer = page.rawPageBuffer();
long recordOffsetInFile = recordOffsetInFile(recordId);
int recordOffsetOnPage = storage.toOffsetInPage(recordOffsetInFile);
Page page = storage.pageByOffset(recordOffsetInFile);
ByteBuffer pageBuffer = page.rawPageBuffer();
setIntVolatile(pageBuffer, recordOffsetOnPage + RecordLayout.PARENT_REF_OFFSET, parentId);
setIntVolatile(pageBuffer, recordOffsetOnPage + RecordLayout.NAME_REF_OFFSET, nameId);
setIntVolatile(pageBuffer, recordOffsetOnPage + RecordLayout.FLAGS_OFFSET, flags);
@@ -529,37 +529,37 @@ public final class PersistentFSRecordsLockFreeOverMMappedFile implements Persist
}
@Override
public void markRecordAsModified(final int recordId) throws IOException {
final long recordOffsetInFile = recordOffsetInFile(recordId);
final int recordOffsetOnPage = storage.toOffsetInPage(recordOffsetInFile);
final Page page = storage.pageByOffset(recordOffsetInFile);
public void markRecordAsModified(int recordId) throws IOException {
long recordOffsetInFile = recordOffsetInFile(recordId);
int recordOffsetOnPage = storage.toOffsetInPage(recordOffsetInFile);
Page page = storage.pageByOffset(recordOffsetInFile);
incrementRecordVersion(page.rawPageBuffer(), recordOffsetOnPage);
}
@Override
public void cleanRecord(final int recordId) throws IOException {
public void cleanRecord(int recordId) throws IOException {
checkRecordIdIsValid(recordId);
//fill record with zeroes, by 4 bytes at once:
assert RecordLayout.RECORD_SIZE_IN_BYTES % Integer.BYTES == 0
: "RECORD_SIZE_IN_BYTES(=" + RecordLayout.RECORD_SIZE_IN_BYTES + ") is expected to be 32-aligned";
final int recordSizeInInts = RecordLayout.RECORD_SIZE_IN_BYTES / Integer.BYTES;
int recordSizeInInts = RecordLayout.RECORD_SIZE_IN_BYTES / Integer.BYTES;
final long recordOffsetInFile = recordOffsetInFile(recordId);
final int recordOffsetOnPage = storage.toOffsetInPage(recordOffsetInFile);
final Page page = storage.pageByOffset(recordOffsetInFile);
final ByteBuffer pageBuffer = page.rawPageBuffer();
long recordOffsetInFile = recordOffsetInFile(recordId);
int recordOffsetOnPage = storage.toOffsetInPage(recordOffsetInFile);
Page page = storage.pageByOffset(recordOffsetInFile);
ByteBuffer pageBuffer = page.rawPageBuffer();
for (int wordNo = 0; wordNo < recordSizeInInts; wordNo++) {
final int offsetOfWord = recordOffsetOnPage + wordNo * Integer.BYTES;
int offsetOfWord = recordOffsetOnPage + wordNo * Integer.BYTES;
setIntVolatile(pageBuffer, offsetOfWord, 0);
}
}
@Override
public boolean processAllRecords(final @NotNull PersistentFSRecordsStorage.FsRecordProcessor processor) throws IOException {
final int recordsCount = maxAllocatedID();
public boolean processAllRecords(@NotNull PersistentFSRecordsStorage.FsRecordProcessor processor) throws IOException {
int recordsCount = maxAllocatedID();
for (int recordId = MIN_VALID_ID; recordId <= recordsCount; recordId++) {
processor.process(
recordId,
@@ -669,7 +669,7 @@ public final class PersistentFSRecordsLockFreeOverMMappedFile implements Persist
}
@Override
public void setVersion(final int version) {
public void setVersion(int version) {
setIntHeaderField(HEADER_VERSION_OFFSET, version);
setLongHeaderField(HEADER_TIMESTAMP_OFFSET, System.currentTimeMillis());
incrementGlobalModCount();
@@ -786,28 +786,28 @@ public final class PersistentFSRecordsLockFreeOverMMappedFile implements Persist
/** Without recordId bounds checking */
@VisibleForTesting
long recordOffsetInFileUnchecked(final int recordId) {
long recordOffsetInFileUnchecked(int recordId) {
//recordId is 1-based, convert to 0-based recordNo:
final int recordNo = recordId - 1;
int recordNo = recordId - 1;
if (recordNo < recordsOnHeaderPage) {
return HEADER_SIZE + recordNo * (long)RecordLayout.RECORD_SIZE_IN_BYTES;
}
//as-if there were no header:
final int fullPages = recordNo / recordsPerPage;
final int recordsOnLastPage = recordNo % recordsPerPage;
int fullPages = recordNo / recordsPerPage;
int recordsOnLastPage = recordNo % recordsPerPage;
//header on the first page "pushes out" few records:
final int recordsExcessBecauseOfHeader = recordsPerPage - recordsOnHeaderPage;
int recordsExcessBecauseOfHeader = recordsPerPage - recordsOnHeaderPage;
//so the last page could turn into +1 page:
final int recordsReallyOnLastPage = recordsOnLastPage + recordsExcessBecauseOfHeader;
int recordsReallyOnLastPage = recordsOnLastPage + recordsExcessBecauseOfHeader;
return (long)(fullPages + recordsReallyOnLastPage / recordsPerPage) * pageSize
+ (long)(recordsReallyOnLastPage % recordsPerPage) * RecordLayout.RECORD_SIZE_IN_BYTES;
}
private long recordOffsetInFile(final int recordId) throws IndexOutOfBoundsException {
private long recordOffsetInFile(int recordId) throws IndexOutOfBoundsException {
checkRecordIdIsValid(recordId);
return recordOffsetInFileUnchecked(recordId);
}
@@ -849,32 +849,32 @@ public final class PersistentFSRecordsLockFreeOverMMappedFile implements Persist
return getIntHeaderField(HEADER_RECORDS_ALLOCATED);
}
private void setLongField(final int recordId,
@FieldOffset final int fieldRelativeOffset,
final long fieldValue) throws IOException {
final long recordOffsetInFile = recordOffsetInFile(recordId);
final int recordOffsetOnPage = storage.toOffsetInPage(recordOffsetInFile);
final Page page = storage.pageByOffset(recordOffsetInFile);
final ByteBuffer pageBuffer = page.rawPageBuffer();
private void setLongField(int recordId,
@FieldOffset int fieldRelativeOffset,
long fieldValue) throws IOException {
long recordOffsetInFile = recordOffsetInFile(recordId);
int recordOffsetOnPage = storage.toOffsetInPage(recordOffsetInFile);
Page page = storage.pageByOffset(recordOffsetInFile);
ByteBuffer pageBuffer = page.rawPageBuffer();
setLongVolatile(pageBuffer, recordOffsetOnPage + fieldRelativeOffset, fieldValue);
incrementRecordVersion(pageBuffer, recordOffsetOnPage);
}
private long getLongField(final int recordId,
@FieldOffset final int fieldRelativeOffset) throws IOException {
final long recordOffsetInFile = recordOffsetInFile(recordId);
final int recordOffsetOnPage = storage.toOffsetInPage(recordOffsetInFile);
final Page page = storage.pageByOffset(recordOffsetInFile);
final ByteBuffer pageBuffer = page.rawPageBuffer();
private long getLongField(int recordId,
@FieldOffset int fieldRelativeOffset) throws IOException {
long recordOffsetInFile = recordOffsetInFile(recordId);
int recordOffsetOnPage = storage.toOffsetInPage(recordOffsetInFile);
Page page = storage.pageByOffset(recordOffsetInFile);
ByteBuffer pageBuffer = page.rawPageBuffer();
return (long)LONG_HANDLE.getVolatile(pageBuffer, recordOffsetOnPage + fieldRelativeOffset);
}
private boolean setLongFieldIfChanged(final ByteBuffer pageBuffer,
final int recordOffsetOnPage,
@FieldOffset final int fieldRelativeOffset,
final long newValue) {
final int fieldOffsetOnPage = recordOffsetOnPage + fieldRelativeOffset;
final long oldValue = (long)LONG_HANDLE.getVolatile(pageBuffer, fieldOffsetOnPage);
private boolean setLongFieldIfChanged(ByteBuffer pageBuffer,
int recordOffsetOnPage,
@FieldOffset int fieldRelativeOffset,
long newValue) {
int fieldOffsetOnPage = recordOffsetOnPage + fieldRelativeOffset;
long oldValue = (long)LONG_HANDLE.getVolatile(pageBuffer, fieldOffsetOnPage);
if (oldValue != newValue) {
setLongVolatile(pageBuffer, fieldOffsetOnPage, newValue);
incrementRecordVersion(pageBuffer, recordOffsetOnPage);
@@ -884,44 +884,44 @@ public final class PersistentFSRecordsLockFreeOverMMappedFile implements Persist
}
private void setIntField(final int recordId,
@FieldOffset final int fieldRelativeOffset,
final int fieldValue) throws IOException {
final long recordOffsetInFile = recordOffsetInFile(recordId);
final int recordOffsetOnPage = storage.toOffsetInPage(recordOffsetInFile);
final Page page = storage.pageByOffset(recordOffsetInFile);
final ByteBuffer pageBuffer = page.rawPageBuffer();
private void setIntField(int recordId,
@FieldOffset int fieldRelativeOffset,
int fieldValue) throws IOException {
long recordOffsetInFile = recordOffsetInFile(recordId);
int recordOffsetOnPage = storage.toOffsetInPage(recordOffsetInFile);
Page page = storage.pageByOffset(recordOffsetInFile);
ByteBuffer pageBuffer = page.rawPageBuffer();
setIntVolatile(pageBuffer, recordOffsetOnPage + fieldRelativeOffset, fieldValue);
incrementRecordVersion(pageBuffer, recordOffsetOnPage);
}
private int getAndSetIntField(final int recordId,
@FieldOffset final int fieldRelativeOffset,
final int fieldValue) throws IOException {
final long recordOffsetInFile = recordOffsetInFile(recordId);
final int recordOffsetOnPage = storage.toOffsetInPage(recordOffsetInFile);
final Page page = storage.pageByOffset(recordOffsetInFile);
final ByteBuffer pageBuffer = page.rawPageBuffer();
private int getAndSetIntField(int recordId,
@FieldOffset int fieldRelativeOffset,
int fieldValue) throws IOException {
long recordOffsetInFile = recordOffsetInFile(recordId);
int recordOffsetOnPage = storage.toOffsetInPage(recordOffsetInFile);
Page page = storage.pageByOffset(recordOffsetInFile);
ByteBuffer pageBuffer = page.rawPageBuffer();
int previousValue = getAndSetIntVolatile(pageBuffer, recordOffsetOnPage + fieldRelativeOffset, fieldValue);
incrementRecordVersion(pageBuffer, recordOffsetOnPage);
return previousValue;
}
private int getIntField(final int recordId,
@FieldOffset final int fieldRelativeOffset) throws IOException {
final long recordOffsetInFile = recordOffsetInFile(recordId);
final int recordOffsetOnPage = storage.toOffsetInPage(recordOffsetInFile);
final Page page = storage.pageByOffset(recordOffsetInFile);
final ByteBuffer pageBuffer = page.rawPageBuffer();
private int getIntField(int recordId,
@FieldOffset int fieldRelativeOffset) throws IOException {
long recordOffsetInFile = recordOffsetInFile(recordId);
int recordOffsetOnPage = storage.toOffsetInPage(recordOffsetInFile);
Page page = storage.pageByOffset(recordOffsetInFile);
ByteBuffer pageBuffer = page.rawPageBuffer();
return (int)INT_HANDLE.getVolatile(pageBuffer, recordOffsetOnPage + fieldRelativeOffset);
}
private boolean setIntFieldIfChanged(final ByteBuffer pageBuffer,
final int recordOffsetOnPage,
final int fieldRelativeOffset,
final int newValue) {
final int fieldOffsetOnPage = recordOffsetOnPage + fieldRelativeOffset;
final int oldValue = (int)INT_HANDLE.getVolatile(pageBuffer, fieldOffsetOnPage);
private boolean setIntFieldIfChanged(ByteBuffer pageBuffer,
int recordOffsetOnPage,
int fieldRelativeOffset,
int newValue) {
int fieldOffsetOnPage = recordOffsetOnPage + fieldRelativeOffset;
int oldValue = (int)INT_HANDLE.getVolatile(pageBuffer, fieldOffsetOnPage);
if (oldValue != newValue) {
setIntVolatile(pageBuffer, fieldOffsetOnPage, newValue);
incrementRecordVersion(pageBuffer, recordOffsetOnPage);
@@ -932,8 +932,8 @@ public final class PersistentFSRecordsLockFreeOverMMappedFile implements Persist
}
private void incrementRecordVersion(final @NotNull ByteBuffer pageBuffer,
final int recordOffsetOnPage) {
private void incrementRecordVersion(@NotNull ByteBuffer pageBuffer,
int recordOffsetOnPage) {
int globalModCount = incrementGlobalModCount();
setIntVolatile(pageBuffer, recordOffsetOnPage + RecordLayout.MOD_COUNT_OFFSET, globalModCount);
}
@@ -948,25 +948,25 @@ public final class PersistentFSRecordsLockFreeOverMMappedFile implements Persist
//============ header fields access: ============================================================ //
private void setLongHeaderField(final @HeaderOffset int headerRelativeOffsetBytes,
final long headerValue) {
private void setLongHeaderField(@HeaderOffset int headerRelativeOffsetBytes,
long headerValue) {
checkHeaderOffset(headerRelativeOffsetBytes);
setLongVolatile(headerPage().rawPageBuffer(), headerRelativeOffsetBytes, headerValue);
}
private long getLongHeaderField(final @HeaderOffset int headerRelativeOffsetBytes) {
private long getLongHeaderField(@HeaderOffset int headerRelativeOffsetBytes) {
checkHeaderOffset(headerRelativeOffsetBytes);
return (long)LONG_HANDLE.getVolatile(headerPage().rawPageBuffer(), headerRelativeOffsetBytes);
}
private void setIntHeaderField(final @HeaderOffset int headerRelativeOffsetBytes,
final int headerValue) {
private void setIntHeaderField(@HeaderOffset int headerRelativeOffsetBytes,
int headerValue) {
checkHeaderOffset(headerRelativeOffsetBytes);
setIntVolatile(headerPage().rawPageBuffer(), headerRelativeOffsetBytes, headerValue);
}
private int getIntHeaderField(final @HeaderOffset int headerRelativeOffsetBytes) {
private int getIntHeaderField(@HeaderOffset int headerRelativeOffsetBytes) {
checkHeaderOffset(headerRelativeOffsetBytes);
return (int)INT_HANDLE.getVolatile(headerPage().rawPageBuffer(), headerRelativeOffsetBytes);
}
@@ -979,7 +979,7 @@ public final class PersistentFSRecordsLockFreeOverMMappedFile implements Persist
return page;
}
private static void checkHeaderOffset(final int headerRelativeOffset) {
private static void checkHeaderOffset(int headerRelativeOffset) {
if (!(0 <= headerRelativeOffset && headerRelativeOffset < HEADER_SIZE)) {
throw new IndexOutOfBoundsException(
"headerFieldOffset(=" + headerRelativeOffset + ") is outside of header [0, " + HEADER_SIZE + ") ");
@@ -987,21 +987,21 @@ public final class PersistentFSRecordsLockFreeOverMMappedFile implements Persist
}
private static void setIntVolatile(final ByteBuffer pageBuffer,
final int offsetInBuffer,
final int value) {
private static void setIntVolatile(ByteBuffer pageBuffer,
int offsetInBuffer,
int value) {
INT_HANDLE.setVolatile(pageBuffer, offsetInBuffer, value);
}
private static int getAndSetIntVolatile(final ByteBuffer pageBuffer,
final int offsetInBuffer,
final int value) {
private static int getAndSetIntVolatile(ByteBuffer pageBuffer,
int offsetInBuffer,
int value) {
return (int)INT_HANDLE.getAndSet(pageBuffer, offsetInBuffer, value);
}
private static void setLongVolatile(final ByteBuffer pageBuffer,
final int offsetInBuffer,
final long value) {
private static void setLongVolatile(ByteBuffer pageBuffer,
int offsetInBuffer,
long value) {
LONG_HANDLE.setVolatile(pageBuffer, offsetInBuffer, value);
}