Segment(NativeBytes bytes) { this.bytes = bytes; long start = bytes.startAddr() + SharedHashMapBuilder.SEGMENT_HEADER; final NativeBytes iimmapBytes = new NativeBytes(null, start, start + sizeOfMultiMap(), null); iimmapBytes.load(); hashLookup = new IntIntMultiMap(iimmapBytes); start += sizeOfMultiMap(); final NativeBytes bsBytes = new NativeBytes(tmpBytes.bytesMarshallerFactory(), start, start + sizeOfBitSets(), null); freeList = new SingleThreadedDirectBitSet(bsBytes); start += numberOfBitSets() * sizeOfBitSets(); entriesOffset = start - bytes.startAddr(); assert bytes.capacity() >= entriesOffset + entriesPerSegment * entrySize; }
public Segment(NativeBytes bytes) { this.bytes = bytes; long start = bytes.startAddr() + SharedHashMapBuilder.SEGMENT_HEADER; long size = Maths.nextPower2(builder.entriesPerSegment() * 12, 16 * 8); NativeBytes iimmapBytes = new NativeBytes(tmpBytes.bytesMarshallerFactory(), start, start + size, null); iimmapBytes.load(); hashLookup = new IntIntMultiMap(iimmapBytes); start += size; long bsSize = (builder.entriesPerSegment() + 63) / 64 * 8; NativeBytes bsBytes = new NativeBytes(tmpBytes.bytesMarshallerFactory(), start, start + bsSize, null); // bsBytes.load(); freeList = new SingleThreadedDirectBitSet(bsBytes); start += bsSize * (1 + builder.replicas()); entriesOffset = start - bytes.startAddr(); assert bytes.capacity() >= entriesOffset + builder.entriesPerSegment() * builder.entrySize(); }