diff options
Diffstat (limited to 'android/guava/src/com/google/common/cache/LocalCache.java')
-rw-r--r-- | android/guava/src/com/google/common/cache/LocalCache.java | 121 |
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); |