return new DataAsAddress(ohAddress); // TODO does the decompress flag matter here? } else { return addrToObj[(int) ohAddress>>1];
@Override public StoredObject allocateAndInitialize(byte[] v, boolean isSerialized, boolean isCompressed, ChunkType chunkType) { long addr = OffHeapRegionEntryHelper.encodeDataAsAddress(v, isSerialized, isCompressed); if (addr != 0L) { return new DataAsAddress(addr); } if (chunkType == null) { chunkType = GemFireChunk.TYPE; } Chunk result = this.freeList.allocate(v.length, chunkType); //debugLog("allocated off heap object of size " + v.length + " @" + Long.toHexString(result.getMemoryAddress()), true); //debugLog("allocated off heap object of size " + v.length + " @" + Long.toHexString(result.getMemoryAddress()) + "chunkSize=" + result.getSize() + " isSerialized=" + isSerialized + " v=" + Arrays.toString(v), true); if (trackRefCounts) { refCountChanged(result.getMemoryAddress(), false, 1); } assert result.getChunkType() == chunkType: "chunkType=" + chunkType + " getChunkType()=" + result.getChunkType(); result.setSerializedValue(v); result.setSerialized(isSerialized); result.setCompressed(isCompressed); return result; }
public static Object prepareValueForCreate(RegionEntryContext r, final byte[] data, boolean skipLastRowIfByteArrayArray) { // fix for bug 47875 MemoryAllocator ma = SimpleMemoryAllocatorImpl.getAllocator(); if (data.length < OffHeapRegionEntryHelper.MAX_LENGTH_FOR_DATA_AS_ADDRESS) { long addr = OffHeapRegionEntryHelper.encodeDataAsAddress(data, false, false); if (addr != 0L) { return new DataAsAddress(addr); } } OffHeapRow mc = (OffHeapRow)ma.allocate(data.length, OffHeapRow.TYPE); mc.writeBytes(0, data); return mc; }
public static Object prepareValueForCreate(RegionEntryContext r, final byte[] data, boolean skipLastRowIfByteArrayArray) { // fix for bug 47875 MemoryAllocator ma = SimpleMemoryAllocatorImpl.getAllocator(); if (data.length < OffHeapRegionEntryHelper.MAX_LENGTH_FOR_DATA_AS_ADDRESS) { long addr = OffHeapRegionEntryHelper.encodeDataAsAddress(data, false, false); if (addr != 0L) { return new DataAsAddress(addr); } } OffHeapRow mc = (OffHeapRow)ma.allocate(data.length, OffHeapRow.TYPE); mc.writeBytes(0, data); return mc; }
public static Object prepareValueForCreate(RegionEntryContext r, final byte[] data, boolean skipLastRowIfByteArrayArray) { // fix for bug 47875 MemoryAllocator ma = SimpleMemoryAllocatorImpl.getAllocator(); if (data.length < OffHeapRegionEntryHelper.MAX_LENGTH_FOR_DATA_AS_ADDRESS) { long addr = OffHeapRegionEntryHelper.encodeDataAsAddress(data, false, false); if (addr != 0L) { return new DataAsAddress(addr); } } OffHeapRow mc = (OffHeapRow)ma.allocate(data.length, OffHeapRow.TYPE); mc.writeBytes(0, data); return mc; }