private void advance() { assert bin.isEmpty(); long tblEnd = tblAddr + memCap; for (long binAddr = tblAddr; binAddr < tblEnd; binAddr += 8) { long entryAddr = Bin.first(binAddr, mem); if (entryAddr == 0) continue; while (entryAddr != 0) { // Read key and value bytes. // TODO: GG-8123: Inlined as a workaround. Revert when 7u60 is released. // bin.add(F.t(Entry.readKeyBytes(entryAddr, mem), Entry.readValueBytes(entryAddr, mem))); { int keyLen = Entry.readKeyLength(entryAddr, mem); int valLen = Entry.readValueLength(entryAddr, mem); byte[] valBytes = mem.readBytes(entryAddr + HEADER_SIZE + keyLen, valLen); bin.add(F.t(Entry.readKeyBytes(entryAddr, mem), valBytes)); } entryAddr = Entry.nextAddress(entryAddr, mem); } } }
int valLen = Entry.readValueLength(entryAddr, mem);
int valLen = Entry.readValueLength(addr, mem);
if (Entry.readValueLength(cur, mem) == valBytes.length) { Entry.writeValueBytes(cur, valBytes, mem);
int valLen = Entry.readValueLength(cur, mem);
valLen = Entry.readValueLength(cur, mem); if (keyLen == 0) { keyLen = Entry.readKeyLength(cur, mem); valLen = Entry.readValueLength(cur, mem);
int valLen = Entry.readValueLength(addr, mem);
/** * @param hash Hash. * @param keyBytes Key bytes. * @return Value pointer. */ @Nullable IgniteBiTuple<Long, Integer> valuePointer(int hash, byte[] keyBytes) { long binAddr = readLock(hash); try { long addr = Bin.first(binAddr, mem); while (addr != 0) { if (Entry.keyEquals(addr, keyBytes, mem)) { if (lru != null) { long qAddr = Entry.queueAddress(addr, mem); if (qAddr != 0 && Entry.clearQueueAddress(addr, qAddr, mem)) lru.remove(qAddr); } int keyLen = Entry.readKeyLength(addr, mem); int valLen = Entry.readValueLength(addr, mem); return new IgniteBiTuple<>(addr + HEADER_SIZE + keyLen, valLen); } addr = Entry.nextAddress(addr, mem); } return null; } finally { readUnlock(); } }
int valLen = Entry.readValueLength(entryAddr, mem);
private void advance() { assert bin.isEmpty(); long tblEnd = tblAddr + memCap; for (long binAddr = tblAddr; binAddr < tblEnd; binAddr += 8) { long entryAddr = Bin.first(binAddr, mem); if (entryAddr == 0) continue; while (entryAddr != 0) { // Read key and value bytes. // TODO: GG-8123: Inlined as a workaround. Revert when 7u60 is released. // bin.add(F.t(Entry.readKeyBytes(entryAddr, mem), Entry.readValueBytes(entryAddr, mem))); { int keyLen = Entry.readKeyLength(entryAddr, mem); int valLen = Entry.readValueLength(entryAddr, mem); byte[] valBytes = mem.readBytes(entryAddr + HEADER_SIZE + keyLen, valLen); bin.add(F.t(Entry.readKeyBytes(entryAddr, mem), valBytes)); } entryAddr = Entry.nextAddress(entryAddr, mem); } } }
/** * @param addr Address. * @param mem Memory. * @return Entry size. */ static int size(long addr, GridUnsafeMemory mem) { return HEADER_SIZE + readKeyLength(addr, mem) + readValueLength(addr, mem); }
/** * @param ptr Pointer. * @param mem Memory. * @return Value bytes. */ static byte[] readValueBytes(long ptr, GridUnsafeMemory mem) { int keyLen = readKeyLength(ptr, mem); int valLen = readValueLength(ptr, mem); return mem.readBytes(ptr + HEADER_SIZE + keyLen, valLen); }
if (Entry.readValueLength(cur, mem) == valBytes.length) { Entry.writeValueBytes(cur, valBytes, mem);
valLen = Entry.readValueLength(cur, mem); if (keyLen == 0) { keyLen = Entry.readKeyLength(cur, mem); valLen = Entry.readValueLength(cur, mem);
int valLen = Entry.readValueLength(cur, mem);
/** * @param hash Hash. * @param keyBytes Key bytes. * @return Value pointer. */ @Nullable IgniteBiTuple<Long, Integer> valuePointer(int hash, byte[] keyBytes) { long binAddr = readLock(hash); try { long addr = Bin.first(binAddr, mem); while (addr != 0) { if (Entry.keyEquals(addr, keyBytes, mem)) { if (lru != null) { long qAddr = Entry.queueAddress(addr, mem); if (qAddr != 0 && Entry.clearQueueAddress(addr, qAddr, mem)) lru.remove(qAddr); } int keyLen = Entry.readKeyLength(addr, mem); int valLen = Entry.readValueLength(addr, mem); return new IgniteBiTuple<>(addr + HEADER_SIZE + keyLen, valLen); } addr = Entry.nextAddress(addr, mem); } return null; } finally { readUnlock(); } }
/** * @param ptr Pointer. * @param mem Memory. * @return Value bytes. */ static byte[] readValueBytes(long ptr, GridUnsafeMemory mem) { int keyLen = readKeyLength(ptr, mem); int valLen = readValueLength(ptr, mem); return mem.readBytes(ptr + HEADER_SIZE + keyLen, valLen); }
/** * @param addr Address. * @param mem Memory. * @return Entry size. */ static int size(long addr, GridUnsafeMemory mem) { return HEADER_SIZE + readKeyLength(addr, mem) + readValueLength(addr, mem); }