.class Lcom/google/common/cache/LocalCache; .super Ljava/util/AbstractMap; .source "LocalCache.java" # interfaces .implements Ljava/util/concurrent/ConcurrentMap; # annotations .annotation build Lcom/google/common/annotations/GwtCompatible; emulated = true .end annotation .annotation system Ldalvik/annotation/MemberClasses; value = { Lcom/google/common/cache/LocalCache$LocalLoadingCache;, Lcom/google/common/cache/LocalCache$LocalManualCache;, Lcom/google/common/cache/LocalCache$LoadingSerializationProxy;, Lcom/google/common/cache/LocalCache$ManualSerializationProxy;, Lcom/google/common/cache/LocalCache$EntrySet;, Lcom/google/common/cache/LocalCache$Values;, Lcom/google/common/cache/LocalCache$KeySet;, Lcom/google/common/cache/LocalCache$AbstractCacheSet;, Lcom/google/common/cache/LocalCache$EntryIterator;, Lcom/google/common/cache/LocalCache$WriteThroughEntry;, Lcom/google/common/cache/LocalCache$ValueIterator;, Lcom/google/common/cache/LocalCache$KeyIterator;, Lcom/google/common/cache/LocalCache$HashIterator;, Lcom/google/common/cache/LocalCache$AccessQueue;, Lcom/google/common/cache/LocalCache$WriteQueue;, Lcom/google/common/cache/LocalCache$LoadingValueReference;, Lcom/google/common/cache/LocalCache$Segment;, Lcom/google/common/cache/LocalCache$WeightedStrongValueReference;, Lcom/google/common/cache/LocalCache$WeightedSoftValueReference;, Lcom/google/common/cache/LocalCache$WeightedWeakValueReference;, Lcom/google/common/cache/LocalCache$StrongValueReference;, Lcom/google/common/cache/LocalCache$SoftValueReference;, Lcom/google/common/cache/LocalCache$WeakValueReference;, Lcom/google/common/cache/LocalCache$WeakAccessWriteEntry;, Lcom/google/common/cache/LocalCache$WeakWriteEntry;, Lcom/google/common/cache/LocalCache$WeakAccessEntry;, Lcom/google/common/cache/LocalCache$WeakEntry;, Lcom/google/common/cache/LocalCache$StrongAccessWriteEntry;, Lcom/google/common/cache/LocalCache$StrongWriteEntry;, Lcom/google/common/cache/LocalCache$StrongAccessEntry;, Lcom/google/common/cache/LocalCache$StrongEntry;, Lcom/google/common/cache/LocalCache$AbstractReferenceEntry;, Lcom/google/common/cache/LocalCache$NullEntry;, Lcom/google/common/cache/LocalCache$ValueReference;, Lcom/google/common/cache/LocalCache$EntryFactory;, Lcom/google/common/cache/LocalCache$Strength; } .end annotation .annotation system Ldalvik/annotation/Signature; value = { "", "Ljava/util/AbstractMap<", "TK;TV;>;", "Ljava/util/concurrent/ConcurrentMap<", "TK;TV;>;" } .end annotation # static fields .field public static final CONTAINS_VALUE_RETRIES:I = 0x3 .field public static final DISCARDING_QUEUE:Ljava/util/Queue; .annotation system Ldalvik/annotation/Signature; value = { "Ljava/util/Queue<", "*>;" } .end annotation .end field .field public static final DRAIN_MAX:I = 0x10 .field public static final DRAIN_THRESHOLD:I = 0x3f .field public static final MAXIMUM_CAPACITY:I = 0x40000000 .field public static final MAX_SEGMENTS:I = 0x10000 .field public static final UNSET:Lcom/google/common/cache/LocalCache$ValueReference; .annotation system Ldalvik/annotation/Signature; value = { "Lcom/google/common/cache/LocalCache$ValueReference<", "Ljava/lang/Object;", "Ljava/lang/Object;", ">;" } .end annotation .end field .field public static final logger:Ljava/util/logging/Logger; # instance fields .field public final concurrencyLevel:I .field public final defaultLoader:Lcom/google/common/cache/CacheLoader; .annotation system Ldalvik/annotation/Signature; value = { "Lcom/google/common/cache/CacheLoader<", "-TK;TV;>;" } .end annotation .annotation runtime Lorg/checkerframework/checker/nullness/compatqual/NullableDecl; .end annotation .end field .field public final entryFactory:Lcom/google/common/cache/LocalCache$EntryFactory; .field public entrySet:Ljava/util/Set; .annotation build Lcom/google/j2objc/annotations/RetainedWith; .end annotation .annotation system Ldalvik/annotation/Signature; value = { "Ljava/util/Set<", "Ljava/util/Map$Entry<", "TK;TV;>;>;" } .end annotation .annotation runtime Lorg/checkerframework/checker/nullness/compatqual/NullableDecl; .end annotation .end field .field public final expireAfterAccessNanos:J .field public final expireAfterWriteNanos:J .field public final globalStatsCounter:Lcom/google/common/cache/AbstractCache$StatsCounter; .field public final keyEquivalence:Lcom/google/common/base/Equivalence; .annotation system Ldalvik/annotation/Signature; value = { "Lcom/google/common/base/Equivalence<", "Ljava/lang/Object;", ">;" } .end annotation .end field .field public keySet:Ljava/util/Set; .annotation build Lcom/google/j2objc/annotations/RetainedWith; .end annotation .annotation system Ldalvik/annotation/Signature; value = { "Ljava/util/Set<", "TK;>;" } .end annotation .annotation runtime Lorg/checkerframework/checker/nullness/compatqual/NullableDecl; .end annotation .end field .field public final keyStrength:Lcom/google/common/cache/LocalCache$Strength; .field public final maxWeight:J .field public final refreshNanos:J .field public final removalListener:Lcom/google/common/cache/RemovalListener; .annotation system Ldalvik/annotation/Signature; value = { "Lcom/google/common/cache/RemovalListener<", "TK;TV;>;" } .end annotation .end field .field public final removalNotificationQueue:Ljava/util/Queue; .annotation system Ldalvik/annotation/Signature; value = { "Ljava/util/Queue<", "Lcom/google/common/cache/RemovalNotification<", "TK;TV;>;>;" } .end annotation .end field .field public final segmentMask:I .field public final segmentShift:I .field public final segments:[Lcom/google/common/cache/LocalCache$Segment; .annotation system Ldalvik/annotation/Signature; value = { "[", "Lcom/google/common/cache/LocalCache$Segment<", "TK;TV;>;" } .end annotation .end field .field public final ticker:Lcom/google/common/base/Ticker; .field public final valueEquivalence:Lcom/google/common/base/Equivalence; .annotation system Ldalvik/annotation/Signature; value = { "Lcom/google/common/base/Equivalence<", "Ljava/lang/Object;", ">;" } .end annotation .end field .field public final valueStrength:Lcom/google/common/cache/LocalCache$Strength; .field public values:Ljava/util/Collection; .annotation build Lcom/google/j2objc/annotations/RetainedWith; .end annotation .annotation system Ldalvik/annotation/Signature; value = { "Ljava/util/Collection<", "TV;>;" } .end annotation .annotation runtime Lorg/checkerframework/checker/nullness/compatqual/NullableDecl; .end annotation .end field .field public final weigher:Lcom/google/common/cache/Weigher; .annotation system Ldalvik/annotation/Signature; value = { "Lcom/google/common/cache/Weigher<", "TK;TV;>;" } .end annotation .end field # direct methods .method public static constructor ()V .locals 1 .line 1 const-class v0, Lcom/google/common/cache/LocalCache; invoke-virtual {v0}, Ljava/lang/Class;->getName()Ljava/lang/String; move-result-object v0 invoke-static {v0}, Ljava/util/logging/Logger;->getLogger(Ljava/lang/String;)Ljava/util/logging/Logger; move-result-object v0 sput-object v0, Lcom/google/common/cache/LocalCache;->logger:Ljava/util/logging/Logger; .line 2 new-instance v0, Lcom/google/common/cache/LocalCache$1; invoke-direct {v0}, Lcom/google/common/cache/LocalCache$1;->()V sput-object v0, Lcom/google/common/cache/LocalCache;->UNSET:Lcom/google/common/cache/LocalCache$ValueReference; .line 3 new-instance v0, Lcom/google/common/cache/LocalCache$2; invoke-direct {v0}, Lcom/google/common/cache/LocalCache$2;->()V sput-object v0, Lcom/google/common/cache/LocalCache;->DISCARDING_QUEUE:Ljava/util/Queue; return-void .end method .method public constructor (Lcom/google/common/cache/CacheBuilder;Lcom/google/common/cache/CacheLoader;)V .locals 11 .param p2 # Lcom/google/common/cache/CacheLoader; .annotation runtime Lorg/checkerframework/checker/nullness/compatqual/NullableDecl; .end annotation .end param .annotation system Ldalvik/annotation/Signature; value = { "(", "Lcom/google/common/cache/CacheBuilder<", "-TK;-TV;>;", "Lcom/google/common/cache/CacheLoader<", "-TK;TV;>;)V" } .end annotation .line 1 invoke-direct {p0}, Ljava/util/AbstractMap;->()V .line 2 invoke-virtual {p1}, Lcom/google/common/cache/CacheBuilder;->getConcurrencyLevel()I move-result v0 const/high16 v1, 0x10000 invoke-static {v0, v1}, Ljava/lang/Math;->min(II)I move-result v0 iput v0, p0, Lcom/google/common/cache/LocalCache;->concurrencyLevel:I .line 3 invoke-virtual {p1}, Lcom/google/common/cache/CacheBuilder;->getKeyStrength()Lcom/google/common/cache/LocalCache$Strength; move-result-object v0 iput-object v0, p0, Lcom/google/common/cache/LocalCache;->keyStrength:Lcom/google/common/cache/LocalCache$Strength; .line 4 invoke-virtual {p1}, Lcom/google/common/cache/CacheBuilder;->getValueStrength()Lcom/google/common/cache/LocalCache$Strength; move-result-object v1 iput-object v1, p0, Lcom/google/common/cache/LocalCache;->valueStrength:Lcom/google/common/cache/LocalCache$Strength; .line 5 invoke-virtual {p1}, Lcom/google/common/cache/CacheBuilder;->getKeyEquivalence()Lcom/google/common/base/Equivalence; move-result-object v1 iput-object v1, p0, Lcom/google/common/cache/LocalCache;->keyEquivalence:Lcom/google/common/base/Equivalence; .line 6 invoke-virtual {p1}, Lcom/google/common/cache/CacheBuilder;->getValueEquivalence()Lcom/google/common/base/Equivalence; move-result-object v1 iput-object v1, p0, Lcom/google/common/cache/LocalCache;->valueEquivalence:Lcom/google/common/base/Equivalence; .line 7 invoke-virtual {p1}, Lcom/google/common/cache/CacheBuilder;->getMaximumWeight()J move-result-wide v1 iput-wide v1, p0, Lcom/google/common/cache/LocalCache;->maxWeight:J .line 8 invoke-virtual {p1}, Lcom/google/common/cache/CacheBuilder;->getWeigher()Lcom/google/common/cache/Weigher; move-result-object v3 iput-object v3, p0, Lcom/google/common/cache/LocalCache;->weigher:Lcom/google/common/cache/Weigher; .line 9 invoke-virtual {p1}, Lcom/google/common/cache/CacheBuilder;->getExpireAfterAccessNanos()J move-result-wide v3 iput-wide v3, p0, Lcom/google/common/cache/LocalCache;->expireAfterAccessNanos:J .line 10 invoke-virtual {p1}, Lcom/google/common/cache/CacheBuilder;->getExpireAfterWriteNanos()J move-result-wide v3 iput-wide v3, p0, Lcom/google/common/cache/LocalCache;->expireAfterWriteNanos:J .line 11 invoke-virtual {p1}, Lcom/google/common/cache/CacheBuilder;->getRefreshNanos()J move-result-wide v3 iput-wide v3, p0, Lcom/google/common/cache/LocalCache;->refreshNanos:J .line 12 invoke-virtual {p1}, Lcom/google/common/cache/CacheBuilder;->getRemovalListener()Lcom/google/common/cache/RemovalListener; move-result-object v3 iput-object v3, p0, Lcom/google/common/cache/LocalCache;->removalListener:Lcom/google/common/cache/RemovalListener; .line 13 sget-object v4, Lcom/google/common/cache/CacheBuilder$NullListener;->INSTANCE:Lcom/google/common/cache/CacheBuilder$NullListener; if-ne v3, v4, :cond_0 .line 14 invoke-static {}, Lcom/google/common/cache/LocalCache;->discardingQueue()Ljava/util/Queue; move-result-object v3 goto :goto_0 .line 15 :cond_0 new-instance v3, Ljava/util/concurrent/ConcurrentLinkedQueue; invoke-direct {v3}, Ljava/util/concurrent/ConcurrentLinkedQueue;->()V :goto_0 iput-object v3, p0, Lcom/google/common/cache/LocalCache;->removalNotificationQueue:Ljava/util/Queue; .line 16 invoke-virtual {p0}, Lcom/google/common/cache/LocalCache;->recordsTime()Z move-result v3 invoke-virtual {p1, v3}, Lcom/google/common/cache/CacheBuilder;->getTicker(Z)Lcom/google/common/base/Ticker; move-result-object v3 iput-object v3, p0, Lcom/google/common/cache/LocalCache;->ticker:Lcom/google/common/base/Ticker; .line 17 invoke-virtual {p0}, Lcom/google/common/cache/LocalCache;->usesAccessEntries()Z move-result v3 invoke-virtual {p0}, Lcom/google/common/cache/LocalCache;->usesWriteEntries()Z move-result v4 invoke-static {v0, v3, v4}, Lcom/google/common/cache/LocalCache$EntryFactory;->getFactory(Lcom/google/common/cache/LocalCache$Strength;ZZ)Lcom/google/common/cache/LocalCache$EntryFactory; move-result-object v0 iput-object v0, p0, Lcom/google/common/cache/LocalCache;->entryFactory:Lcom/google/common/cache/LocalCache$EntryFactory; .line 18 invoke-virtual {p1}, Lcom/google/common/cache/CacheBuilder;->getStatsCounterSupplier()Lcom/google/common/base/Supplier; move-result-object v0 invoke-interface {v0}, Lcom/google/common/base/Supplier;->get()Ljava/lang/Object; move-result-object v0 check-cast v0, Lcom/google/common/cache/AbstractCache$StatsCounter; iput-object v0, p0, Lcom/google/common/cache/LocalCache;->globalStatsCounter:Lcom/google/common/cache/AbstractCache$StatsCounter; .line 19 iput-object p2, p0, Lcom/google/common/cache/LocalCache;->defaultLoader:Lcom/google/common/cache/CacheLoader; .line 20 invoke-virtual {p1}, Lcom/google/common/cache/CacheBuilder;->getInitialCapacity()I move-result p2 const/high16 v0, 0x40000000 # 2.0f invoke-static {p2, v0}, Ljava/lang/Math;->min(II)I move-result p2 .line 21 invoke-virtual {p0}, Lcom/google/common/cache/LocalCache;->evictsBySize()Z move-result v0 if-eqz v0, :cond_1 invoke-virtual {p0}, Lcom/google/common/cache/LocalCache;->customWeigher()Z move-result v0 if-nez v0, :cond_1 int-to-long v3, p2 .line 22 invoke-static {v3, v4, v1, v2}, Ljava/lang/Math;->min(JJ)J move-result-wide v0 long-to-int p2, v0 :cond_1 const/4 v0, 0x0 const/4 v1, 0x1 move v3, v0 move v2, v1 .line 23 :goto_1 iget v4, p0, Lcom/google/common/cache/LocalCache;->concurrencyLevel:I if-ge v2, v4, :cond_3 invoke-virtual {p0}, Lcom/google/common/cache/LocalCache;->evictsBySize()Z move-result v4 if-eqz v4, :cond_2 mul-int/lit8 v4, v2, 0x14 int-to-long v4, v4 iget-wide v6, p0, Lcom/google/common/cache/LocalCache;->maxWeight:J cmp-long v4, v4, v6 if-gtz v4, :cond_3 :cond_2 add-int/lit8 v3, v3, 0x1 shl-int/lit8 v2, v2, 0x1 goto :goto_1 :cond_3 rsub-int/lit8 v3, v3, 0x20 .line 24 iput v3, p0, Lcom/google/common/cache/LocalCache;->segmentShift:I add-int/lit8 v3, v2, -0x1 .line 25 iput v3, p0, Lcom/google/common/cache/LocalCache;->segmentMask:I .line 26 invoke-virtual {p0, v2}, Lcom/google/common/cache/LocalCache;->newSegmentArray(I)[Lcom/google/common/cache/LocalCache$Segment; move-result-object v3 iput-object v3, p0, Lcom/google/common/cache/LocalCache;->segments:[Lcom/google/common/cache/LocalCache$Segment; .line 27 div-int v3, p2, v2 mul-int v4, v3, v2 if-ge v4, p2, :cond_4 add-int/lit8 v3, v3, 0x1 :cond_4 :goto_2 if-ge v1, v3, :cond_5 shl-int/lit8 v1, v1, 0x1 goto :goto_2 .line 28 :cond_5 invoke-virtual {p0}, Lcom/google/common/cache/LocalCache;->evictsBySize()Z move-result p2 if-eqz p2, :cond_7 .line 29 iget-wide v3, p0, Lcom/google/common/cache/LocalCache;->maxWeight:J int-to-long v5, v2 div-long v7, v3, v5 const-wide/16 v9, 0x1 add-long/2addr v7, v9 .line 30 rem-long/2addr v3, v5 .line 31 :goto_3 iget-object p2, p0, Lcom/google/common/cache/LocalCache;->segments:[Lcom/google/common/cache/LocalCache$Segment; array-length v2, p2 if-ge v0, v2, :cond_8 int-to-long v5, v0 cmp-long v2, v5, v3 if-nez v2, :cond_6 sub-long/2addr v7, v9 .line 32 :cond_6 invoke-virtual {p1}, Lcom/google/common/cache/CacheBuilder;->getStatsCounterSupplier()Lcom/google/common/base/Supplier; move-result-object v2 invoke-interface {v2}, Lcom/google/common/base/Supplier;->get()Ljava/lang/Object; move-result-object v2 check-cast v2, Lcom/google/common/cache/AbstractCache$StatsCounter; invoke-virtual {p0, v1, v7, v8, v2}, Lcom/google/common/cache/LocalCache;->createSegment(IJLcom/google/common/cache/AbstractCache$StatsCounter;)Lcom/google/common/cache/LocalCache$Segment; move-result-object v2 aput-object v2, p2, v0 add-int/lit8 v0, v0, 0x1 goto :goto_3 .line 33 :cond_7 :goto_4 iget-object p2, p0, Lcom/google/common/cache/LocalCache;->segments:[Lcom/google/common/cache/LocalCache$Segment; array-length v2, p2 if-ge v0, v2, :cond_8 const-wide/16 v2, -0x1 .line 34 invoke-virtual {p1}, Lcom/google/common/cache/CacheBuilder;->getStatsCounterSupplier()Lcom/google/common/base/Supplier; move-result-object v4 invoke-interface {v4}, Lcom/google/common/base/Supplier;->get()Ljava/lang/Object; move-result-object v4 check-cast v4, Lcom/google/common/cache/AbstractCache$StatsCounter; invoke-virtual {p0, v1, v2, v3, v4}, Lcom/google/common/cache/LocalCache;->createSegment(IJLcom/google/common/cache/AbstractCache$StatsCounter;)Lcom/google/common/cache/LocalCache$Segment; move-result-object v2 aput-object v2, p2, v0 add-int/lit8 v0, v0, 0x1 goto :goto_4 :cond_8 return-void .end method .method public static synthetic access$200(Ljava/util/Collection;)Ljava/util/ArrayList; .locals 0 .line 1 invoke-static {p0}, Lcom/google/common/cache/LocalCache;->toArrayList(Ljava/util/Collection;)Ljava/util/ArrayList; move-result-object p0 return-object p0 .end method .method public static connectAccessOrder(Lcom/google/common/cache/ReferenceEntry;Lcom/google/common/cache/ReferenceEntry;)V .locals 0 .annotation system Ldalvik/annotation/Signature; value = { "(", "Lcom/google/common/cache/ReferenceEntry<", "TK;TV;>;", "Lcom/google/common/cache/ReferenceEntry<", "TK;TV;>;)V" } .end annotation .line 1 invoke-interface {p0, p1}, Lcom/google/common/cache/ReferenceEntry;->setNextInAccessQueue(Lcom/google/common/cache/ReferenceEntry;)V .line 2 invoke-interface {p1, p0}, Lcom/google/common/cache/ReferenceEntry;->setPreviousInAccessQueue(Lcom/google/common/cache/ReferenceEntry;)V return-void .end method .method public static connectWriteOrder(Lcom/google/common/cache/ReferenceEntry;Lcom/google/common/cache/ReferenceEntry;)V .locals 0 .annotation system Ldalvik/annotation/Signature; value = { "(", "Lcom/google/common/cache/ReferenceEntry<", "TK;TV;>;", "Lcom/google/common/cache/ReferenceEntry<", "TK;TV;>;)V" } .end annotation .line 1 invoke-interface {p0, p1}, Lcom/google/common/cache/ReferenceEntry;->setNextInWriteQueue(Lcom/google/common/cache/ReferenceEntry;)V .line 2 invoke-interface {p1, p0}, Lcom/google/common/cache/ReferenceEntry;->setPreviousInWriteQueue(Lcom/google/common/cache/ReferenceEntry;)V return-void .end method .method public static discardingQueue()Ljava/util/Queue; .locals 1 .annotation system Ldalvik/annotation/Signature; value = { "()", "Ljava/util/Queue<", "TE;>;" } .end annotation .line 1 sget-object v0, Lcom/google/common/cache/LocalCache;->DISCARDING_QUEUE:Ljava/util/Queue; return-object v0 .end method .method public static nullEntry()Lcom/google/common/cache/ReferenceEntry; .locals 1 .annotation system Ldalvik/annotation/Signature; value = { "()", "Lcom/google/common/cache/ReferenceEntry<", "TK;TV;>;" } .end annotation .line 1 sget-object v0, Lcom/google/common/cache/LocalCache$NullEntry;->INSTANCE:Lcom/google/common/cache/LocalCache$NullEntry; return-object v0 .end method .method public static nullifyAccessOrder(Lcom/google/common/cache/ReferenceEntry;)V .locals 1 .annotation system Ldalvik/annotation/Signature; value = { "(", "Lcom/google/common/cache/ReferenceEntry<", "TK;TV;>;)V" } .end annotation .line 1 invoke-static {}, Lcom/google/common/cache/LocalCache;->nullEntry()Lcom/google/common/cache/ReferenceEntry; move-result-object v0 .line 2 invoke-interface {p0, v0}, Lcom/google/common/cache/ReferenceEntry;->setNextInAccessQueue(Lcom/google/common/cache/ReferenceEntry;)V .line 3 invoke-interface {p0, v0}, Lcom/google/common/cache/ReferenceEntry;->setPreviousInAccessQueue(Lcom/google/common/cache/ReferenceEntry;)V return-void .end method .method public static nullifyWriteOrder(Lcom/google/common/cache/ReferenceEntry;)V .locals 1 .annotation system Ldalvik/annotation/Signature; value = { "(", "Lcom/google/common/cache/ReferenceEntry<", "TK;TV;>;)V" } .end annotation .line 1 invoke-static {}, Lcom/google/common/cache/LocalCache;->nullEntry()Lcom/google/common/cache/ReferenceEntry; move-result-object v0 .line 2 invoke-interface {p0, v0}, Lcom/google/common/cache/ReferenceEntry;->setNextInWriteQueue(Lcom/google/common/cache/ReferenceEntry;)V .line 3 invoke-interface {p0, v0}, Lcom/google/common/cache/ReferenceEntry;->setPreviousInWriteQueue(Lcom/google/common/cache/ReferenceEntry;)V return-void .end method .method public static rehash(I)I .locals 2 shl-int/lit8 v0, p0, 0xf xor-int/lit16 v0, v0, -0x3283 add-int/2addr p0, v0 ushr-int/lit8 v0, p0, 0xa xor-int/2addr p0, v0 shl-int/lit8 v0, p0, 0x3 add-int/2addr p0, v0 ushr-int/lit8 v0, p0, 0x6 xor-int/2addr p0, v0 shl-int/lit8 v0, p0, 0x2 shl-int/lit8 v1, p0, 0xe add-int/2addr v0, v1 add-int/2addr v0, p0 ushr-int/lit8 p0, v0, 0x10 xor-int/2addr p0, v0 return p0 .end method .method private static toArrayList(Ljava/util/Collection;)Ljava/util/ArrayList; .locals 2 .annotation system Ldalvik/annotation/Signature; value = { "(", "Ljava/util/Collection<", "TE;>;)", "Ljava/util/ArrayList<", "TE;>;" } .end annotation .line 1 new-instance v0, Ljava/util/ArrayList; invoke-interface {p0}, Ljava/util/Collection;->size()I move-result v1 invoke-direct {v0, v1}, Ljava/util/ArrayList;->(I)V .line 2 invoke-interface {p0}, Ljava/util/Collection;->iterator()Ljava/util/Iterator; move-result-object p0 invoke-static {v0, p0}, Lcom/google/common/collect/Iterators;->addAll(Ljava/util/Collection;Ljava/util/Iterator;)Z return-object v0 .end method .method public static unset()Lcom/google/common/cache/LocalCache$ValueReference; .locals 1 .annotation system Ldalvik/annotation/Signature; value = { "()", "Lcom/google/common/cache/LocalCache$ValueReference<", "TK;TV;>;" } .end annotation .line 1 sget-object v0, Lcom/google/common/cache/LocalCache;->UNSET:Lcom/google/common/cache/LocalCache$ValueReference; return-object v0 .end method # virtual methods .method public cleanUp()V .locals 4 .line 1 iget-object v0, p0, Lcom/google/common/cache/LocalCache;->segments:[Lcom/google/common/cache/LocalCache$Segment; array-length v1, v0 const/4 v2, 0x0 :goto_0 if-ge v2, v1, :cond_0 aget-object v3, v0, v2 .line 2 invoke-virtual {v3}, Lcom/google/common/cache/LocalCache$Segment;->cleanUp()V add-int/lit8 v2, v2, 0x1 goto :goto_0 :cond_0 return-void .end method .method public clear()V .locals 4 .line 1 iget-object v0, p0, Lcom/google/common/cache/LocalCache;->segments:[Lcom/google/common/cache/LocalCache$Segment; array-length v1, v0 const/4 v2, 0x0 :goto_0 if-ge v2, v1, :cond_0 aget-object v3, v0, v2 .line 2 invoke-virtual {v3}, Lcom/google/common/cache/LocalCache$Segment;->clear()V add-int/lit8 v2, v2, 0x1 goto :goto_0 :cond_0 return-void .end method .method public containsKey(Ljava/lang/Object;)Z .locals 2 .param p1 # Ljava/lang/Object; .annotation runtime Lorg/checkerframework/checker/nullness/compatqual/NullableDecl; .end annotation .end param if-nez p1, :cond_0 const/4 p1, 0x0 return p1 .line 1 :cond_0 invoke-virtual {p0, p1}, Lcom/google/common/cache/LocalCache;->hash(Ljava/lang/Object;)I move-result v0 .line 2 invoke-virtual {p0, v0}, Lcom/google/common/cache/LocalCache;->segmentFor(I)Lcom/google/common/cache/LocalCache$Segment; move-result-object v1 invoke-virtual {v1, p1, v0}, Lcom/google/common/cache/LocalCache$Segment;->containsKey(Ljava/lang/Object;I)Z move-result p1 return p1 .end method .method public containsValue(Ljava/lang/Object;)Z .locals 19 .param p1 # Ljava/lang/Object; .annotation runtime Lorg/checkerframework/checker/nullness/compatqual/NullableDecl; .end annotation .end param move-object/from16 v0, p0 move-object/from16 v1, p1 const/4 v2, 0x0 if-nez v1, :cond_0 return v2 .line 1 :cond_0 iget-object v3, v0, Lcom/google/common/cache/LocalCache;->ticker:Lcom/google/common/base/Ticker; invoke-virtual {v3}, Lcom/google/common/base/Ticker;->read()J move-result-wide v3 .line 2 iget-object v5, v0, Lcom/google/common/cache/LocalCache;->segments:[Lcom/google/common/cache/LocalCache$Segment; const-wide/16 v6, -0x1 move v8, v2 :goto_0 const/4 v9, 0x3 if-ge v8, v9, :cond_6 const-wide/16 v9, 0x0 .line 3 array-length v11, v5 move v12, v2 :goto_1 if-ge v12, v11, :cond_4 aget-object v13, v5, v12 .line 4 iget v14, v13, Lcom/google/common/cache/LocalCache$Segment;->count:I .line 5 iget-object v14, v13, Lcom/google/common/cache/LocalCache$Segment;->table:Ljava/util/concurrent/atomic/AtomicReferenceArray; move v15, v2 .line 6 :goto_2 invoke-virtual {v14}, Ljava/util/concurrent/atomic/AtomicReferenceArray;->length()I move-result v2 if-ge v15, v2, :cond_3 .line 7 invoke-virtual {v14, v15}, Ljava/util/concurrent/atomic/AtomicReferenceArray;->get(I)Ljava/lang/Object; move-result-object v2 check-cast v2, Lcom/google/common/cache/ReferenceEntry; :goto_3 if-eqz v2, :cond_2 move-object/from16 v16, v5 .line 8 invoke-virtual {v13, v2, v3, v4}, Lcom/google/common/cache/LocalCache$Segment;->getLiveValue(Lcom/google/common/cache/ReferenceEntry;J)Ljava/lang/Object; move-result-object v5 move-wide/from16 v17, v3 if-eqz v5, :cond_1 .line 9 iget-object v3, v0, Lcom/google/common/cache/LocalCache;->valueEquivalence:Lcom/google/common/base/Equivalence; invoke-virtual {v3, v1, v5}, Lcom/google/common/base/Equivalence;->equivalent(Ljava/lang/Object;Ljava/lang/Object;)Z move-result v3 if-eqz v3, :cond_1 const/4 v1, 0x1 return v1 .line 10 :cond_1 invoke-interface {v2}, Lcom/google/common/cache/ReferenceEntry;->getNext()Lcom/google/common/cache/ReferenceEntry; move-result-object v2 move-object/from16 v5, v16 move-wide/from16 v3, v17 goto :goto_3 :cond_2 move-wide/from16 v17, v3 move-object/from16 v16, v5 add-int/lit8 v15, v15, 0x1 goto :goto_2 :cond_3 move-wide/from16 v17, v3 move-object/from16 v16, v5 .line 11 iget v2, v13, Lcom/google/common/cache/LocalCache$Segment;->modCount:I int-to-long v2, v2 add-long/2addr v9, v2 add-int/lit8 v12, v12, 0x1 move-wide/from16 v3, v17 const/4 v2, 0x0 goto :goto_1 :cond_4 move-wide/from16 v17, v3 move-object/from16 v16, v5 cmp-long v2, v9, v6 if-nez v2, :cond_5 const/4 v1, 0x0 goto :goto_4 :cond_5 add-int/lit8 v8, v8, 0x1 move-wide v6, v9 move-object/from16 v5, v16 move-wide/from16 v3, v17 const/4 v2, 0x0 goto :goto_0 :cond_6 move v1, v2 :goto_4 return v1 .end method .method public copyEntry(Lcom/google/common/cache/ReferenceEntry;Lcom/google/common/cache/ReferenceEntry;)Lcom/google/common/cache/ReferenceEntry; .locals 1 .annotation build Lcom/google/common/annotations/VisibleForTesting; .end annotation .annotation system Ldalvik/annotation/Signature; value = { "(", "Lcom/google/common/cache/ReferenceEntry<", "TK;TV;>;", "Lcom/google/common/cache/ReferenceEntry<", "TK;TV;>;)", "Lcom/google/common/cache/ReferenceEntry<", "TK;TV;>;" } .end annotation .line 1 invoke-interface {p1}, Lcom/google/common/cache/ReferenceEntry;->getHash()I move-result v0 .line 2 invoke-virtual {p0, v0}, Lcom/google/common/cache/LocalCache;->segmentFor(I)Lcom/google/common/cache/LocalCache$Segment; move-result-object v0 invoke-virtual {v0, p1, p2}, Lcom/google/common/cache/LocalCache$Segment;->copyEntry(Lcom/google/common/cache/ReferenceEntry;Lcom/google/common/cache/ReferenceEntry;)Lcom/google/common/cache/ReferenceEntry; move-result-object p1 return-object p1 .end method .method public createSegment(IJLcom/google/common/cache/AbstractCache$StatsCounter;)Lcom/google/common/cache/LocalCache$Segment; .locals 7 .annotation system Ldalvik/annotation/Signature; value = { "(IJ", "Lcom/google/common/cache/AbstractCache$StatsCounter;", ")", "Lcom/google/common/cache/LocalCache$Segment<", "TK;TV;>;" } .end annotation .line 1 new-instance v6, Lcom/google/common/cache/LocalCache$Segment; move-object v0, v6 move-object v1, p0 move v2, p1 move-wide v3, p2 move-object v5, p4 invoke-direct/range {v0 .. v5}, Lcom/google/common/cache/LocalCache$Segment;->(Lcom/google/common/cache/LocalCache;IJLcom/google/common/cache/AbstractCache$StatsCounter;)V return-object v6 .end method .method public customWeigher()Z .locals 2 .line 1 iget-object v0, p0, Lcom/google/common/cache/LocalCache;->weigher:Lcom/google/common/cache/Weigher; sget-object v1, Lcom/google/common/cache/CacheBuilder$OneWeigher;->INSTANCE:Lcom/google/common/cache/CacheBuilder$OneWeigher; if-eq v0, v1, :cond_0 const/4 v0, 0x1 goto :goto_0 :cond_0 const/4 v0, 0x0 :goto_0 return v0 .end method .method public entrySet()Ljava/util/Set; .locals 1 .annotation build Lcom/google/common/annotations/GwtIncompatible; .end annotation .annotation system Ldalvik/annotation/Signature; value = { "()", "Ljava/util/Set<", "Ljava/util/Map$Entry<", "TK;TV;>;>;" } .end annotation .line 1 iget-object v0, p0, Lcom/google/common/cache/LocalCache;->entrySet:Ljava/util/Set; if-eqz v0, :cond_0 goto :goto_0 .line 2 :cond_0 new-instance v0, Lcom/google/common/cache/LocalCache$EntrySet; invoke-direct {v0, p0}, Lcom/google/common/cache/LocalCache$EntrySet;->(Lcom/google/common/cache/LocalCache;)V iput-object v0, p0, Lcom/google/common/cache/LocalCache;->entrySet:Ljava/util/Set; :goto_0 return-object v0 .end method .method public evictsBySize()Z .locals 4 .line 1 iget-wide v0, p0, Lcom/google/common/cache/LocalCache;->maxWeight:J const-wide/16 v2, 0x0 cmp-long v0, v0, v2 if-ltz v0, :cond_0 const/4 v0, 0x1 goto :goto_0 :cond_0 const/4 v0, 0x0 :goto_0 return v0 .end method .method public expires()Z .locals 1 .line 1 invoke-virtual {p0}, Lcom/google/common/cache/LocalCache;->expiresAfterWrite()Z move-result v0 if-nez v0, :cond_1 invoke-virtual {p0}, Lcom/google/common/cache/LocalCache;->expiresAfterAccess()Z move-result v0 if-eqz v0, :cond_0 goto :goto_0 :cond_0 const/4 v0, 0x0 goto :goto_1 :cond_1 :goto_0 const/4 v0, 0x1 :goto_1 return v0 .end method .method public expiresAfterAccess()Z .locals 4 .line 1 iget-wide v0, p0, Lcom/google/common/cache/LocalCache;->expireAfterAccessNanos:J const-wide/16 v2, 0x0 cmp-long v0, v0, v2 if-lez v0, :cond_0 const/4 v0, 0x1 goto :goto_0 :cond_0 const/4 v0, 0x0 :goto_0 return v0 .end method .method public expiresAfterWrite()Z .locals 4 .line 1 iget-wide v0, p0, Lcom/google/common/cache/LocalCache;->expireAfterWriteNanos:J const-wide/16 v2, 0x0 cmp-long v0, v0, v2 if-lez v0, :cond_0 const/4 v0, 0x1 goto :goto_0 :cond_0 const/4 v0, 0x0 :goto_0 return v0 .end method .method public get(Ljava/lang/Object;)Ljava/lang/Object; .locals 2 .param p1 # Ljava/lang/Object; .annotation runtime Lorg/checkerframework/checker/nullness/compatqual/NullableDecl; .end annotation .end param .annotation system Ldalvik/annotation/Signature; value = { "(", "Ljava/lang/Object;", ")TV;" } .end annotation .annotation runtime Lorg/checkerframework/checker/nullness/compatqual/NullableDecl; .end annotation if-nez p1, :cond_0 const/4 p1, 0x0 return-object p1 .line 1 :cond_0 invoke-virtual {p0, p1}, Lcom/google/common/cache/LocalCache;->hash(Ljava/lang/Object;)I move-result v0 .line 2 invoke-virtual {p0, v0}, Lcom/google/common/cache/LocalCache;->segmentFor(I)Lcom/google/common/cache/LocalCache$Segment; move-result-object v1 invoke-virtual {v1, p1, v0}, Lcom/google/common/cache/LocalCache$Segment;->get(Ljava/lang/Object;I)Ljava/lang/Object; move-result-object p1 return-object p1 .end method .method public get(Ljava/lang/Object;Lcom/google/common/cache/CacheLoader;)Ljava/lang/Object; .locals 2 .annotation system Ldalvik/annotation/Signature; value = { "(TK;", "Lcom/google/common/cache/CacheLoader<", "-TK;TV;>;)TV;" } .end annotation .annotation system Ldalvik/annotation/Throws; value = { Ljava/util/concurrent/ExecutionException; } .end annotation .line 3 invoke-static {p1}, Lcom/google/common/base/Preconditions;->checkNotNull(Ljava/lang/Object;)Ljava/lang/Object; move-result-object v0 invoke-virtual {p0, v0}, Lcom/google/common/cache/LocalCache;->hash(Ljava/lang/Object;)I move-result v0 .line 4 invoke-virtual {p0, v0}, Lcom/google/common/cache/LocalCache;->segmentFor(I)Lcom/google/common/cache/LocalCache$Segment; move-result-object v1 invoke-virtual {v1, p1, v0, p2}, Lcom/google/common/cache/LocalCache$Segment;->get(Ljava/lang/Object;ILcom/google/common/cache/CacheLoader;)Ljava/lang/Object; move-result-object p1 return-object p1 .end method .method public getAll(Ljava/lang/Iterable;)Lcom/google/common/collect/ImmutableMap; .locals 7 .annotation system Ldalvik/annotation/Signature; value = { "(", "Ljava/lang/Iterable<", "+TK;>;)", "Lcom/google/common/collect/ImmutableMap<", "TK;TV;>;" } .end annotation .annotation system Ldalvik/annotation/Throws; value = { Ljava/util/concurrent/ExecutionException; } .end annotation .line 1 invoke-static {}, Lcom/google/common/collect/Maps;->newLinkedHashMap()Ljava/util/LinkedHashMap; move-result-object v0 .line 2 invoke-static {}, Lcom/google/common/collect/Sets;->newLinkedHashSet()Ljava/util/LinkedHashSet; move-result-object v1 .line 3 invoke-interface {p1}, Ljava/lang/Iterable;->iterator()Ljava/util/Iterator; move-result-object p1 const/4 v2, 0x0 move v3, v2 :cond_0 :goto_0 invoke-interface {p1}, Ljava/util/Iterator;->hasNext()Z move-result v4 if-eqz v4, :cond_2 invoke-interface {p1}, Ljava/util/Iterator;->next()Ljava/lang/Object; move-result-object v4 .line 4 invoke-virtual {p0, v4}, Lcom/google/common/cache/LocalCache;->get(Ljava/lang/Object;)Ljava/lang/Object; move-result-object v5 .line 5 invoke-interface {v0, v4}, Ljava/util/Map;->containsKey(Ljava/lang/Object;)Z move-result v6 if-nez v6, :cond_0 .line 6 invoke-interface {v0, v4, v5}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; if-nez v5, :cond_1 add-int/lit8 v3, v3, 0x1 .line 7 invoke-interface {v1, v4}, Ljava/util/Set;->add(Ljava/lang/Object;)Z goto :goto_0 :cond_1 add-int/lit8 v2, v2, 0x1 goto :goto_0 .line 8 :cond_2 :try_start_0 invoke-interface {v1}, Ljava/util/Set;->isEmpty()Z move-result p1 :try_end_0 .catchall {:try_start_0 .. :try_end_0} :catchall_0 if-nez p1, :cond_4 .line 9 :try_start_1 iget-object p1, p0, Lcom/google/common/cache/LocalCache;->defaultLoader:Lcom/google/common/cache/CacheLoader; invoke-virtual {p0, v1, p1}, Lcom/google/common/cache/LocalCache;->loadAll(Ljava/util/Set;Lcom/google/common/cache/CacheLoader;)Ljava/util/Map; move-result-object p1 .line 10 invoke-interface {v1}, Ljava/util/Set;->iterator()Ljava/util/Iterator; move-result-object v4 :goto_1 invoke-interface {v4}, Ljava/util/Iterator;->hasNext()Z move-result v5 if-eqz v5, :cond_4 invoke-interface {v4}, Ljava/util/Iterator;->next()Ljava/lang/Object; move-result-object v5 .line 11 invoke-interface {p1, v5}, Ljava/util/Map;->get(Ljava/lang/Object;)Ljava/lang/Object; move-result-object v6 if-eqz v6, :cond_3 .line 12 invoke-interface {v0, v5, v6}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; goto :goto_1 .line 13 :cond_3 new-instance p1, Lcom/google/common/cache/CacheLoader$InvalidCacheLoadException; invoke-static {v5}, Ljava/lang/String;->valueOf(Ljava/lang/Object;)Ljava/lang/String; move-result-object v4 invoke-virtual {v4}, Ljava/lang/String;->length()I move-result v5 add-int/lit8 v5, v5, 0x25 new-instance v6, Ljava/lang/StringBuilder; invoke-direct {v6, v5}, Ljava/lang/StringBuilder;->(I)V const-string v5, "loadAll failed to return a value for " invoke-virtual {v6, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; invoke-virtual {v6, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; invoke-virtual {v6}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; move-result-object v4 invoke-direct {p1, v4}, Lcom/google/common/cache/CacheLoader$InvalidCacheLoadException;->(Ljava/lang/String;)V throw p1 :try_end_1 .catch Lcom/google/common/cache/CacheLoader$UnsupportedLoadingOperationException; {:try_start_1 .. :try_end_1} :catch_0 .catchall {:try_start_1 .. :try_end_1} :catchall_0 .line 14 :catch_0 :try_start_2 invoke-interface {v1}, Ljava/util/Set;->iterator()Ljava/util/Iterator; move-result-object p1 :goto_2 invoke-interface {p1}, Ljava/util/Iterator;->hasNext()Z move-result v1 if-eqz v1, :cond_4 invoke-interface {p1}, Ljava/util/Iterator;->next()Ljava/lang/Object; move-result-object v1 add-int/lit8 v3, v3, -0x1 .line 15 iget-object v4, p0, Lcom/google/common/cache/LocalCache;->defaultLoader:Lcom/google/common/cache/CacheLoader; invoke-virtual {p0, v1, v4}, Lcom/google/common/cache/LocalCache;->get(Ljava/lang/Object;Lcom/google/common/cache/CacheLoader;)Ljava/lang/Object; move-result-object v4 invoke-interface {v0, v1, v4}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; goto :goto_2 .line 16 :cond_4 invoke-static {v0}, Lcom/google/common/collect/ImmutableMap;->copyOf(Ljava/util/Map;)Lcom/google/common/collect/ImmutableMap; move-result-object p1 :try_end_2 .catchall {:try_start_2 .. :try_end_2} :catchall_0 .line 17 iget-object v0, p0, Lcom/google/common/cache/LocalCache;->globalStatsCounter:Lcom/google/common/cache/AbstractCache$StatsCounter; invoke-interface {v0, v2}, Lcom/google/common/cache/AbstractCache$StatsCounter;->recordHits(I)V .line 18 iget-object v0, p0, Lcom/google/common/cache/LocalCache;->globalStatsCounter:Lcom/google/common/cache/AbstractCache$StatsCounter; invoke-interface {v0, v3}, Lcom/google/common/cache/AbstractCache$StatsCounter;->recordMisses(I)V return-object p1 :catchall_0 move-exception p1 .line 19 iget-object v0, p0, Lcom/google/common/cache/LocalCache;->globalStatsCounter:Lcom/google/common/cache/AbstractCache$StatsCounter; invoke-interface {v0, v2}, Lcom/google/common/cache/AbstractCache$StatsCounter;->recordHits(I)V .line 20 iget-object v0, p0, Lcom/google/common/cache/LocalCache;->globalStatsCounter:Lcom/google/common/cache/AbstractCache$StatsCounter; invoke-interface {v0, v3}, Lcom/google/common/cache/AbstractCache$StatsCounter;->recordMisses(I)V .line 21 throw p1 .end method .method public getAllPresent(Ljava/lang/Iterable;)Lcom/google/common/collect/ImmutableMap; .locals 5 .annotation system Ldalvik/annotation/Signature; value = { "(", "Ljava/lang/Iterable<", "*>;)", "Lcom/google/common/collect/ImmutableMap<", "TK;TV;>;" } .end annotation .line 1 invoke-static {}, Lcom/google/common/collect/Maps;->newLinkedHashMap()Ljava/util/LinkedHashMap; move-result-object v0 .line 2 invoke-interface {p1}, Ljava/lang/Iterable;->iterator()Ljava/util/Iterator; move-result-object p1 const/4 v1, 0x0 move v2, v1 :goto_0 invoke-interface {p1}, Ljava/util/Iterator;->hasNext()Z move-result v3 if-eqz v3, :cond_1 invoke-interface {p1}, Ljava/util/Iterator;->next()Ljava/lang/Object; move-result-object v3 .line 3 invoke-virtual {p0, v3}, Lcom/google/common/cache/LocalCache;->get(Ljava/lang/Object;)Ljava/lang/Object; move-result-object v4 if-nez v4, :cond_0 add-int/lit8 v2, v2, 0x1 goto :goto_0 .line 4 :cond_0 invoke-interface {v0, v3, v4}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; add-int/lit8 v1, v1, 0x1 goto :goto_0 .line 5 :cond_1 iget-object p1, p0, Lcom/google/common/cache/LocalCache;->globalStatsCounter:Lcom/google/common/cache/AbstractCache$StatsCounter; invoke-interface {p1, v1}, Lcom/google/common/cache/AbstractCache$StatsCounter;->recordHits(I)V .line 6 iget-object p1, p0, Lcom/google/common/cache/LocalCache;->globalStatsCounter:Lcom/google/common/cache/AbstractCache$StatsCounter; invoke-interface {p1, v2}, Lcom/google/common/cache/AbstractCache$StatsCounter;->recordMisses(I)V .line 7 invoke-static {v0}, Lcom/google/common/collect/ImmutableMap;->copyOf(Ljava/util/Map;)Lcom/google/common/collect/ImmutableMap; move-result-object p1 return-object p1 .end method .method public getEntry(Ljava/lang/Object;)Lcom/google/common/cache/ReferenceEntry; .locals 2 .param p1 # Ljava/lang/Object; .annotation runtime Lorg/checkerframework/checker/nullness/compatqual/NullableDecl; .end annotation .end param .annotation system Ldalvik/annotation/Signature; value = { "(", "Ljava/lang/Object;", ")", "Lcom/google/common/cache/ReferenceEntry<", "TK;TV;>;" } .end annotation if-nez p1, :cond_0 const/4 p1, 0x0 return-object p1 .line 1 :cond_0 invoke-virtual {p0, p1}, Lcom/google/common/cache/LocalCache;->hash(Ljava/lang/Object;)I move-result v0 .line 2 invoke-virtual {p0, v0}, Lcom/google/common/cache/LocalCache;->segmentFor(I)Lcom/google/common/cache/LocalCache$Segment; move-result-object v1 invoke-virtual {v1, p1, v0}, Lcom/google/common/cache/LocalCache$Segment;->getEntry(Ljava/lang/Object;I)Lcom/google/common/cache/ReferenceEntry; move-result-object p1 return-object p1 .end method .method public getIfPresent(Ljava/lang/Object;)Ljava/lang/Object; .locals 2 .annotation system Ldalvik/annotation/Signature; value = { "(", "Ljava/lang/Object;", ")TV;" } .end annotation .annotation runtime Lorg/checkerframework/checker/nullness/compatqual/NullableDecl; .end annotation .line 1 invoke-static {p1}, Lcom/google/common/base/Preconditions;->checkNotNull(Ljava/lang/Object;)Ljava/lang/Object; move-result-object v0 invoke-virtual {p0, v0}, Lcom/google/common/cache/LocalCache;->hash(Ljava/lang/Object;)I move-result v0 .line 2 invoke-virtual {p0, v0}, Lcom/google/common/cache/LocalCache;->segmentFor(I)Lcom/google/common/cache/LocalCache$Segment; move-result-object v1 invoke-virtual {v1, p1, v0}, Lcom/google/common/cache/LocalCache$Segment;->get(Ljava/lang/Object;I)Ljava/lang/Object; move-result-object p1 const/4 v0, 0x1 if-nez p1, :cond_0 .line 3 iget-object v1, p0, Lcom/google/common/cache/LocalCache;->globalStatsCounter:Lcom/google/common/cache/AbstractCache$StatsCounter; invoke-interface {v1, v0}, Lcom/google/common/cache/AbstractCache$StatsCounter;->recordMisses(I)V goto :goto_0 .line 4 :cond_0 iget-object v1, p0, Lcom/google/common/cache/LocalCache;->globalStatsCounter:Lcom/google/common/cache/AbstractCache$StatsCounter; invoke-interface {v1, v0}, Lcom/google/common/cache/AbstractCache$StatsCounter;->recordHits(I)V :goto_0 return-object p1 .end method .method public getLiveValue(Lcom/google/common/cache/ReferenceEntry;J)Ljava/lang/Object; .locals 2 .annotation system Ldalvik/annotation/Signature; value = { "(", "Lcom/google/common/cache/ReferenceEntry<", "TK;TV;>;J)TV;" } .end annotation .annotation runtime Lorg/checkerframework/checker/nullness/compatqual/NullableDecl; .end annotation .line 1 invoke-interface {p1}, Lcom/google/common/cache/ReferenceEntry;->getKey()Ljava/lang/Object; move-result-object v0 const/4 v1, 0x0 if-nez v0, :cond_0 return-object v1 .line 2 :cond_0 invoke-interface {p1}, Lcom/google/common/cache/ReferenceEntry;->getValueReference()Lcom/google/common/cache/LocalCache$ValueReference; move-result-object v0 invoke-interface {v0}, Lcom/google/common/cache/LocalCache$ValueReference;->get()Ljava/lang/Object; move-result-object v0 if-nez v0, :cond_1 return-object v1 .line 3 :cond_1 invoke-virtual {p0, p1, p2, p3}, Lcom/google/common/cache/LocalCache;->isExpired(Lcom/google/common/cache/ReferenceEntry;J)Z move-result p1 if-eqz p1, :cond_2 return-object v1 :cond_2 return-object v0 .end method .method public getOrDefault(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; .locals 0 .param p1 # Ljava/lang/Object; .annotation runtime Lorg/checkerframework/checker/nullness/compatqual/NullableDecl; .end annotation .end param .param p2 # Ljava/lang/Object; .annotation runtime Lorg/checkerframework/checker/nullness/compatqual/NullableDecl; .end annotation .end param .annotation system Ldalvik/annotation/Signature; value = { "(", "Ljava/lang/Object;", "TV;)TV;" } .end annotation .annotation runtime Lorg/checkerframework/checker/nullness/compatqual/NullableDecl; .end annotation .line 1 invoke-virtual {p0, p1}, Lcom/google/common/cache/LocalCache;->get(Ljava/lang/Object;)Ljava/lang/Object; move-result-object p1 if-eqz p1, :cond_0 move-object p2, p1 :cond_0 return-object p2 .end method .method public getOrLoad(Ljava/lang/Object;)Ljava/lang/Object; .locals 1 .annotation system Ldalvik/annotation/Signature; value = { "(TK;)TV;" } .end annotation .annotation system Ldalvik/annotation/Throws; value = { Ljava/util/concurrent/ExecutionException; } .end annotation .line 1 iget-object v0, p0, Lcom/google/common/cache/LocalCache;->defaultLoader:Lcom/google/common/cache/CacheLoader; invoke-virtual {p0, p1, v0}, Lcom/google/common/cache/LocalCache;->get(Ljava/lang/Object;Lcom/google/common/cache/CacheLoader;)Ljava/lang/Object; move-result-object p1 return-object p1 .end method .method public hash(Ljava/lang/Object;)I .locals 1 .param p1 # Ljava/lang/Object; .annotation runtime Lorg/checkerframework/checker/nullness/compatqual/NullableDecl; .end annotation .end param .line 1 iget-object v0, p0, Lcom/google/common/cache/LocalCache;->keyEquivalence:Lcom/google/common/base/Equivalence; invoke-virtual {v0, p1}, Lcom/google/common/base/Equivalence;->hash(Ljava/lang/Object;)I move-result p1 .line 2 invoke-static {p1}, Lcom/google/common/cache/LocalCache;->rehash(I)I move-result p1 return p1 .end method .method public invalidateAll(Ljava/lang/Iterable;)V .locals 1 .annotation system Ldalvik/annotation/Signature; value = { "(", "Ljava/lang/Iterable<", "*>;)V" } .end annotation .line 1 invoke-interface {p1}, Ljava/lang/Iterable;->iterator()Ljava/util/Iterator; move-result-object p1 :goto_0 invoke-interface {p1}, Ljava/util/Iterator;->hasNext()Z move-result v0 if-eqz v0, :cond_0 invoke-interface {p1}, Ljava/util/Iterator;->next()Ljava/lang/Object; move-result-object v0 .line 2 invoke-virtual {p0, v0}, Lcom/google/common/cache/LocalCache;->remove(Ljava/lang/Object;)Ljava/lang/Object; goto :goto_0 :cond_0 return-void .end method .method public isEmpty()Z .locals 10 .line 1 iget-object v0, p0, Lcom/google/common/cache/LocalCache;->segments:[Lcom/google/common/cache/LocalCache$Segment; const-wide/16 v1, 0x0 const/4 v3, 0x0 move-wide v5, v1 move v4, v3 .line 2 :goto_0 array-length v7, v0 if-ge v4, v7, :cond_1 .line 3 aget-object v7, v0, v4 iget v7, v7, Lcom/google/common/cache/LocalCache$Segment;->count:I if-eqz v7, :cond_0 return v3 .line 4 :cond_0 aget-object v7, v0, v4 iget v7, v7, Lcom/google/common/cache/LocalCache$Segment;->modCount:I int-to-long v7, v7 add-long/2addr v5, v7 add-int/lit8 v4, v4, 0x1 goto :goto_0 :cond_1 cmp-long v4, v5, v1 const/4 v7, 0x1 if-eqz v4, :cond_5 move v4, v3 .line 5 :goto_1 array-length v8, v0 if-ge v4, v8, :cond_3 .line 6 aget-object v8, v0, v4 iget v8, v8, Lcom/google/common/cache/LocalCache$Segment;->count:I if-eqz v8, :cond_2 return v3 .line 7 :cond_2 aget-object v8, v0, v4 iget v8, v8, Lcom/google/common/cache/LocalCache$Segment;->modCount:I int-to-long v8, v8 sub-long/2addr v5, v8 add-int/lit8 v4, v4, 0x1 goto :goto_1 :cond_3 cmp-long v0, v5, v1 if-nez v0, :cond_4 move v3, v7 :cond_4 return v3 :cond_5 return v7 .end method .method public isExpired(Lcom/google/common/cache/ReferenceEntry;J)Z .locals 6 .annotation system Ldalvik/annotation/Signature; value = { "(", "Lcom/google/common/cache/ReferenceEntry<", "TK;TV;>;J)Z" } .end annotation .line 1 invoke-static {p1}, Lcom/google/common/base/Preconditions;->checkNotNull(Ljava/lang/Object;)Ljava/lang/Object; .line 2 invoke-virtual {p0}, Lcom/google/common/cache/LocalCache;->expiresAfterAccess()Z move-result v0 const/4 v1, 0x1 if-eqz v0, :cond_0 invoke-interface {p1}, Lcom/google/common/cache/ReferenceEntry;->getAccessTime()J move-result-wide v2 sub-long v2, p2, v2 iget-wide v4, p0, Lcom/google/common/cache/LocalCache;->expireAfterAccessNanos:J cmp-long v0, v2, v4 if-ltz v0, :cond_0 return v1 .line 3 :cond_0 invoke-virtual {p0}, Lcom/google/common/cache/LocalCache;->expiresAfterWrite()Z move-result v0 if-eqz v0, :cond_1 invoke-interface {p1}, Lcom/google/common/cache/ReferenceEntry;->getWriteTime()J move-result-wide v2 sub-long/2addr p2, v2 iget-wide v2, p0, Lcom/google/common/cache/LocalCache;->expireAfterWriteNanos:J cmp-long p1, p2, v2 if-ltz p1, :cond_1 return v1 :cond_1 const/4 p1, 0x0 return p1 .end method .method public isLive(Lcom/google/common/cache/ReferenceEntry;J)Z .locals 1 .annotation build Lcom/google/common/annotations/VisibleForTesting; .end annotation .annotation system Ldalvik/annotation/Signature; value = { "(", "Lcom/google/common/cache/ReferenceEntry<", "TK;TV;>;J)Z" } .end annotation .line 1 invoke-interface {p1}, Lcom/google/common/cache/ReferenceEntry;->getHash()I move-result v0 invoke-virtual {p0, v0}, Lcom/google/common/cache/LocalCache;->segmentFor(I)Lcom/google/common/cache/LocalCache$Segment; move-result-object v0 invoke-virtual {v0, p1, p2, p3}, Lcom/google/common/cache/LocalCache$Segment;->getLiveValue(Lcom/google/common/cache/ReferenceEntry;J)Ljava/lang/Object; move-result-object p1 if-eqz p1, :cond_0 const/4 p1, 0x1 goto :goto_0 :cond_0 const/4 p1, 0x0 :goto_0 return p1 .end method .method public keySet()Ljava/util/Set; .locals 1 .annotation system Ldalvik/annotation/Signature; value = { "()", "Ljava/util/Set<", "TK;>;" } .end annotation .line 1 iget-object v0, p0, Lcom/google/common/cache/LocalCache;->keySet:Ljava/util/Set; if-eqz v0, :cond_0 goto :goto_0 .line 2 :cond_0 new-instance v0, Lcom/google/common/cache/LocalCache$KeySet; invoke-direct {v0, p0}, Lcom/google/common/cache/LocalCache$KeySet;->(Lcom/google/common/cache/LocalCache;)V iput-object v0, p0, Lcom/google/common/cache/LocalCache;->keySet:Ljava/util/Set; :goto_0 return-object v0 .end method .method public loadAll(Ljava/util/Set;Lcom/google/common/cache/CacheLoader;)Ljava/util/Map; .locals 6 .annotation system Ldalvik/annotation/Signature; value = { "(", "Ljava/util/Set<", "+TK;>;", "Lcom/google/common/cache/CacheLoader<", "-TK;TV;>;)", "Ljava/util/Map<", "TK;TV;>;" } .end annotation .annotation system Ldalvik/annotation/Throws; value = { Ljava/util/concurrent/ExecutionException; } .end annotation .annotation runtime Lorg/checkerframework/checker/nullness/compatqual/NullableDecl; .end annotation .line 1 invoke-static {p2}, Lcom/google/common/base/Preconditions;->checkNotNull(Ljava/lang/Object;)Ljava/lang/Object; .line 2 invoke-static {p1}, Lcom/google/common/base/Preconditions;->checkNotNull(Ljava/lang/Object;)Ljava/lang/Object; .line 3 invoke-static {}, Lcom/google/common/base/Stopwatch;->createStarted()Lcom/google/common/base/Stopwatch; move-result-object v0 const/4 v1, 0x1 const/4 v2, 0x0 .line 4 :try_start_0 invoke-virtual {p2, p1}, Lcom/google/common/cache/CacheLoader;->loadAll(Ljava/lang/Iterable;)Ljava/util/Map; move-result-object p1 :try_end_0 .catch Lcom/google/common/cache/CacheLoader$UnsupportedLoadingOperationException; {:try_start_0 .. :try_end_0} :catch_4 .catch Ljava/lang/InterruptedException; {:try_start_0 .. :try_end_0} :catch_3 .catch Ljava/lang/RuntimeException; {:try_start_0 .. :try_end_0} :catch_2 .catch Ljava/lang/Exception; {:try_start_0 .. :try_end_0} :catch_1 .catch Ljava/lang/Error; {:try_start_0 .. :try_end_0} :catch_0 .catchall {:try_start_0 .. :try_end_0} :catchall_0 if-eqz p1, :cond_4 .line 5 invoke-virtual {v0}, Lcom/google/common/base/Stopwatch;->stop()Lcom/google/common/base/Stopwatch; .line 6 invoke-interface {p1}, Ljava/util/Map;->entrySet()Ljava/util/Set; move-result-object v3 invoke-interface {v3}, Ljava/util/Set;->iterator()Ljava/util/Iterator; move-result-object v3 :goto_0 invoke-interface {v3}, Ljava/util/Iterator;->hasNext()Z move-result v4 if-eqz v4, :cond_2 invoke-interface {v3}, Ljava/util/Iterator;->next()Ljava/lang/Object; move-result-object v4 check-cast v4, Ljava/util/Map$Entry; .line 7 invoke-interface {v4}, Ljava/util/Map$Entry;->getKey()Ljava/lang/Object; move-result-object v5 .line 8 invoke-interface {v4}, Ljava/util/Map$Entry;->getValue()Ljava/lang/Object; move-result-object v4 if-eqz v5, :cond_1 if-nez v4, :cond_0 goto :goto_1 .line 9 :cond_0 invoke-virtual {p0, v5, v4}, Lcom/google/common/cache/LocalCache;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; goto :goto_0 :cond_1 :goto_1 move v2, v1 goto :goto_0 :cond_2 if-nez v2, :cond_3 .line 10 iget-object p2, p0, Lcom/google/common/cache/LocalCache;->globalStatsCounter:Lcom/google/common/cache/AbstractCache$StatsCounter; sget-object v1, Ljava/util/concurrent/TimeUnit;->NANOSECONDS:Ljava/util/concurrent/TimeUnit; invoke-virtual {v0, v1}, Lcom/google/common/base/Stopwatch;->elapsed(Ljava/util/concurrent/TimeUnit;)J move-result-wide v0 invoke-interface {p2, v0, v1}, Lcom/google/common/cache/AbstractCache$StatsCounter;->recordLoadSuccess(J)V return-object p1 .line 11 :cond_3 iget-object p1, p0, Lcom/google/common/cache/LocalCache;->globalStatsCounter:Lcom/google/common/cache/AbstractCache$StatsCounter; sget-object v1, Ljava/util/concurrent/TimeUnit;->NANOSECONDS:Ljava/util/concurrent/TimeUnit; invoke-virtual {v0, v1}, Lcom/google/common/base/Stopwatch;->elapsed(Ljava/util/concurrent/TimeUnit;)J move-result-wide v0 invoke-interface {p1, v0, v1}, Lcom/google/common/cache/AbstractCache$StatsCounter;->recordLoadException(J)V .line 12 new-instance p1, Lcom/google/common/cache/CacheLoader$InvalidCacheLoadException; invoke-static {p2}, Ljava/lang/String;->valueOf(Ljava/lang/Object;)Ljava/lang/String; move-result-object p2 invoke-virtual {p2}, Ljava/lang/String;->length()I move-result v0 add-int/lit8 v0, v0, 0x2a const-string v1, " returned null keys or values from loadAll" invoke-static {v0, p2, v1}, Lcom/android/billingclient/api/e;->a(ILjava/lang/String;Ljava/lang/String;)Ljava/lang/String; move-result-object p2 invoke-direct {p1, p2}, Lcom/google/common/cache/CacheLoader$InvalidCacheLoadException;->(Ljava/lang/String;)V throw p1 .line 13 :cond_4 iget-object p1, p0, Lcom/google/common/cache/LocalCache;->globalStatsCounter:Lcom/google/common/cache/AbstractCache$StatsCounter; sget-object v1, Ljava/util/concurrent/TimeUnit;->NANOSECONDS:Ljava/util/concurrent/TimeUnit; invoke-virtual {v0, v1}, Lcom/google/common/base/Stopwatch;->elapsed(Ljava/util/concurrent/TimeUnit;)J move-result-wide v0 invoke-interface {p1, v0, v1}, Lcom/google/common/cache/AbstractCache$StatsCounter;->recordLoadException(J)V .line 14 new-instance p1, Lcom/google/common/cache/CacheLoader$InvalidCacheLoadException; invoke-static {p2}, Ljava/lang/String;->valueOf(Ljava/lang/Object;)Ljava/lang/String; move-result-object p2 invoke-virtual {p2}, Ljava/lang/String;->length()I move-result v0 add-int/lit8 v0, v0, 0x1f const-string v1, " returned null map from loadAll" invoke-static {v0, p2, v1}, Lcom/android/billingclient/api/e;->a(ILjava/lang/String;Ljava/lang/String;)Ljava/lang/String; move-result-object p2 invoke-direct {p1, p2}, Lcom/google/common/cache/CacheLoader$InvalidCacheLoadException;->(Ljava/lang/String;)V throw p1 :catchall_0 move-exception p1 goto :goto_2 :catch_0 move-exception p1 .line 15 :try_start_1 new-instance p2, Lcom/google/common/util/concurrent/ExecutionError; invoke-direct {p2, p1}, Lcom/google/common/util/concurrent/ExecutionError;->(Ljava/lang/Error;)V throw p2 :catch_1 move-exception p1 .line 16 new-instance p2, Ljava/util/concurrent/ExecutionException; invoke-direct {p2, p1}, Ljava/util/concurrent/ExecutionException;->(Ljava/lang/Throwable;)V throw p2 :catch_2 move-exception p1 .line 17 new-instance p2, Lcom/google/common/util/concurrent/UncheckedExecutionException; invoke-direct {p2, p1}, Lcom/google/common/util/concurrent/UncheckedExecutionException;->(Ljava/lang/Throwable;)V throw p2 :catch_3 move-exception p1 .line 18 invoke-static {}, Ljava/lang/Thread;->currentThread()Ljava/lang/Thread; move-result-object p2 invoke-virtual {p2}, Ljava/lang/Thread;->interrupt()V .line 19 new-instance p2, Ljava/util/concurrent/ExecutionException; invoke-direct {p2, p1}, Ljava/util/concurrent/ExecutionException;->(Ljava/lang/Throwable;)V throw p2 :try_end_1 .catchall {:try_start_1 .. :try_end_1} :catchall_0 :goto_2 move v1, v2 goto :goto_3 :catch_4 move-exception p1 .line 20 :try_start_2 throw p1 :try_end_2 .catchall {:try_start_2 .. :try_end_2} :catchall_1 :catchall_1 move-exception p1 :goto_3 if-nez v1, :cond_5 .line 21 iget-object p2, p0, Lcom/google/common/cache/LocalCache;->globalStatsCounter:Lcom/google/common/cache/AbstractCache$StatsCounter; sget-object v1, Ljava/util/concurrent/TimeUnit;->NANOSECONDS:Ljava/util/concurrent/TimeUnit; invoke-virtual {v0, v1}, Lcom/google/common/base/Stopwatch;->elapsed(Ljava/util/concurrent/TimeUnit;)J move-result-wide v0 invoke-interface {p2, v0, v1}, Lcom/google/common/cache/AbstractCache$StatsCounter;->recordLoadException(J)V .line 22 :cond_5 throw p1 .end method .method public longSize()J .locals 7 .line 1 iget-object v0, p0, Lcom/google/common/cache/LocalCache;->segments:[Lcom/google/common/cache/LocalCache$Segment; const/4 v1, 0x0 const-wide/16 v2, 0x0 move v4, v1 .line 2 :goto_0 array-length v5, v0 if-ge v4, v5, :cond_0 .line 3 aget-object v5, v0, v4 iget v5, v5, Lcom/google/common/cache/LocalCache$Segment;->count:I invoke-static {v1, v5}, Ljava/lang/Math;->max(II)I move-result v5 int-to-long v5, v5 add-long/2addr v2, v5 add-int/lit8 v4, v4, 0x1 goto :goto_0 :cond_0 return-wide v2 .end method .method public newEntry(Ljava/lang/Object;ILcom/google/common/cache/ReferenceEntry;)Lcom/google/common/cache/ReferenceEntry; .locals 1 .param p3 # Lcom/google/common/cache/ReferenceEntry; .annotation runtime Lorg/checkerframework/checker/nullness/compatqual/NullableDecl; .end annotation .end param .annotation build Lcom/google/common/annotations/VisibleForTesting; .end annotation .annotation system Ldalvik/annotation/Signature; value = { "(TK;I", "Lcom/google/common/cache/ReferenceEntry<", "TK;TV;>;)", "Lcom/google/common/cache/ReferenceEntry<", "TK;TV;>;" } .end annotation .line 1 invoke-virtual {p0, p2}, Lcom/google/common/cache/LocalCache;->segmentFor(I)Lcom/google/common/cache/LocalCache$Segment; move-result-object v0 .line 2 invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V .line 3 :try_start_0 invoke-virtual {v0, p1, p2, p3}, Lcom/google/common/cache/LocalCache$Segment;->newEntry(Ljava/lang/Object;ILcom/google/common/cache/ReferenceEntry;)Lcom/google/common/cache/ReferenceEntry; move-result-object p1 :try_end_0 .catchall {:try_start_0 .. :try_end_0} :catchall_0 .line 4 invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V return-object p1 :catchall_0 move-exception p1 invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V .line 5 throw p1 .end method .method public final newSegmentArray(I)[Lcom/google/common/cache/LocalCache$Segment; .locals 0 .annotation system Ldalvik/annotation/Signature; value = { "(I)[", "Lcom/google/common/cache/LocalCache$Segment<", "TK;TV;>;" } .end annotation .line 1 new-array p1, p1, [Lcom/google/common/cache/LocalCache$Segment; return-object p1 .end method .method public newValueReference(Lcom/google/common/cache/ReferenceEntry;Ljava/lang/Object;I)Lcom/google/common/cache/LocalCache$ValueReference; .locals 2 .annotation build Lcom/google/common/annotations/VisibleForTesting; .end annotation .annotation system Ldalvik/annotation/Signature; value = { "(", "Lcom/google/common/cache/ReferenceEntry<", "TK;TV;>;TV;I)", "Lcom/google/common/cache/LocalCache$ValueReference<", "TK;TV;>;" } .end annotation .line 1 invoke-interface {p1}, Lcom/google/common/cache/ReferenceEntry;->getHash()I move-result v0 .line 2 iget-object v1, p0, Lcom/google/common/cache/LocalCache;->valueStrength:Lcom/google/common/cache/LocalCache$Strength; invoke-virtual {p0, v0}, Lcom/google/common/cache/LocalCache;->segmentFor(I)Lcom/google/common/cache/LocalCache$Segment; move-result-object v0 invoke-static {p2}, Lcom/google/common/base/Preconditions;->checkNotNull(Ljava/lang/Object;)Ljava/lang/Object; move-result-object p2 invoke-virtual {v1, v0, p1, p2, p3}, Lcom/google/common/cache/LocalCache$Strength;->referenceValue(Lcom/google/common/cache/LocalCache$Segment;Lcom/google/common/cache/ReferenceEntry;Ljava/lang/Object;I)Lcom/google/common/cache/LocalCache$ValueReference; move-result-object p1 return-object p1 .end method .method public processPendingNotifications()V .locals 4 .line 1 :goto_0 iget-object v0, p0, Lcom/google/common/cache/LocalCache;->removalNotificationQueue:Ljava/util/Queue; invoke-interface {v0}, Ljava/util/Queue;->poll()Ljava/lang/Object; move-result-object v0 check-cast v0, Lcom/google/common/cache/RemovalNotification; if-eqz v0, :cond_0 .line 2 :try_start_0 iget-object v1, p0, Lcom/google/common/cache/LocalCache;->removalListener:Lcom/google/common/cache/RemovalListener; invoke-interface {v1, v0}, Lcom/google/common/cache/RemovalListener;->onRemoval(Lcom/google/common/cache/RemovalNotification;)V :try_end_0 .catchall {:try_start_0 .. :try_end_0} :catchall_0 goto :goto_0 :catchall_0 move-exception v0 .line 3 sget-object v1, Lcom/google/common/cache/LocalCache;->logger:Ljava/util/logging/Logger; sget-object v2, Ljava/util/logging/Level;->WARNING:Ljava/util/logging/Level; const-string v3, "Exception thrown by removal listener" invoke-virtual {v1, v2, v3, v0}, Ljava/util/logging/Logger;->log(Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/Throwable;)V goto :goto_0 :cond_0 return-void .end method .method public put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; .locals 3 .annotation system Ldalvik/annotation/Signature; value = { "(TK;TV;)TV;" } .end annotation .line 1 invoke-static {p1}, Lcom/google/common/base/Preconditions;->checkNotNull(Ljava/lang/Object;)Ljava/lang/Object; .line 2 invoke-static {p2}, Lcom/google/common/base/Preconditions;->checkNotNull(Ljava/lang/Object;)Ljava/lang/Object; .line 3 invoke-virtual {p0, p1}, Lcom/google/common/cache/LocalCache;->hash(Ljava/lang/Object;)I move-result v0 .line 4 invoke-virtual {p0, v0}, Lcom/google/common/cache/LocalCache;->segmentFor(I)Lcom/google/common/cache/LocalCache$Segment; move-result-object v1 const/4 v2, 0x0 invoke-virtual {v1, p1, v0, p2, v2}, Lcom/google/common/cache/LocalCache$Segment;->put(Ljava/lang/Object;ILjava/lang/Object;Z)Ljava/lang/Object; move-result-object p1 return-object p1 .end method .method public putAll(Ljava/util/Map;)V .locals 2 .annotation system Ldalvik/annotation/Signature; value = { "(", "Ljava/util/Map<", "+TK;+TV;>;)V" } .end annotation .line 1 invoke-interface {p1}, Ljava/util/Map;->entrySet()Ljava/util/Set; move-result-object p1 invoke-interface {p1}, Ljava/util/Set;->iterator()Ljava/util/Iterator; move-result-object p1 :goto_0 invoke-interface {p1}, Ljava/util/Iterator;->hasNext()Z move-result v0 if-eqz v0, :cond_0 invoke-interface {p1}, Ljava/util/Iterator;->next()Ljava/lang/Object; move-result-object v0 check-cast v0, Ljava/util/Map$Entry; .line 2 invoke-interface {v0}, Ljava/util/Map$Entry;->getKey()Ljava/lang/Object; move-result-object v1 invoke-interface {v0}, Ljava/util/Map$Entry;->getValue()Ljava/lang/Object; move-result-object v0 invoke-virtual {p0, v1, v0}, Lcom/google/common/cache/LocalCache;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; goto :goto_0 :cond_0 return-void .end method .method public putIfAbsent(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; .locals 3 .annotation system Ldalvik/annotation/Signature; value = { "(TK;TV;)TV;" } .end annotation .line 1 invoke-static {p1}, Lcom/google/common/base/Preconditions;->checkNotNull(Ljava/lang/Object;)Ljava/lang/Object; .line 2 invoke-static {p2}, Lcom/google/common/base/Preconditions;->checkNotNull(Ljava/lang/Object;)Ljava/lang/Object; .line 3 invoke-virtual {p0, p1}, Lcom/google/common/cache/LocalCache;->hash(Ljava/lang/Object;)I move-result v0 .line 4 invoke-virtual {p0, v0}, Lcom/google/common/cache/LocalCache;->segmentFor(I)Lcom/google/common/cache/LocalCache$Segment; move-result-object v1 const/4 v2, 0x1 invoke-virtual {v1, p1, v0, p2, v2}, Lcom/google/common/cache/LocalCache$Segment;->put(Ljava/lang/Object;ILjava/lang/Object;Z)Ljava/lang/Object; move-result-object p1 return-object p1 .end method .method public reclaimKey(Lcom/google/common/cache/ReferenceEntry;)V .locals 2 .annotation system Ldalvik/annotation/Signature; value = { "(", "Lcom/google/common/cache/ReferenceEntry<", "TK;TV;>;)V" } .end annotation .line 1 invoke-interface {p1}, Lcom/google/common/cache/ReferenceEntry;->getHash()I move-result v0 .line 2 invoke-virtual {p0, v0}, Lcom/google/common/cache/LocalCache;->segmentFor(I)Lcom/google/common/cache/LocalCache$Segment; move-result-object v1 invoke-virtual {v1, p1, v0}, Lcom/google/common/cache/LocalCache$Segment;->reclaimKey(Lcom/google/common/cache/ReferenceEntry;I)Z return-void .end method .method public reclaimValue(Lcom/google/common/cache/LocalCache$ValueReference;)V .locals 3 .annotation system Ldalvik/annotation/Signature; value = { "(", "Lcom/google/common/cache/LocalCache$ValueReference<", "TK;TV;>;)V" } .end annotation .line 1 invoke-interface {p1}, Lcom/google/common/cache/LocalCache$ValueReference;->getEntry()Lcom/google/common/cache/ReferenceEntry; move-result-object v0 .line 2 invoke-interface {v0}, Lcom/google/common/cache/ReferenceEntry;->getHash()I move-result v1 .line 3 invoke-virtual {p0, v1}, Lcom/google/common/cache/LocalCache;->segmentFor(I)Lcom/google/common/cache/LocalCache$Segment; move-result-object v2 invoke-interface {v0}, Lcom/google/common/cache/ReferenceEntry;->getKey()Ljava/lang/Object; move-result-object v0 invoke-virtual {v2, v0, v1, p1}, Lcom/google/common/cache/LocalCache$Segment;->reclaimValue(Ljava/lang/Object;ILcom/google/common/cache/LocalCache$ValueReference;)Z return-void .end method .method public recordsAccess()Z .locals 1 .line 1 invoke-virtual {p0}, Lcom/google/common/cache/LocalCache;->expiresAfterAccess()Z move-result v0 return v0 .end method .method public recordsTime()Z .locals 1 .line 1 invoke-virtual {p0}, Lcom/google/common/cache/LocalCache;->recordsWrite()Z move-result v0 if-nez v0, :cond_1 invoke-virtual {p0}, Lcom/google/common/cache/LocalCache;->recordsAccess()Z move-result v0 if-eqz v0, :cond_0 goto :goto_0 :cond_0 const/4 v0, 0x0 goto :goto_1 :cond_1 :goto_0 const/4 v0, 0x1 :goto_1 return v0 .end method .method public recordsWrite()Z .locals 1 .line 1 invoke-virtual {p0}, Lcom/google/common/cache/LocalCache;->expiresAfterWrite()Z move-result v0 if-nez v0, :cond_1 invoke-virtual {p0}, Lcom/google/common/cache/LocalCache;->refreshes()Z move-result v0 if-eqz v0, :cond_0 goto :goto_0 :cond_0 const/4 v0, 0x0 goto :goto_1 :cond_1 :goto_0 const/4 v0, 0x1 :goto_1 return v0 .end method .method public refresh(Ljava/lang/Object;)V .locals 4 .annotation system Ldalvik/annotation/Signature; value = { "(TK;)V" } .end annotation .line 1 invoke-static {p1}, Lcom/google/common/base/Preconditions;->checkNotNull(Ljava/lang/Object;)Ljava/lang/Object; move-result-object v0 invoke-virtual {p0, v0}, Lcom/google/common/cache/LocalCache;->hash(Ljava/lang/Object;)I move-result v0 .line 2 invoke-virtual {p0, v0}, Lcom/google/common/cache/LocalCache;->segmentFor(I)Lcom/google/common/cache/LocalCache$Segment; move-result-object v1 iget-object v2, p0, Lcom/google/common/cache/LocalCache;->defaultLoader:Lcom/google/common/cache/CacheLoader; const/4 v3, 0x0 invoke-virtual {v1, p1, v0, v2, v3}, Lcom/google/common/cache/LocalCache$Segment;->refresh(Ljava/lang/Object;ILcom/google/common/cache/CacheLoader;Z)Ljava/lang/Object; return-void .end method .method public refreshes()Z .locals 4 .line 1 iget-wide v0, p0, Lcom/google/common/cache/LocalCache;->refreshNanos:J const-wide/16 v2, 0x0 cmp-long v0, v0, v2 if-lez v0, :cond_0 const/4 v0, 0x1 goto :goto_0 :cond_0 const/4 v0, 0x0 :goto_0 return v0 .end method .method public remove(Ljava/lang/Object;)Ljava/lang/Object; .locals 2 .param p1 # Ljava/lang/Object; .annotation runtime Lorg/checkerframework/checker/nullness/compatqual/NullableDecl; .end annotation .end param .annotation system Ldalvik/annotation/Signature; value = { "(", "Ljava/lang/Object;", ")TV;" } .end annotation if-nez p1, :cond_0 const/4 p1, 0x0 return-object p1 .line 1 :cond_0 invoke-virtual {p0, p1}, Lcom/google/common/cache/LocalCache;->hash(Ljava/lang/Object;)I move-result v0 .line 2 invoke-virtual {p0, v0}, Lcom/google/common/cache/LocalCache;->segmentFor(I)Lcom/google/common/cache/LocalCache$Segment; move-result-object v1 invoke-virtual {v1, p1, v0}, Lcom/google/common/cache/LocalCache$Segment;->remove(Ljava/lang/Object;I)Ljava/lang/Object; move-result-object p1 return-object p1 .end method .method public remove(Ljava/lang/Object;Ljava/lang/Object;)Z .locals 2 .param p1 # Ljava/lang/Object; .annotation runtime Lorg/checkerframework/checker/nullness/compatqual/NullableDecl; .end annotation .end param .param p2 # Ljava/lang/Object; .annotation runtime Lorg/checkerframework/checker/nullness/compatqual/NullableDecl; .end annotation .end param if-eqz p1, :cond_1 if-nez p2, :cond_0 goto :goto_0 .line 3 :cond_0 invoke-virtual {p0, p1}, Lcom/google/common/cache/LocalCache;->hash(Ljava/lang/Object;)I move-result v0 .line 4 invoke-virtual {p0, v0}, Lcom/google/common/cache/LocalCache;->segmentFor(I)Lcom/google/common/cache/LocalCache$Segment; move-result-object v1 invoke-virtual {v1, p1, v0, p2}, Lcom/google/common/cache/LocalCache$Segment;->remove(Ljava/lang/Object;ILjava/lang/Object;)Z move-result p1 return p1 :cond_1 :goto_0 const/4 p1, 0x0 return p1 .end method .method public replace(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; .locals 2 .annotation system Ldalvik/annotation/Signature; value = { "(TK;TV;)TV;" } .end annotation .line 5 invoke-static {p1}, Lcom/google/common/base/Preconditions;->checkNotNull(Ljava/lang/Object;)Ljava/lang/Object; .line 6 invoke-static {p2}, Lcom/google/common/base/Preconditions;->checkNotNull(Ljava/lang/Object;)Ljava/lang/Object; .line 7 invoke-virtual {p0, p1}, Lcom/google/common/cache/LocalCache;->hash(Ljava/lang/Object;)I move-result v0 .line 8 invoke-virtual {p0, v0}, Lcom/google/common/cache/LocalCache;->segmentFor(I)Lcom/google/common/cache/LocalCache$Segment; move-result-object v1 invoke-virtual {v1, p1, v0, p2}, Lcom/google/common/cache/LocalCache$Segment;->replace(Ljava/lang/Object;ILjava/lang/Object;)Ljava/lang/Object; move-result-object p1 return-object p1 .end method .method public replace(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Z .locals 2 .param p2 # Ljava/lang/Object; .annotation runtime Lorg/checkerframework/checker/nullness/compatqual/NullableDecl; .end annotation .end param .annotation system Ldalvik/annotation/Signature; value = { "(TK;TV;TV;)Z" } .end annotation .line 1 invoke-static {p1}, Lcom/google/common/base/Preconditions;->checkNotNull(Ljava/lang/Object;)Ljava/lang/Object; .line 2 invoke-static {p3}, Lcom/google/common/base/Preconditions;->checkNotNull(Ljava/lang/Object;)Ljava/lang/Object; if-nez p2, :cond_0 const/4 p1, 0x0 return p1 .line 3 :cond_0 invoke-virtual {p0, p1}, Lcom/google/common/cache/LocalCache;->hash(Ljava/lang/Object;)I move-result v0 .line 4 invoke-virtual {p0, v0}, Lcom/google/common/cache/LocalCache;->segmentFor(I)Lcom/google/common/cache/LocalCache$Segment; move-result-object v1 invoke-virtual {v1, p1, v0, p2, p3}, Lcom/google/common/cache/LocalCache$Segment;->replace(Ljava/lang/Object;ILjava/lang/Object;Ljava/lang/Object;)Z move-result p1 return p1 .end method .method public segmentFor(I)Lcom/google/common/cache/LocalCache$Segment; .locals 2 .annotation system Ldalvik/annotation/Signature; value = { "(I)", "Lcom/google/common/cache/LocalCache$Segment<", "TK;TV;>;" } .end annotation .line 1 iget-object v0, p0, Lcom/google/common/cache/LocalCache;->segments:[Lcom/google/common/cache/LocalCache$Segment; iget v1, p0, Lcom/google/common/cache/LocalCache;->segmentShift:I ushr-int/2addr p1, v1 iget v1, p0, Lcom/google/common/cache/LocalCache;->segmentMask:I and-int/2addr p1, v1 aget-object p1, v0, p1 return-object p1 .end method .method public size()I .locals 2 .line 1 invoke-virtual {p0}, Lcom/google/common/cache/LocalCache;->longSize()J move-result-wide v0 invoke-static {v0, v1}, Lcom/google/common/primitives/Ints;->saturatedCast(J)I move-result v0 return v0 .end method .method public usesAccessEntries()Z .locals 1 .line 1 invoke-virtual {p0}, Lcom/google/common/cache/LocalCache;->usesAccessQueue()Z move-result v0 if-nez v0, :cond_1 invoke-virtual {p0}, Lcom/google/common/cache/LocalCache;->recordsAccess()Z move-result v0 if-eqz v0, :cond_0 goto :goto_0 :cond_0 const/4 v0, 0x0 goto :goto_1 :cond_1 :goto_0 const/4 v0, 0x1 :goto_1 return v0 .end method .method public usesAccessQueue()Z .locals 1 .line 1 invoke-virtual {p0}, Lcom/google/common/cache/LocalCache;->expiresAfterAccess()Z move-result v0 if-nez v0, :cond_1 invoke-virtual {p0}, Lcom/google/common/cache/LocalCache;->evictsBySize()Z move-result v0 if-eqz v0, :cond_0 goto :goto_0 :cond_0 const/4 v0, 0x0 goto :goto_1 :cond_1 :goto_0 const/4 v0, 0x1 :goto_1 return v0 .end method .method public usesKeyReferences()Z .locals 2 .line 1 iget-object v0, p0, Lcom/google/common/cache/LocalCache;->keyStrength:Lcom/google/common/cache/LocalCache$Strength; sget-object v1, Lcom/google/common/cache/LocalCache$Strength;->STRONG:Lcom/google/common/cache/LocalCache$Strength; if-eq v0, v1, :cond_0 const/4 v0, 0x1 goto :goto_0 :cond_0 const/4 v0, 0x0 :goto_0 return v0 .end method .method public usesValueReferences()Z .locals 2 .line 1 iget-object v0, p0, Lcom/google/common/cache/LocalCache;->valueStrength:Lcom/google/common/cache/LocalCache$Strength; sget-object v1, Lcom/google/common/cache/LocalCache$Strength;->STRONG:Lcom/google/common/cache/LocalCache$Strength; if-eq v0, v1, :cond_0 const/4 v0, 0x1 goto :goto_0 :cond_0 const/4 v0, 0x0 :goto_0 return v0 .end method .method public usesWriteEntries()Z .locals 1 .line 1 invoke-virtual {p0}, Lcom/google/common/cache/LocalCache;->usesWriteQueue()Z move-result v0 if-nez v0, :cond_1 invoke-virtual {p0}, Lcom/google/common/cache/LocalCache;->recordsWrite()Z move-result v0 if-eqz v0, :cond_0 goto :goto_0 :cond_0 const/4 v0, 0x0 goto :goto_1 :cond_1 :goto_0 const/4 v0, 0x1 :goto_1 return v0 .end method .method public usesWriteQueue()Z .locals 1 .line 1 invoke-virtual {p0}, Lcom/google/common/cache/LocalCache;->expiresAfterWrite()Z move-result v0 return v0 .end method .method public values()Ljava/util/Collection; .locals 1 .annotation system Ldalvik/annotation/Signature; value = { "()", "Ljava/util/Collection<", "TV;>;" } .end annotation .line 1 iget-object v0, p0, Lcom/google/common/cache/LocalCache;->values:Ljava/util/Collection; if-eqz v0, :cond_0 goto :goto_0 .line 2 :cond_0 new-instance v0, Lcom/google/common/cache/LocalCache$Values; invoke-direct {v0, p0}, Lcom/google/common/cache/LocalCache$Values;->(Lcom/google/common/cache/LocalCache;)V iput-object v0, p0, Lcom/google/common/cache/LocalCache;->values:Ljava/util/Collection; :goto_0 return-object v0 .end method