ReferenceEntry<K, V> getEntry(Object key, int hash) { if (count != 0) { // read-volatile for (ReferenceEntry<K, V> e = getFirst(hash); e != null; e = e.getNext()) { if (e.getHash() != hash) { continue; } K entryKey = e.getKey(); if (entryKey == null) { tryDrainReferenceQueues(); continue; } if (map.keyEquivalence.equivalent(key, entryKey)) { return e; } } } return null; }
V get(Object key, int hash) { try { ReferenceEntry<K, V> e = getLiveEntry(key, hash); if (e == null) { return null; } V value = e.getValueReference().get(); if (value != null) { recordRead(e); } else { tryDrainReferenceQueues(); } return value; } finally { postReadCleanup(); } }
ReferenceEntry<K, V> getEntry(Object key, int hash) { if (count != 0) { // read-volatile for (ReferenceEntry<K, V> e = getFirst(hash); e != null; e = e.getNext()) { if (e.getHash() != hash) { continue; } K entryKey = e.getKey(); if (entryKey == null) { tryDrainReferenceQueues(); continue; } if (map.keyEquivalence.equivalent(key, entryKey)) { return e; } } } return null; }
V get(Object key, int hash) { try { ReferenceEntry<K, V> e = getLiveEntry(key, hash); if (e == null) { return null; } V value = e.getValueReference().get(); if (value != null) { recordRead(e); } else { tryDrainReferenceQueues(); } return value; } finally { postReadCleanup(); } }
V get(Object key, int hash) { try { ReferenceEntry<K, V> e = getLiveEntry(key, hash); if (e == null) { return null; } V value = e.getValueReference().get(); if (value != null) { recordRead(e); } else { tryDrainReferenceQueues(); } return value; } finally { postReadCleanup(); } }
V get(Object key, int hash) { try { ReferenceEntry<K, V> e = getLiveEntry(key, hash); if (e == null) { return null; } V value = e.getValueReference().get(); if (value != null) { recordRead(e); } else { tryDrainReferenceQueues(); } return value; } finally { postReadCleanup(); } }
V get(Object key, int hash) { try { ReferenceEntry<K, V> e = getLiveEntry(key, hash); if (e == null) { return null; } V value = e.getValueReference().get(); if (value != null) { recordRead(e); } else { tryDrainReferenceQueues(); } return value; } finally { postReadCleanup(); } }
/** * Gets the value from an entry. Returns {@code null} if the entry is invalid or * partially-collected. */ @NullableDecl V getLiveValue(E entry) { if (entry.getKey() == null) { tryDrainReferenceQueues(); return null; } V value = entry.getValue(); if (value == null) { tryDrainReferenceQueues(); return null; } return value; }
V get(Object key, int hash) { try { ReferenceEntry<K, V> e = getLiveEntry(key, hash); if (e == null) { return null; } V value = e.getValueReference().get(); if (value != null) { recordRead(e); } else { tryDrainReferenceQueues(); } return value; } finally { postReadCleanup(); } }
V get(Object key, int hash) { try { E e = getLiveEntry(key, hash); if (e == null) { return null; } V value = e.getValue(); if (value == null) { tryDrainReferenceQueues(); } return value; } finally { postReadCleanup(); } }
V get(Object key, int hash) { try { E e = getLiveEntry(key, hash); if (e == null) { return null; } V value = e.getValue(); if (value == null) { tryDrainReferenceQueues(); } return value; } finally { postReadCleanup(); } }
/** * Gets the value from an entry. Returns {@code null} if the entry is invalid or * partially-collected. */ @NullableDecl V getLiveValue(E entry) { if (entry.getKey() == null) { tryDrainReferenceQueues(); return null; } V value = entry.getValue(); if (value == null) { tryDrainReferenceQueues(); return null; } return value; }
E getEntry(Object key, int hash) { if (count != 0) { // read-volatile for (E e = getFirst(hash); e != null; e = e.getNext()) { if (e.getHash() != hash) { continue; } K entryKey = e.getKey(); if (entryKey == null) { tryDrainReferenceQueues(); continue; } if (map.keyEquivalence.equivalent(key, entryKey)) { return e; } } } return null; }
V get(Object key, int hash) { try { E e = getLiveEntry(key, hash); if (e == null) { return null; } V value = e.getValue(); if (value == null) { tryDrainReferenceQueues(); } return value; } finally { postReadCleanup(); } }
E getEntry(Object key, int hash) { if (count != 0) { // read-volatile for (E e = getFirst(hash); e != null; e = e.getNext()) { if (e.getHash() != hash) { continue; } K entryKey = e.getKey(); if (entryKey == null) { tryDrainReferenceQueues(); continue; } if (map.keyEquivalence.equivalent(key, entryKey)) { return e; } } } return null; }
/** * Gets the value from an entry. Returns {@code null} if the entry is invalid or * partially-collected. */ @NullableDecl V getLiveValue(E entry) { if (entry.getKey() == null) { tryDrainReferenceQueues(); return null; } V value = entry.getValue(); if (value == null) { tryDrainReferenceQueues(); return null; } return value; }
V get(Object key, int hash) { try { E e = getLiveEntry(key, hash); if (e == null) { return null; } V value = e.getValue(); if (value == null) { tryDrainReferenceQueues(); } return value; } finally { postReadCleanup(); } }
E getEntry(Object key, int hash) { if (count != 0) { // read-volatile for (E e = getFirst(hash); e != null; e = e.getNext()) { if (e.getHash() != hash) { continue; } K entryKey = e.getKey(); if (entryKey == null) { tryDrainReferenceQueues(); continue; } if (map.keyEquivalence.equivalent(key, entryKey)) { return e; } } } return null; }
/** * Gets the value from an entry. Returns {@code null} if the entry is invalid or * partially-collected. */ @Nullable V getLiveValue(E entry) { if (entry.getKey() == null) { tryDrainReferenceQueues(); return null; } V value = entry.getValue(); if (value == null) { tryDrainReferenceQueues(); return null; } return value; }
V get(Object key, int hash) { try { E e = getLiveEntry(key, hash); if (e == null) { return null; } V value = e.getValue(); if (value == null) { tryDrainReferenceQueues(); } return value; } finally { postReadCleanup(); } }