aboutsummaryrefslogtreecommitdiff
path: root/android/guava/src/com/google/common/cache/LocalCache.java
diff options
context:
space:
mode:
Diffstat (limited to 'android/guava/src/com/google/common/cache/LocalCache.java')
-rw-r--r--android/guava/src/com/google/common/cache/LocalCache.java121
1 files changed, 48 insertions, 73 deletions
diff --git a/android/guava/src/com/google/common/cache/LocalCache.java b/android/guava/src/com/google/common/cache/LocalCache.java
index aca43c86d..86f9dbe67 100644
--- a/android/guava/src/com/google/common/cache/LocalCache.java
+++ b/android/guava/src/com/google/common/cache/LocalCache.java
@@ -50,8 +50,8 @@ import com.google.common.util.concurrent.SettableFuture;
import com.google.common.util.concurrent.UncheckedExecutionException;
import com.google.common.util.concurrent.Uninterruptibles;
import com.google.errorprone.annotations.concurrent.GuardedBy;
+import com.google.j2objc.annotations.RetainedWith;
import com.google.j2objc.annotations.Weak;
-import com.google.j2objc.annotations.WeakOuter;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.Serializable;
@@ -81,7 +81,6 @@ import java.util.concurrent.atomic.AtomicReferenceArray;
import java.util.concurrent.locks.ReentrantLock;
import java.util.logging.Level;
import java.util.logging.Logger;
-import org.checkerframework.checker.nullness.compatqual.MonotonicNonNullDecl;
import org.checkerframework.checker.nullness.compatqual.NullableDecl;
/**
@@ -994,7 +993,7 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
}
// Guarded By Segment.this
- ReferenceEntry<K, V> nextAccess = nullEntry();
+ @Weak ReferenceEntry<K, V> nextAccess = nullEntry();
@Override
public ReferenceEntry<K, V> getNextInAccessQueue() {
@@ -1007,7 +1006,7 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
}
// Guarded By Segment.this
- ReferenceEntry<K, V> previousAccess = nullEntry();
+ @Weak ReferenceEntry<K, V> previousAccess = nullEntry();
@Override
public ReferenceEntry<K, V> getPreviousInAccessQueue() {
@@ -1040,7 +1039,7 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
}
// Guarded By Segment.this
- ReferenceEntry<K, V> nextWrite = nullEntry();
+ @Weak ReferenceEntry<K, V> nextWrite = nullEntry();
@Override
public ReferenceEntry<K, V> getNextInWriteQueue() {
@@ -1053,7 +1052,7 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
}
// Guarded By Segment.this
- ReferenceEntry<K, V> previousWrite = nullEntry();
+ @Weak ReferenceEntry<K, V> previousWrite = nullEntry();
@Override
public ReferenceEntry<K, V> getPreviousInWriteQueue() {
@@ -1086,7 +1085,7 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
}
// Guarded By Segment.this
- ReferenceEntry<K, V> nextAccess = nullEntry();
+ @Weak ReferenceEntry<K, V> nextAccess = nullEntry();
@Override
public ReferenceEntry<K, V> getNextInAccessQueue() {
@@ -1099,7 +1098,7 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
}
// Guarded By Segment.this
- ReferenceEntry<K, V> previousAccess = nullEntry();
+ @Weak ReferenceEntry<K, V> previousAccess = nullEntry();
@Override
public ReferenceEntry<K, V> getPreviousInAccessQueue() {
@@ -1126,7 +1125,7 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
}
// Guarded By Segment.this
- ReferenceEntry<K, V> nextWrite = nullEntry();
+ @Weak ReferenceEntry<K, V> nextWrite = nullEntry();
@Override
public ReferenceEntry<K, V> getNextInWriteQueue() {
@@ -1139,7 +1138,7 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
}
// Guarded By Segment.this
- ReferenceEntry<K, V> previousWrite = nullEntry();
+ @Weak ReferenceEntry<K, V> previousWrite = nullEntry();
@Override
public ReferenceEntry<K, V> getPreviousInWriteQueue() {
@@ -1282,7 +1281,7 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
}
// Guarded By Segment.this
- ReferenceEntry<K, V> nextAccess = nullEntry();
+ @Weak ReferenceEntry<K, V> nextAccess = nullEntry();
@Override
public ReferenceEntry<K, V> getNextInAccessQueue() {
@@ -1295,7 +1294,7 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
}
// Guarded By Segment.this
- ReferenceEntry<K, V> previousAccess = nullEntry();
+ @Weak ReferenceEntry<K, V> previousAccess = nullEntry();
@Override
public ReferenceEntry<K, V> getPreviousInAccessQueue() {
@@ -1329,7 +1328,7 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
}
// Guarded By Segment.this
- ReferenceEntry<K, V> nextWrite = nullEntry();
+ @Weak ReferenceEntry<K, V> nextWrite = nullEntry();
@Override
public ReferenceEntry<K, V> getNextInWriteQueue() {
@@ -1342,7 +1341,7 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
}
// Guarded By Segment.this
- ReferenceEntry<K, V> previousWrite = nullEntry();
+ @Weak ReferenceEntry<K, V> previousWrite = nullEntry();
@Override
public ReferenceEntry<K, V> getPreviousInWriteQueue() {
@@ -1376,7 +1375,7 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
}
// Guarded By Segment.this
- ReferenceEntry<K, V> nextAccess = nullEntry();
+ @Weak ReferenceEntry<K, V> nextAccess = nullEntry();
@Override
public ReferenceEntry<K, V> getNextInAccessQueue() {
@@ -1389,7 +1388,7 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
}
// Guarded By Segment.this
- ReferenceEntry<K, V> previousAccess = nullEntry();
+ @Weak ReferenceEntry<K, V> previousAccess = nullEntry();
@Override
public ReferenceEntry<K, V> getPreviousInAccessQueue() {
@@ -1416,7 +1415,7 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
}
// Guarded By Segment.this
- ReferenceEntry<K, V> nextWrite = nullEntry();
+ @Weak ReferenceEntry<K, V> nextWrite = nullEntry();
@Override
public ReferenceEntry<K, V> getNextInWriteQueue() {
@@ -1429,7 +1428,7 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
}
// Guarded By Segment.this
- ReferenceEntry<K, V> previousWrite = nullEntry();
+ @Weak ReferenceEntry<K, V> previousWrite = nullEntry();
@Override
public ReferenceEntry<K, V> getPreviousInWriteQueue() {
@@ -1675,6 +1674,7 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
* This method is a convenience for testing. Code should call {@link Segment#copyEntry} directly.
*/
// Guarded By Segment.this
+ @SuppressWarnings("GuardedBy")
@VisibleForTesting
ReferenceEntry<K, V> copyEntry(ReferenceEntry<K, V> original, ReferenceEntry<K, V> newNext) {
int hash = original.getHash();
@@ -1883,7 +1883,7 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
int threshold;
/** The per-segment table. */
- @MonotonicNonNullDecl volatile AtomicReferenceArray<ReferenceEntry<K, V>> table;
+ @NullableDecl volatile AtomicReferenceArray<ReferenceEntry<K, V>> table;
/** The maximum weight of this segment. UNSET_INT if there is no maximum. */
final long maxSegmentWeight;
@@ -2109,7 +2109,7 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
entryKey, hash, value, valueReference.getWeight(), RemovalCause.COLLECTED);
} else if (map.isExpired(e, now)) {
// This is a duplicate check, as preWriteCleanup already purged expired
- // entries, but let's accomodate an incorrect expiration queue.
+ // entries, but let's accommodate an incorrect expiration queue.
enqueueNotification(
entryKey, hash, value, valueReference.getWeight(), RemovalCause.EXPIRED);
} else {
@@ -3525,7 +3525,7 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
@Override
public void setWriteTime(long time) {}
- ReferenceEntry<K, V> nextWrite = this;
+ @Weak ReferenceEntry<K, V> nextWrite = this;
@Override
public ReferenceEntry<K, V> getNextInWriteQueue() {
@@ -3537,7 +3537,7 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
this.nextWrite = next;
}
- ReferenceEntry<K, V> previousWrite = this;
+ @Weak ReferenceEntry<K, V> previousWrite = this;
@Override
public ReferenceEntry<K, V> getPreviousInWriteQueue() {
@@ -3584,7 +3584,7 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
@Override
@SuppressWarnings("unchecked")
public boolean remove(Object o) {
- ReferenceEntry<K, V> e = (ReferenceEntry) o;
+ ReferenceEntry<K, V> e = (ReferenceEntry<K, V>) o;
ReferenceEntry<K, V> previous = e.getPreviousInWriteQueue();
ReferenceEntry<K, V> next = e.getNextInWriteQueue();
connectWriteOrder(previous, next);
@@ -3596,7 +3596,7 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
@Override
@SuppressWarnings("unchecked")
public boolean contains(Object o) {
- ReferenceEntry<K, V> e = (ReferenceEntry) o;
+ ReferenceEntry<K, V> e = (ReferenceEntry<K, V>) o;
return e.getNextInWriteQueue() != NullEntry.INSTANCE;
}
@@ -3664,7 +3664,7 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
@Override
public void setAccessTime(long time) {}
- ReferenceEntry<K, V> nextAccess = this;
+ @Weak ReferenceEntry<K, V> nextAccess = this;
@Override
public ReferenceEntry<K, V> getNextInAccessQueue() {
@@ -3676,7 +3676,7 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
this.nextAccess = next;
}
- ReferenceEntry<K, V> previousAccess = this;
+ @Weak ReferenceEntry<K, V> previousAccess = this;
@Override
public ReferenceEntry<K, V> getPreviousInAccessQueue() {
@@ -3723,7 +3723,7 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
@Override
@SuppressWarnings("unchecked")
public boolean remove(Object o) {
- ReferenceEntry<K, V> e = (ReferenceEntry) o;
+ ReferenceEntry<K, V> e = (ReferenceEntry<K, V>) o;
ReferenceEntry<K, V> previous = e.getPreviousInAccessQueue();
ReferenceEntry<K, V> next = e.getNextInAccessQueue();
connectAccessOrder(previous, next);
@@ -3735,7 +3735,7 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
@Override
@SuppressWarnings("unchecked")
public boolean contains(Object o) {
- ReferenceEntry<K, V> e = (ReferenceEntry) o;
+ ReferenceEntry<K, V> e = (ReferenceEntry<K, V>) o;
return e.getNextInAccessQueue() != NullEntry.INSTANCE;
}
@@ -3815,9 +3815,7 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
}
sum -= segments[i].modCount;
}
- if (sum != 0L) {
- return false;
- }
+ return sum == 0L;
}
return true;
}
@@ -4148,32 +4146,32 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
}
}
- @MonotonicNonNullDecl Set<K> keySet;
+ @RetainedWith @NullableDecl Set<K> keySet;
@Override
public Set<K> keySet() {
// does not impact recency ordering
Set<K> ks = keySet;
- return (ks != null) ? ks : (keySet = new KeySet(this));
+ return (ks != null) ? ks : (keySet = new KeySet());
}
- @MonotonicNonNullDecl Collection<V> values;
+ @RetainedWith @NullableDecl Collection<V> values;
@Override
public Collection<V> values() {
// does not impact recency ordering
Collection<V> vs = values;
- return (vs != null) ? vs : (values = new Values(this));
+ return (vs != null) ? vs : (values = new Values());
}
- @MonotonicNonNullDecl Set<Entry<K, V>> entrySet;
+ @RetainedWith @NullableDecl Set<Entry<K, V>> entrySet;
@Override
@GwtIncompatible // Not supported.
public Set<Entry<K, V>> entrySet() {
// does not impact recency ordering
Set<Entry<K, V>> es = entrySet;
- return (es != null) ? es : (entrySet = new EntrySet(this));
+ return (es != null) ? es : (entrySet = new EntrySet());
}
// Iterator Support
@@ -4182,8 +4180,8 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
int nextSegmentIndex;
int nextTableIndex;
- @MonotonicNonNullDecl Segment<K, V> currentSegment;
- @MonotonicNonNullDecl AtomicReferenceArray<ReferenceEntry<K, V>> currentTable;
+ @NullableDecl Segment<K, V> currentSegment;
+ @NullableDecl AtomicReferenceArray<ReferenceEntry<K, V>> currentTable;
@NullableDecl ReferenceEntry<K, V> nextEntry;
@NullableDecl WriteThroughEntry nextExternal;
@NullableDecl WriteThroughEntry lastReturned;
@@ -4364,25 +4362,19 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
}
abstract class AbstractCacheSet<T> extends AbstractSet<T> {
- @Weak final ConcurrentMap<?, ?> map;
-
- AbstractCacheSet(ConcurrentMap<?, ?> map) {
- this.map = map;
- }
-
@Override
public int size() {
- return map.size();
+ return LocalCache.this.size();
}
@Override
public boolean isEmpty() {
- return map.isEmpty();
+ return LocalCache.this.isEmpty();
}
@Override
public void clear() {
- map.clear();
+ LocalCache.this.clear();
}
// super.toArray() may misbehave if size() is inaccurate, at least on old versions of Android.
@@ -4406,13 +4398,8 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
return result;
}
- @WeakOuter
final class KeySet extends AbstractCacheSet<K> {
- KeySet(ConcurrentMap<?, ?> map) {
- super(map);
- }
-
@Override
public Iterator<K> iterator() {
return new KeyIterator();
@@ -4420,36 +4407,29 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
@Override
public boolean contains(Object o) {
- return map.containsKey(o);
+ return LocalCache.this.containsKey(o);
}
@Override
public boolean remove(Object o) {
- return map.remove(o) != null;
+ return LocalCache.this.remove(o) != null;
}
}
- @WeakOuter
final class Values extends AbstractCollection<V> {
- private final ConcurrentMap<?, ?> map;
-
- Values(ConcurrentMap<?, ?> map) {
- this.map = map;
- }
-
@Override
public int size() {
- return map.size();
+ return LocalCache.this.size();
}
@Override
public boolean isEmpty() {
- return map.isEmpty();
+ return LocalCache.this.isEmpty();
}
@Override
public void clear() {
- map.clear();
+ LocalCache.this.clear();
}
@Override
@@ -4459,7 +4439,7 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
@Override
public boolean contains(Object o) {
- return map.containsValue(o);
+ return LocalCache.this.containsValue(o);
}
// super.toArray() may misbehave if size() is inaccurate, at least on old versions of Android.
@@ -4476,13 +4456,8 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
}
}
- @WeakOuter
final class EntrySet extends AbstractCacheSet<Entry<K, V>> {
- EntrySet(ConcurrentMap<?, ?> map) {
- super(map);
- }
-
@Override
public Iterator<Entry<K, V>> iterator() {
return new EntryIterator();
@@ -4541,7 +4516,7 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
@NullableDecl final Ticker ticker;
final CacheLoader<? super K, V> loader;
- @MonotonicNonNullDecl transient Cache<K, V> delegate;
+ @NullableDecl transient Cache<K, V> delegate;
ManualSerializationProxy(LocalCache<K, V> cache) {
this(
@@ -4646,7 +4621,7 @@ class LocalCache<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>
implements LoadingCache<K, V>, Serializable {
private static final long serialVersionUID = 1;
- @MonotonicNonNullDecl transient LoadingCache<K, V> autoDelegate;
+ @NullableDecl transient LoadingCache<K, V> autoDelegate;
LoadingSerializationProxy(LocalCache<K, V> cache) {
super(cache);