private void removeFromTable(Slot e) { int tableIdx = hash(e.chunkKey, e.offset); Slot p = table[tableIdx]; if (p == e) { table[tableIdx] = e.tableNext; return; } for (; p != null; p = p.tableNext) { if (p.tableNext == e) { p.tableNext = e.tableNext; return; } } }
private void removeFromTable(Slot e) { int tableIdx = hash(e.chunkKey, e.offset); Slot p = table[tableIdx]; if (p == e) { table[tableIdx] = e.tableNext; return; } for (; p != null; p = p.tableNext) { if (p.tableNext == e) { p.tableNext = e.tableNext; return; } } }
Entry get(ChunkKey key, int position) { Slot e = table[hash(key, position)]; for (; e != null; e = e.tableNext) { if (e.offset == position && key.equals(e.chunkKey)) { Entry buf = e.data.get(); if (buf != null) { moveToHead(e); stats.deltaBaseCache_Hits++; return buf; } } } stats.deltaBaseCache_Miss++; return null; }
Entry get(ChunkKey key, int position) { Slot e = table[hash(key, position)]; for (; e != null; e = e.tableNext) { if (e.offset == position && key.equals(e.chunkKey)) { Entry buf = e.data.get(); if (buf != null) { moveToHead(e); stats.deltaBaseCache_Hits++; return buf; } } } stats.deltaBaseCache_Miss++; return null; }
void put(ChunkKey key, int offset, int objectType, byte[] data) { if (data.length > maxByteCount) return; // Too large to cache. curByteCount += data.length; releaseMemory(); int tableIdx = hash(key, offset); Slot e = new Slot(key, offset, data.length); e.data = new SoftReference<Entry>(new Entry(data, objectType)); e.tableNext = table[tableIdx]; table[tableIdx] = e; moveToHead(e); }
void put(ChunkKey key, int offset, int objectType, byte[] data) { if (data.length > maxByteCount) return; // Too large to cache. curByteCount += data.length; releaseMemory(); int tableIdx = hash(key, offset); Slot e = new Slot(key, offset, data.length); e.data = new SoftReference<Entry>(new Entry(data, objectType)); e.tableNext = table[tableIdx]; table[tableIdx] = e; moveToHead(e); }