Yet another attempt to init freeList bitSet with the right length

This commit is contained in:
leventov
2014-10-25 01:34:36 +04:00
parent 58997967d7
commit 7a86306e0b
2 changed files with 5 additions and 7 deletions
@@ -134,8 +134,7 @@ class VanillaChronicleMap<K, KI, MKI extends MetaBytesInterop<K, KI>,
this.removeReturnsNull = builder.removeReturnsNull();
this.actualSegments = builder.actualSegments();
// align by 8 because otherwise sizeOfBitSets() might address less blocks than specified
this.entriesPerSegment = align8(builder.actualEntriesPerSegment());
this.entriesPerSegment = builder.actualEntriesPerSegment();
this.metaDataBytes = builder.metaDataBytes();
this.eventListener = builder.eventListener();
@@ -254,7 +253,7 @@ class VanillaChronicleMap<K, KI, MKI extends MetaBytesInterop<K, KI>,
}
long sizeOfBitSets() {
return align64(entriesPerSegment / 8L);
return align64(align8(entriesPerSegment) / 8L);
}
int numberOfBitSets() {
@@ -557,7 +556,7 @@ class VanillaChronicleMap<K, KI, MKI extends MetaBytesInterop<K, KI>,
createHashLookups(start);
start += align64(sizeOfMultiMap() + sizeOfMultiMapBitSet()) * multiMapsPerSegment();
final NativeBytes bsBytes = new NativeBytes(tmpBytes.objectSerializer(),
start, start + sizeOfBitSets() / 8L, null);
start, start + align8(align8(entriesPerSegment) / 8L), null);
freeList = new SingleThreadedDirectBitSet(bsBytes);
start += numberOfBitSets() * sizeOfBitSets();
entriesOffset = start - bytes.startAddr();
@@ -1131,12 +1131,11 @@ public class ChronicleMapTest {
}
private ChronicleMap<Integer, CharSequence> getViewTestMap(int noOfElements) throws IOException {
int entries = 100 * 1000;
ChronicleMap<Integer, CharSequence> map =
ChronicleMapBuilder.of(Integer.class, CharSequence.class)
.entries(entries)
.entries(noOfElements)
.minSegments(16)
.entrySize(32)
.valueSize((noOfElements + "").length())
.putReturnsNull(true)
.removeReturnsNull(true).create();