.class Lcom/google/common/cache/LocalCache; .super Ljava/util/AbstractMap; .source "LocalCache.java" # interfaces .implements Ljava/util/concurrent/ConcurrentMap; # annotations .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 static final CONTAINS_VALUE_RETRIES:I = 0x3 .field static final DISCARDING_QUEUE:Ljava/util/Queue; .annotation system Ldalvik/annotation/Signature; value = { "Ljava/util/Queue<", "*>;" } .end annotation .end field .field static final DRAIN_MAX:I = 0x10 .field static final DRAIN_THRESHOLD:I = 0x3f .field static final MAXIMUM_CAPACITY:I = 0x40000000 .field static final MAX_SEGMENTS:I = 0x10000 .field 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 static final logger:Ljava/util/logging/Logger; # instance fields .field final concurrencyLevel:I .field final defaultLoader:Lcom/google/common/cache/CacheLoader; .annotation system Ldalvik/annotation/Signature; value = { "Lcom/google/common/cache/CacheLoader<", "-TK;TV;>;" } .end annotation .annotation runtime Ljavax/annotation/CheckForNull; .end annotation .end field .field final entryFactory:Lcom/google/common/cache/LocalCache$EntryFactory; .field entrySet:Ljava/util/Set; .annotation system Ldalvik/annotation/Signature; value = { "Ljava/util/Set<", "Ljava/util/Map$Entry<", "TK;TV;>;>;" } .end annotation .annotation runtime Ljavax/annotation/CheckForNull; .end annotation .end field .field final expireAfterAccessNanos:J .field final expireAfterWriteNanos:J .field final globalStatsCounter:Lcom/google/common/cache/AbstractCache$StatsCounter; .field 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 keySet:Ljava/util/Set; .annotation system Ldalvik/annotation/Signature; value = { "Ljava/util/Set<", "TK;>;" } .end annotation .annotation runtime Ljavax/annotation/CheckForNull; .end annotation .end field .field final keyStrength:Lcom/google/common/cache/LocalCache$Strength; .field final maxWeight:J .field final refreshNanos:J .field 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 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 final segmentMask:I .field final segmentShift:I .field 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 final ticker:Lcom/google/common/base/Ticker; .field 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 final valueStrength:Lcom/google/common/cache/LocalCache$Strength; .field values:Ljava/util/Collection; .annotation system Ldalvik/annotation/Signature; value = { "Ljava/util/Collection<", "TV;>;" } .end annotation .annotation runtime Ljavax/annotation/CheckForNull; .end annotation .end field .field 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 static constructor ()V .locals 1 const-class v0, Lcom/google/common/cache/LocalCache; .line 165 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 681 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 898 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 constructor (Lcom/google/common/cache/CacheBuilder;Lcom/google/common/cache/CacheLoader;)V .locals 11 .param p2 # Lcom/google/common/cache/CacheLoader; .annotation runtime Ljavax/annotation/CheckForNull; .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 241 invoke-direct {p0}, Ljava/util/AbstractMap;->()V .line 242 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 244 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 245 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 247 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 248 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 250 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 251 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 252 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 253 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 254 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 256 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 258 sget-object v4, Lcom/google/common/cache/CacheBuilder$NullListener;->INSTANCE:Lcom/google/common/cache/CacheBuilder$NullListener; if-ne v3, v4, :cond_0 .line 259 invoke-static {}, Lcom/google/common/cache/LocalCache;->discardingQueue()Ljava/util/Queue; move-result-object v3 goto :goto_0 .line 260 :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 262 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 263 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 264 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; iput-object p2, p0, Lcom/google/common/cache/LocalCache;->defaultLoader:Lcom/google/common/cache/CacheLoader; .line 267 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 268 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 269 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 :goto_1 iget v4, p0, Lcom/google/common/cache/LocalCache;->concurrencyLevel:I if-ge v2, v4, :cond_3 .line 279 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 iput v3, p0, Lcom/google/common/cache/LocalCache;->segmentShift:I add-int/lit8 v3, v2, -0x1 iput v3, p0, Lcom/google/common/cache/LocalCache;->segmentMask:I .line 286 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 288 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 298 :cond_5 invoke-virtual {p0}, Lcom/google/common/cache/LocalCache;->evictsBySize()Z move-result p2 if-eqz p2, :cond_7 iget-wide v3, p0, Lcom/google/common/cache/LocalCache;->maxWeight:J int-to-long v5, v2 .line 300 div-long v7, v3, v5 const-wide/16 v9, 0x1 add-long/2addr v7, v9 .line 301 rem-long/2addr v3, v5 :goto_3 iget-object p2, p0, Lcom/google/common/cache/LocalCache;->segments:[Lcom/google/common/cache/LocalCache$Segment; .line 302 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 307 :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 :cond_7 :goto_4 iget-object p2, p0, Lcom/google/common/cache/LocalCache;->segments:[Lcom/google/common/cache/LocalCache$Segment; .line 310 array-length v2, p2 if-ge v0, v2, :cond_8 .line 312 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; const-wide/16 v3, -0x1 invoke-virtual {p0, v1, v3, v4, 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_4 :cond_8 return-void .end method .method static synthetic access$200(Ljava/util/Collection;)Ljava/util/ArrayList; .locals 0 .line 104 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 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 1781 invoke-interface {p0, p1}, Lcom/google/common/cache/ReferenceEntry;->setNextInAccessQueue(Lcom/google/common/cache/ReferenceEntry;)V .line 1782 invoke-interface {p1, p0}, Lcom/google/common/cache/ReferenceEntry;->setPreviousInAccessQueue(Lcom/google/common/cache/ReferenceEntry;)V return-void .end method .method 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 1794 invoke-interface {p0, p1}, Lcom/google/common/cache/ReferenceEntry;->setNextInWriteQueue(Lcom/google/common/cache/ReferenceEntry;)V .line 1795 invoke-interface {p1, p0}, Lcom/google/common/cache/ReferenceEntry;->setPreviousInWriteQueue(Lcom/google/common/cache/ReferenceEntry;)V return-void .end method .method static discardingQueue()Ljava/util/Queue; .locals 1 .annotation system Ldalvik/annotation/Signature; value = { "()", "Ljava/util/Queue<", "TE;>;" } .end annotation sget-object v0, Lcom/google/common/cache/LocalCache;->DISCARDING_QUEUE:Ljava/util/Queue; return-object v0 .end method .method 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 895 sget-object v0, Lcom/google/common/cache/LocalCache$NullEntry;->INSTANCE:Lcom/google/common/cache/LocalCache$NullEntry; return-object v0 .end method .method 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 1787 invoke-static {}, Lcom/google/common/cache/LocalCache;->nullEntry()Lcom/google/common/cache/ReferenceEntry; move-result-object v0 .line 1788 invoke-interface {p0, v0}, Lcom/google/common/cache/ReferenceEntry;->setNextInAccessQueue(Lcom/google/common/cache/ReferenceEntry;)V .line 1789 invoke-interface {p0, v0}, Lcom/google/common/cache/ReferenceEntry;->setPreviousInAccessQueue(Lcom/google/common/cache/ReferenceEntry;)V return-void .end method .method 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 1800 invoke-static {}, Lcom/google/common/cache/LocalCache;->nullEntry()Lcom/google/common/cache/ReferenceEntry; move-result-object v0 .line 1801 invoke-interface {p0, v0}, Lcom/google/common/cache/ReferenceEntry;->setNextInWriteQueue(Lcom/google/common/cache/ReferenceEntry;)V .line 1802 invoke-interface {p0, v0}, Lcom/google/common/cache/ReferenceEntry;->setPreviousInWriteQueue(Lcom/google/common/cache/ReferenceEntry;)V return-void .end method .method 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 p0, v0 ushr-int/lit8 v0, p0, 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 4401 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 4402 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 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 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 3 iget-object p0, p0, Lcom/google/common/cache/LocalCache;->segments:[Lcom/google/common/cache/LocalCache$Segment; .line 3792 array-length v0, p0 const/4 v1, 0x0 :goto_0 if-ge v1, v0, :cond_0 aget-object v2, p0, v1 .line 3793 invoke-virtual {v2}, Lcom/google/common/cache/LocalCache$Segment;->cleanUp()V add-int/lit8 v1, v1, 0x1 goto :goto_0 :cond_0 return-void .end method .method public clear()V .locals 3 iget-object p0, p0, Lcom/google/common/cache/LocalCache;->segments:[Lcom/google/common/cache/LocalCache$Segment; .line 4142 array-length v0, p0 const/4 v1, 0x0 :goto_0 if-ge v1, v0, :cond_0 aget-object v2, p0, v1 .line 4143 invoke-virtual {v2}, Lcom/google/common/cache/LocalCache$Segment;->clear()V add-int/lit8 v1, v1, 0x1 goto :goto_0 :cond_0 return-void .end method .method public containsKey(Ljava/lang/Object;)Z .locals 1 .param p1 # Ljava/lang/Object; .annotation runtime Ljavax/annotation/CheckForNull; .end annotation .end param if-nez p1, :cond_0 const/4 p0, 0x0 return p0 .line 4036 :cond_0 invoke-virtual {p0, p1}, Lcom/google/common/cache/LocalCache;->hash(Ljava/lang/Object;)I move-result v0 .line 4037 invoke-virtual {p0, v0}, Lcom/google/common/cache/LocalCache;->segmentFor(I)Lcom/google/common/cache/LocalCache$Segment; move-result-object p0 invoke-virtual {p0, p1, v0}, Lcom/google/common/cache/LocalCache$Segment;->containsKey(Ljava/lang/Object;I)Z move-result p0 return p0 .end method .method public containsValue(Ljava/lang/Object;)Z .locals 19 .param p1 # Ljava/lang/Object; .annotation runtime Ljavax/annotation/CheckForNull; .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 :cond_0 iget-object v3, v0, Lcom/google/common/cache/LocalCache;->ticker:Lcom/google/common/base/Ticker; .line 4052 invoke-virtual {v3}, Lcom/google/common/base/Ticker;->read()J move-result-wide v3 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 .line 4057 array-length v9, v5 const-wide/16 v10, 0x0 move v12, v2 :goto_1 if-ge v12, v9, :cond_4 aget-object v13, v5, v12 .line 4059 iget v14, v13, Lcom/google/common/cache/LocalCache$Segment;->count:I .line 4061 iget-object v14, v13, Lcom/google/common/cache/LocalCache$Segment;->table:Ljava/util/concurrent/atomic/AtomicReferenceArray; move v15, v2 .line 4062 :goto_2 invoke-virtual {v14}, Ljava/util/concurrent/atomic/AtomicReferenceArray;->length()I move-result v2 if-ge v15, v2, :cond_3 .line 4063 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 4064 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 iget-object v3, v0, Lcom/google/common/cache/LocalCache;->valueEquivalence:Lcom/google/common/base/Equivalence; .line 4065 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 v0, 0x1 return v0 .line 4063 :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 4070 iget v2, v13, Lcom/google/common/cache/LocalCache$Segment;->modCount:I int-to-long v2, v2 add-long/2addr v10, 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, v10, v6 if-nez v2, :cond_5 const/4 v0, 0x0 goto :goto_4 :cond_5 add-int/lit8 v8, v8, 0x1 move-wide v6, v10 move-object/from16 v5, v16 move-wide/from16 v3, v17 const/4 v2, 0x0 goto :goto_0 :cond_6 move v0, v2 :goto_4 return v0 .end method .method copyEntry(Lcom/google/common/cache/ReferenceEntry;Lcom/google/common/cache/ReferenceEntry;)Lcom/google/common/cache/ReferenceEntry; .locals 1 .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 1686 invoke-interface {p1}, Lcom/google/common/cache/ReferenceEntry;->getHash()I move-result v0 .line 1687 invoke-virtual {p0, v0}, Lcom/google/common/cache/LocalCache;->segmentFor(I)Lcom/google/common/cache/LocalCache$Segment; move-result-object p0 invoke-virtual {p0, 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 p0 return-object p0 .end method .method 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 1738 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 customWeigher()Z .locals 1 iget-object p0, p0, Lcom/google/common/cache/LocalCache;->weigher:Lcom/google/common/cache/Weigher; .line 322 sget-object v0, Lcom/google/common/cache/CacheBuilder$OneWeigher;->INSTANCE:Lcom/google/common/cache/CacheBuilder$OneWeigher; if-eq p0, v0, :cond_0 const/4 p0, 0x1 goto :goto_0 :cond_0 const/4 p0, 0x0 :goto_0 return p0 .end method .method public entrySet()Ljava/util/Set; .locals 1 .annotation system Ldalvik/annotation/Signature; value = { "()", "Ljava/util/Set<", "Ljava/util/Map$Entry<", "TK;TV;>;>;" } .end annotation iget-object v0, p0, Lcom/google/common/cache/LocalCache;->entrySet:Ljava/util/Set; if-eqz v0, :cond_0 goto :goto_0 .line 4179 :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 evictsBySize()Z .locals 4 iget-wide v0, p0, Lcom/google/common/cache/LocalCache;->maxWeight:J const-wide/16 v2, 0x0 cmp-long p0, v0, v2 if-ltz p0, :cond_0 const/4 p0, 0x1 goto :goto_0 :cond_0 const/4 p0, 0x0 :goto_0 return p0 .end method .method expires()Z .locals 1 .line 326 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 p0 if-eqz p0, :cond_0 goto :goto_0 :cond_0 const/4 p0, 0x0 goto :goto_1 :cond_1 :goto_0 const/4 p0, 0x1 :goto_1 return p0 .end method .method expiresAfterAccess()Z .locals 4 iget-wide v0, p0, Lcom/google/common/cache/LocalCache;->expireAfterAccessNanos:J const-wide/16 v2, 0x0 cmp-long p0, v0, v2 if-lez p0, :cond_0 const/4 p0, 0x1 goto :goto_0 :cond_0 const/4 p0, 0x0 :goto_0 return p0 .end method .method expiresAfterWrite()Z .locals 4 iget-wide v0, p0, Lcom/google/common/cache/LocalCache;->expireAfterWriteNanos:J const-wide/16 v2, 0x0 cmp-long p0, v0, v2 if-lez p0, :cond_0 const/4 p0, 0x1 goto :goto_0 :cond_0 const/4 p0, 0x0 :goto_0 return p0 .end method .method public get(Ljava/lang/Object;)Ljava/lang/Object; .locals 1 .param p1 # Ljava/lang/Object; .annotation runtime Ljavax/annotation/CheckForNull; .end annotation .end param .annotation system Ldalvik/annotation/Signature; value = { "(", "Ljava/lang/Object;", ")TV;" } .end annotation .annotation runtime Ljavax/annotation/CheckForNull; .end annotation if-nez p1, :cond_0 const/4 p0, 0x0 return-object p0 .line 3849 :cond_0 invoke-virtual {p0, p1}, Lcom/google/common/cache/LocalCache;->hash(Ljava/lang/Object;)I move-result v0 .line 3850 invoke-virtual {p0, v0}, Lcom/google/common/cache/LocalCache;->segmentFor(I)Lcom/google/common/cache/LocalCache$Segment; move-result-object p0 invoke-virtual {p0, p1, v0}, Lcom/google/common/cache/LocalCache$Segment;->get(Ljava/lang/Object;I)Ljava/lang/Object; move-result-object p0 return-object p0 .end method .method get(Ljava/lang/Object;Lcom/google/common/cache/CacheLoader;)Ljava/lang/Object; .locals 1 .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 3854 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 3855 invoke-virtual {p0, v0}, Lcom/google/common/cache/LocalCache;->segmentFor(I)Lcom/google/common/cache/LocalCache$Segment; move-result-object p0 invoke-virtual {p0, p1, v0, p2}, Lcom/google/common/cache/LocalCache$Segment;->get(Ljava/lang/Object;ILcom/google/common/cache/CacheLoader;)Ljava/lang/Object; move-result-object p0 return-object p0 .end method .method 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 3907 invoke-static {}, Lcom/google/common/collect/Maps;->newLinkedHashMap()Ljava/util/LinkedHashMap; move-result-object v0 .line 3908 invoke-static {}, Lcom/google/common/collect/Sets;->newLinkedHashSet()Ljava/util/LinkedHashSet; move-result-object v1 .line 3909 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 3910 invoke-virtual {p0, v4}, Lcom/google/common/cache/LocalCache;->get(Ljava/lang/Object;)Ljava/lang/Object; move-result-object v5 .line 3911 invoke-interface {v0, v4}, Ljava/util/Map;->containsKey(Ljava/lang/Object;)Z move-result v6 if-nez v6, :cond_0 .line 3912 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 3915 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 3923 :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 3925 :try_start_1 invoke-static {v1}, Ljava/util/Collections;->unmodifiableSet(Ljava/util/Set;)Ljava/util/Set; move-result-object p1 iget-object v4, p0, Lcom/google/common/cache/LocalCache;->defaultLoader:Lcom/google/common/cache/CacheLoader; invoke-virtual {p0, p1, v4}, Lcom/google/common/cache/LocalCache;->loadAll(Ljava/util/Set;Lcom/google/common/cache/CacheLoader;)Ljava/util/Map; move-result-object p1 .line 3926 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 3927 invoke-interface {p1, v5}, Ljava/util/Map;->get(Ljava/lang/Object;)Ljava/lang/Object; move-result-object v6 if-eqz v6, :cond_3 .line 3931 invoke-interface {v0, v5, v6}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; goto :goto_1 .line 3929 :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-static {v4}, Ljava/lang/String;->valueOf(Ljava/lang/Object;)Ljava/lang/String; move-result-object v5 invoke-virtual {v5}, 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; move-result-object v5 invoke-virtual {v5, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object v4 invoke-virtual {v4}, 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 3935 :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 iget-object v4, p0, Lcom/google/common/cache/LocalCache;->defaultLoader:Lcom/google/common/cache/CacheLoader; .line 3937 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 3941 :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 iget-object v0, p0, Lcom/google/common/cache/LocalCache;->globalStatsCounter:Lcom/google/common/cache/AbstractCache$StatsCounter; .line 3943 invoke-interface {v0, v2}, Lcom/google/common/cache/AbstractCache$StatsCounter;->recordHits(I)V iget-object p0, p0, Lcom/google/common/cache/LocalCache;->globalStatsCounter:Lcom/google/common/cache/AbstractCache$StatsCounter; .line 3944 invoke-interface {p0, v3}, Lcom/google/common/cache/AbstractCache$StatsCounter;->recordMisses(I)V return-object p1 :catchall_0 move-exception p1 iget-object v0, p0, Lcom/google/common/cache/LocalCache;->globalStatsCounter:Lcom/google/common/cache/AbstractCache$StatsCounter; .line 3943 invoke-interface {v0, v2}, Lcom/google/common/cache/AbstractCache$StatsCounter;->recordHits(I)V iget-object p0, p0, Lcom/google/common/cache/LocalCache;->globalStatsCounter:Lcom/google/common/cache/AbstractCache$StatsCounter; .line 3944 invoke-interface {p0, v3}, Lcom/google/common/cache/AbstractCache$StatsCounter;->recordMisses(I)V .line 3945 throw p1 .end method .method 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 3885 invoke-static {}, Lcom/google/common/collect/ImmutableMap;->builder()Lcom/google/common/collect/ImmutableMap$Builder; move-result-object v0 .line 3886 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 3887 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 3894 :cond_0 invoke-virtual {v0, v3, v4}, Lcom/google/common/collect/ImmutableMap$Builder;->put(Ljava/lang/Object;Ljava/lang/Object;)Lcom/google/common/collect/ImmutableMap$Builder; add-int/lit8 v1, v1, 0x1 goto :goto_0 :cond_1 iget-object p1, p0, Lcom/google/common/cache/LocalCache;->globalStatsCounter:Lcom/google/common/cache/AbstractCache$StatsCounter; .line 3898 invoke-interface {p1, v1}, Lcom/google/common/cache/AbstractCache$StatsCounter;->recordHits(I)V iget-object p0, p0, Lcom/google/common/cache/LocalCache;->globalStatsCounter:Lcom/google/common/cache/AbstractCache$StatsCounter; .line 3899 invoke-interface {p0, v2}, Lcom/google/common/cache/AbstractCache$StatsCounter;->recordMisses(I)V .line 3900 invoke-virtual {v0}, Lcom/google/common/collect/ImmutableMap$Builder;->buildKeepingLast()Lcom/google/common/collect/ImmutableMap; move-result-object p0 return-object p0 .end method .method getEntry(Ljava/lang/Object;)Lcom/google/common/cache/ReferenceEntry; .locals 1 .param p1 # Ljava/lang/Object; .annotation runtime Ljavax/annotation/CheckForNull; .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 p0, 0x0 return-object p0 .line 4021 :cond_0 invoke-virtual {p0, p1}, Lcom/google/common/cache/LocalCache;->hash(Ljava/lang/Object;)I move-result v0 .line 4022 invoke-virtual {p0, v0}, Lcom/google/common/cache/LocalCache;->segmentFor(I)Lcom/google/common/cache/LocalCache$Segment; move-result-object p0 invoke-virtual {p0, p1, v0}, Lcom/google/common/cache/LocalCache$Segment;->getEntry(Ljava/lang/Object;I)Lcom/google/common/cache/ReferenceEntry; move-result-object p0 return-object p0 .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 Ljavax/annotation/CheckForNull; .end annotation .line 3860 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 3861 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 iget-object p0, p0, Lcom/google/common/cache/LocalCache;->globalStatsCounter:Lcom/google/common/cache/AbstractCache$StatsCounter; .line 3863 invoke-interface {p0, v0}, Lcom/google/common/cache/AbstractCache$StatsCounter;->recordMisses(I)V goto :goto_0 :cond_0 iget-object p0, p0, Lcom/google/common/cache/LocalCache;->globalStatsCounter:Lcom/google/common/cache/AbstractCache$StatsCounter; .line 3865 invoke-interface {p0, v0}, Lcom/google/common/cache/AbstractCache$StatsCounter;->recordHits(I)V :goto_0 return-object p1 .end method .method 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 Ljavax/annotation/CheckForNull; .end annotation .line 1749 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 1752 :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 1757 :cond_1 invoke-virtual {p0, p1, p2, p3}, Lcom/google/common/cache/LocalCache;->isExpired(Lcom/google/common/cache/ReferenceEntry;J)Z move-result p0 if-eqz p0, :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 Ljavax/annotation/CheckForNull; .end annotation .end param .param p2 # Ljava/lang/Object; .annotation runtime Ljavax/annotation/CheckForNull; .end annotation .end param .annotation system Ldalvik/annotation/Signature; value = { "(", "Ljava/lang/Object;", "TV;)TV;" } .end annotation .annotation runtime Ljavax/annotation/CheckForNull; .end annotation .line 3873 invoke-virtual {p0, p1}, Lcom/google/common/cache/LocalCache;->get(Ljava/lang/Object;)Ljava/lang/Object; move-result-object p0 if-eqz p0, :cond_0 move-object p2, p0 :cond_0 return-object p2 .end method .method 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 iget-object v0, p0, Lcom/google/common/cache/LocalCache;->defaultLoader:Lcom/google/common/cache/CacheLoader; .line 3878 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 p0 return-object p0 .end method .method hash(Ljava/lang/Object;)I .locals 0 .param p1 # Ljava/lang/Object; .annotation runtime Ljavax/annotation/CheckForNull; .end annotation .end param iget-object p0, p0, Lcom/google/common/cache/LocalCache;->keyEquivalence:Lcom/google/common/base/Equivalence; .line 1701 invoke-virtual {p0, p1}, Lcom/google/common/base/Equivalence;->hash(Ljava/lang/Object;)I move-result p0 .line 1702 invoke-static {p0}, Lcom/google/common/cache/LocalCache;->rehash(I)I move-result p0 return p0 .end method .method invalidateAll(Ljava/lang/Iterable;)V .locals 1 .annotation system Ldalvik/annotation/Signature; value = { "(", "Ljava/lang/Iterable<", "*>;)V" } .end annotation .line 4149 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 4150 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 9 iget-object p0, p0, Lcom/google/common/cache/LocalCache;->segments:[Lcom/google/common/cache/LocalCache$Segment; const-wide/16 v0, 0x0 const/4 v2, 0x0 move-wide v4, v0 move v3, v2 .line 3810 :goto_0 array-length v6, p0 if-ge v3, v6, :cond_1 .line 3811 aget-object v6, p0, v3 iget v6, v6, Lcom/google/common/cache/LocalCache$Segment;->count:I if-eqz v6, :cond_0 return v2 .line 3814 :cond_0 aget-object v6, p0, v3 iget v6, v6, Lcom/google/common/cache/LocalCache$Segment;->modCount:I int-to-long v6, v6 add-long/2addr v4, v6 add-int/lit8 v3, v3, 0x1 goto :goto_0 :cond_1 cmp-long v3, v4, v0 const/4 v6, 0x1 if-eqz v3, :cond_5 move v3, v2 .line 3818 :goto_1 array-length v7, p0 if-ge v3, v7, :cond_3 .line 3819 aget-object v7, p0, v3 iget v7, v7, Lcom/google/common/cache/LocalCache$Segment;->count:I if-eqz v7, :cond_2 return v2 .line 3822 :cond_2 aget-object v7, p0, v3 iget v7, v7, Lcom/google/common/cache/LocalCache$Segment;->modCount:I int-to-long v7, v7 sub-long/2addr v4, v7 add-int/lit8 v3, v3, 0x1 goto :goto_1 :cond_3 cmp-long p0, v4, v0 if-nez p0, :cond_4 move v2, v6 :cond_4 return v2 :cond_5 return v6 .end method .method 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 1767 invoke-static {p1}, Lcom/google/common/base/Preconditions;->checkNotNull(Ljava/lang/Object;)Ljava/lang/Object; .line 1768 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 1771 :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 p0, p0, Lcom/google/common/cache/LocalCache;->expireAfterWriteNanos:J cmp-long p0, p2, p0 if-ltz p0, :cond_1 return v1 :cond_1 const/4 p0, 0x0 return p0 .end method .method isLive(Lcom/google/common/cache/ReferenceEntry;J)Z .locals 1 .annotation system Ldalvik/annotation/Signature; value = { "(", "Lcom/google/common/cache/ReferenceEntry<", "TK;TV;>;J)Z" } .end annotation .line 1722 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 p0 invoke-virtual {p0, p1, p2, p3}, Lcom/google/common/cache/LocalCache$Segment;->getLiveValue(Lcom/google/common/cache/ReferenceEntry;J)Ljava/lang/Object; move-result-object p0 if-eqz p0, :cond_0 const/4 p0, 0x1 goto :goto_0 :cond_0 const/4 p0, 0x0 :goto_0 return p0 .end method .method public keySet()Ljava/util/Set; .locals 1 .annotation system Ldalvik/annotation/Signature; value = { "()", "Ljava/util/Set<", "TK;>;" } .end annotation iget-object v0, p0, Lcom/google/common/cache/LocalCache;->keySet:Ljava/util/Set; if-eqz v0, :cond_0 goto :goto_0 .line 4160 :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 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 Ljavax/annotation/CheckForNull; .end annotation .line 3955 invoke-static {p2}, Lcom/google/common/base/Preconditions;->checkNotNull(Ljava/lang/Object;)Ljava/lang/Object; .line 3956 invoke-static {p1}, Lcom/google/common/base/Preconditions;->checkNotNull(Ljava/lang/Object;)Ljava/lang/Object; .line 3957 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 3962 :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 3988 invoke-virtual {v0}, Lcom/google/common/base/Stopwatch;->stop()Lcom/google/common/base/Stopwatch; .line 3991 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 3992 invoke-interface {v4}, Ljava/util/Map$Entry;->getKey()Ljava/lang/Object; move-result-object v5 .line 3993 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 3998 :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 iget-object p0, p0, Lcom/google/common/cache/LocalCache;->globalStatsCounter:Lcom/google/common/cache/AbstractCache$StatsCounter; .line 4008 sget-object p2, Ljava/util/concurrent/TimeUnit;->NANOSECONDS:Ljava/util/concurrent/TimeUnit; invoke-virtual {v0, p2}, Lcom/google/common/base/Stopwatch;->elapsed(Ljava/util/concurrent/TimeUnit;)J move-result-wide v0 invoke-interface {p0, v0, v1}, Lcom/google/common/cache/AbstractCache$StatsCounter;->recordLoadSuccess(J)V return-object p1 :cond_3 iget-object p0, p0, Lcom/google/common/cache/LocalCache;->globalStatsCounter:Lcom/google/common/cache/AbstractCache$StatsCounter; .line 4003 sget-object p1, Ljava/util/concurrent/TimeUnit;->NANOSECONDS:Ljava/util/concurrent/TimeUnit; invoke-virtual {v0, p1}, Lcom/google/common/base/Stopwatch;->elapsed(Ljava/util/concurrent/TimeUnit;)J move-result-wide v0 invoke-interface {p0, v0, v1}, Lcom/google/common/cache/AbstractCache$StatsCounter;->recordLoadException(J)V .line 4004 new-instance p0, Lcom/google/common/cache/CacheLoader$InvalidCacheLoadException; invoke-static {p2}, Ljava/lang/String;->valueOf(Ljava/lang/Object;)Ljava/lang/String; move-result-object p1 invoke-static {p1}, Ljava/lang/String;->valueOf(Ljava/lang/Object;)Ljava/lang/String; move-result-object p2 invoke-virtual {p2}, Ljava/lang/String;->length()I move-result p2 add-int/lit8 p2, p2, 0x2a new-instance v0, Ljava/lang/StringBuilder; invoke-direct {v0, p2}, Ljava/lang/StringBuilder;->(I)V invoke-virtual {v0, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object p1 const-string p2, " returned null keys or values from loadAll" invoke-virtual {p1, p2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object p1 invoke-virtual {p1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; move-result-object p1 invoke-direct {p0, p1}, Lcom/google/common/cache/CacheLoader$InvalidCacheLoadException;->(Ljava/lang/String;)V throw p0 :cond_4 iget-object p0, p0, Lcom/google/common/cache/LocalCache;->globalStatsCounter:Lcom/google/common/cache/AbstractCache$StatsCounter; .line 3984 sget-object p1, Ljava/util/concurrent/TimeUnit;->NANOSECONDS:Ljava/util/concurrent/TimeUnit; invoke-virtual {v0, p1}, Lcom/google/common/base/Stopwatch;->elapsed(Ljava/util/concurrent/TimeUnit;)J move-result-wide v0 invoke-interface {p0, v0, v1}, Lcom/google/common/cache/AbstractCache$StatsCounter;->recordLoadException(J)V .line 3985 new-instance p0, Lcom/google/common/cache/CacheLoader$InvalidCacheLoadException; invoke-static {p2}, Ljava/lang/String;->valueOf(Ljava/lang/Object;)Ljava/lang/String; move-result-object p1 invoke-static {p1}, Ljava/lang/String;->valueOf(Ljava/lang/Object;)Ljava/lang/String; move-result-object p2 invoke-virtual {p2}, Ljava/lang/String;->length()I move-result p2 add-int/lit8 p2, p2, 0x1f new-instance v0, Ljava/lang/StringBuilder; invoke-direct {v0, p2}, Ljava/lang/StringBuilder;->(I)V invoke-virtual {v0, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object p1 const-string p2, " returned null map from loadAll" invoke-virtual {p1, p2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object p1 invoke-virtual {p1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; move-result-object p1 invoke-direct {p0, p1}, Lcom/google/common/cache/CacheLoader$InvalidCacheLoadException;->(Ljava/lang/String;)V throw p0 :catchall_0 move-exception p1 move v1, v2 goto :goto_2 :catch_0 move-exception p1 .line 3976 :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 3974 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 3972 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 3969 invoke-static {}, Ljava/lang/Thread;->currentThread()Ljava/lang/Thread; move-result-object p2 invoke-virtual {p2}, Ljava/lang/Thread;->interrupt()V .line 3970 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 :catch_4 move-exception p1 .line 3967 :try_start_2 throw p1 :try_end_2 .catchall {:try_start_2 .. :try_end_2} :catchall_1 :catchall_1 move-exception p1 :goto_2 if-nez v1, :cond_5 iget-object p0, p0, Lcom/google/common/cache/LocalCache;->globalStatsCounter:Lcom/google/common/cache/AbstractCache$StatsCounter; .line 3979 sget-object p2, Ljava/util/concurrent/TimeUnit;->NANOSECONDS:Ljava/util/concurrent/TimeUnit; invoke-virtual {v0, p2}, Lcom/google/common/base/Stopwatch;->elapsed(Ljava/util/concurrent/TimeUnit;)J move-result-wide v0 invoke-interface {p0, v0, v1}, Lcom/google/common/cache/AbstractCache$StatsCounter;->recordLoadException(J)V .line 3981 :cond_5 throw p1 .end method .method longSize()J .locals 6 iget-object p0, p0, Lcom/google/common/cache/LocalCache;->segments:[Lcom/google/common/cache/LocalCache$Segment; const-wide/16 v0, 0x0 const/4 v2, 0x0 move v3, v2 .line 3832 :goto_0 array-length v4, p0 if-ge v3, v4, :cond_0 .line 3833 aget-object v4, p0, v3 iget v4, v4, Lcom/google/common/cache/LocalCache$Segment;->count:I invoke-static {v2, v4}, Ljava/lang/Math;->max(II)I move-result v4 int-to-long v4, v4 add-long/2addr v0, v4 add-int/lit8 v3, v3, 0x1 goto :goto_0 :cond_0 return-wide v0 .end method .method newEntry(Ljava/lang/Object;ILcom/google/common/cache/ReferenceEntry;)Lcom/google/common/cache/ReferenceEntry; .locals 0 .param p3 # Lcom/google/common/cache/ReferenceEntry; .annotation runtime Ljavax/annotation/CheckForNull; .end annotation .end param .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 1670 invoke-virtual {p0, p2}, Lcom/google/common/cache/LocalCache;->segmentFor(I)Lcom/google/common/cache/LocalCache$Segment; move-result-object p0 .line 1671 invoke-virtual {p0}, Lcom/google/common/cache/LocalCache$Segment;->lock()V .line 1673 :try_start_0 invoke-virtual {p0, 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 1675 invoke-virtual {p0}, Lcom/google/common/cache/LocalCache$Segment;->unlock()V return-object p1 :catchall_0 move-exception p1 invoke-virtual {p0}, Lcom/google/common/cache/LocalCache$Segment;->unlock()V .line 1676 throw p1 .end method .method 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 1823 new-array p0, p1, [Lcom/google/common/cache/LocalCache$Segment; return-object p0 .end method .method newValueReference(Lcom/google/common/cache/ReferenceEntry;Ljava/lang/Object;I)Lcom/google/common/cache/LocalCache$ValueReference; .locals 2 .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 1696 invoke-interface {p1}, Lcom/google/common/cache/ReferenceEntry;->getHash()I move-result v0 iget-object v1, p0, Lcom/google/common/cache/LocalCache;->valueStrength:Lcom/google/common/cache/LocalCache$Strength; .line 1697 invoke-virtual {p0, v0}, Lcom/google/common/cache/LocalCache;->segmentFor(I)Lcom/google/common/cache/LocalCache$Segment; move-result-object p0 invoke-static {p2}, Lcom/google/common/base/Preconditions;->checkNotNull(Ljava/lang/Object;)Ljava/lang/Object; move-result-object p2 invoke-virtual {v1, p0, 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 p0 return-object p0 .end method .method processPendingNotifications()V .locals 4 :goto_0 iget-object v0, p0, Lcom/google/common/cache/LocalCache;->removalNotificationQueue:Ljava/util/Queue; .line 1812 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 :try_start_0 iget-object v1, p0, Lcom/google/common/cache/LocalCache;->removalListener:Lcom/google/common/cache/RemovalListener; .line 1814 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 sget-object v1, Lcom/google/common/cache/LocalCache;->logger:Ljava/util/logging/Logger; .line 1816 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 2 .annotation system Ldalvik/annotation/Signature; value = { "(TK;TV;)TV;" } .end annotation .line 4082 invoke-static {p1}, Lcom/google/common/base/Preconditions;->checkNotNull(Ljava/lang/Object;)Ljava/lang/Object; .line 4083 invoke-static {p2}, Lcom/google/common/base/Preconditions;->checkNotNull(Ljava/lang/Object;)Ljava/lang/Object; .line 4084 invoke-virtual {p0, p1}, Lcom/google/common/cache/LocalCache;->hash(Ljava/lang/Object;)I move-result v0 .line 4085 invoke-virtual {p0, v0}, Lcom/google/common/cache/LocalCache;->segmentFor(I)Lcom/google/common/cache/LocalCache$Segment; move-result-object p0 const/4 v1, 0x0 invoke-virtual {p0, p1, v0, p2, v1}, Lcom/google/common/cache/LocalCache$Segment;->put(Ljava/lang/Object;ILjava/lang/Object;Z)Ljava/lang/Object; move-result-object p0 return-object p0 .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 4098 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 4099 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 2 .annotation system Ldalvik/annotation/Signature; value = { "(TK;TV;)TV;" } .end annotation .line 4090 invoke-static {p1}, Lcom/google/common/base/Preconditions;->checkNotNull(Ljava/lang/Object;)Ljava/lang/Object; .line 4091 invoke-static {p2}, Lcom/google/common/base/Preconditions;->checkNotNull(Ljava/lang/Object;)Ljava/lang/Object; .line 4092 invoke-virtual {p0, p1}, Lcom/google/common/cache/LocalCache;->hash(Ljava/lang/Object;)I move-result v0 .line 4093 invoke-virtual {p0, v0}, Lcom/google/common/cache/LocalCache;->segmentFor(I)Lcom/google/common/cache/LocalCache$Segment; move-result-object p0 const/4 v1, 0x1 invoke-virtual {p0, p1, v0, p2, v1}, Lcom/google/common/cache/LocalCache$Segment;->put(Ljava/lang/Object;ILjava/lang/Object;Z)Ljava/lang/Object; move-result-object p0 return-object p0 .end method .method reclaimKey(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 1712 invoke-interface {p1}, Lcom/google/common/cache/ReferenceEntry;->getHash()I move-result v0 .line 1713 invoke-virtual {p0, v0}, Lcom/google/common/cache/LocalCache;->segmentFor(I)Lcom/google/common/cache/LocalCache$Segment; move-result-object p0 invoke-virtual {p0, p1, v0}, Lcom/google/common/cache/LocalCache$Segment;->reclaimKey(Lcom/google/common/cache/ReferenceEntry;I)Z return-void .end method .method reclaimValue(Lcom/google/common/cache/LocalCache$ValueReference;)V .locals 2 .annotation system Ldalvik/annotation/Signature; value = { "(", "Lcom/google/common/cache/LocalCache$ValueReference<", "TK;TV;>;)V" } .end annotation .line 1706 invoke-interface {p1}, Lcom/google/common/cache/LocalCache$ValueReference;->getEntry()Lcom/google/common/cache/ReferenceEntry; move-result-object v0 .line 1707 invoke-interface {v0}, Lcom/google/common/cache/ReferenceEntry;->getHash()I move-result v1 .line 1708 invoke-virtual {p0, v1}, Lcom/google/common/cache/LocalCache;->segmentFor(I)Lcom/google/common/cache/LocalCache$Segment; move-result-object p0 invoke-interface {v0}, Lcom/google/common/cache/ReferenceEntry;->getKey()Ljava/lang/Object; move-result-object v0 invoke-virtual {p0, 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 recordsAccess()Z .locals 0 .line 354 invoke-virtual {p0}, Lcom/google/common/cache/LocalCache;->expiresAfterAccess()Z move-result p0 return p0 .end method .method recordsTime()Z .locals 1 .line 358 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 p0 if-eqz p0, :cond_0 goto :goto_0 :cond_0 const/4 p0, 0x0 goto :goto_1 :cond_1 :goto_0 const/4 p0, 0x1 :goto_1 return p0 .end method .method recordsWrite()Z .locals 1 .line 350 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 p0 if-eqz p0, :cond_0 goto :goto_0 :cond_0 const/4 p0, 0x0 goto :goto_1 :cond_1 :goto_0 const/4 p0, 0x1 :goto_1 return p0 .end method .method refresh(Ljava/lang/Object;)V .locals 3 .annotation system Ldalvik/annotation/Signature; value = { "(TK;)V" } .end annotation .line 4026 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 4027 invoke-virtual {p0, v0}, Lcom/google/common/cache/LocalCache;->segmentFor(I)Lcom/google/common/cache/LocalCache$Segment; move-result-object v1 iget-object p0, p0, Lcom/google/common/cache/LocalCache;->defaultLoader:Lcom/google/common/cache/CacheLoader; const/4 v2, 0x0 invoke-virtual {v1, p1, v0, p0, v2}, Lcom/google/common/cache/LocalCache$Segment;->refresh(Ljava/lang/Object;ILcom/google/common/cache/CacheLoader;Z)Ljava/lang/Object; return-void .end method .method refreshes()Z .locals 4 iget-wide v0, p0, Lcom/google/common/cache/LocalCache;->refreshNanos:J const-wide/16 v2, 0x0 cmp-long p0, v0, v2 if-lez p0, :cond_0 const/4 p0, 0x1 goto :goto_0 :cond_0 const/4 p0, 0x0 :goto_0 return p0 .end method .method public remove(Ljava/lang/Object;)Ljava/lang/Object; .locals 1 .param p1 # Ljava/lang/Object; .annotation runtime Ljavax/annotation/CheckForNull; .end annotation .end param .annotation system Ldalvik/annotation/Signature; value = { "(", "Ljava/lang/Object;", ")TV;" } .end annotation if-nez p1, :cond_0 const/4 p0, 0x0 return-object p0 .line 4108 :cond_0 invoke-virtual {p0, p1}, Lcom/google/common/cache/LocalCache;->hash(Ljava/lang/Object;)I move-result v0 .line 4109 invoke-virtual {p0, v0}, Lcom/google/common/cache/LocalCache;->segmentFor(I)Lcom/google/common/cache/LocalCache$Segment; move-result-object p0 invoke-virtual {p0, p1, v0}, Lcom/google/common/cache/LocalCache$Segment;->remove(Ljava/lang/Object;I)Ljava/lang/Object; move-result-object p0 return-object p0 .end method .method public remove(Ljava/lang/Object;Ljava/lang/Object;)Z .locals 1 .param p1 # Ljava/lang/Object; .annotation runtime Ljavax/annotation/CheckForNull; .end annotation .end param .param p2 # Ljava/lang/Object; .annotation runtime Ljavax/annotation/CheckForNull; .end annotation .end param if-eqz p1, :cond_1 if-nez p2, :cond_0 goto :goto_0 .line 4117 :cond_0 invoke-virtual {p0, p1}, Lcom/google/common/cache/LocalCache;->hash(Ljava/lang/Object;)I move-result v0 .line 4118 invoke-virtual {p0, v0}, Lcom/google/common/cache/LocalCache;->segmentFor(I)Lcom/google/common/cache/LocalCache$Segment; move-result-object p0 invoke-virtual {p0, p1, v0, p2}, Lcom/google/common/cache/LocalCache$Segment;->remove(Ljava/lang/Object;ILjava/lang/Object;)Z move-result p0 return p0 :cond_1 :goto_0 const/4 p0, 0x0 return p0 .end method .method public replace(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; .locals 1 .annotation system Ldalvik/annotation/Signature; value = { "(TK;TV;)TV;" } .end annotation .line 4134 invoke-static {p1}, Lcom/google/common/base/Preconditions;->checkNotNull(Ljava/lang/Object;)Ljava/lang/Object; .line 4135 invoke-static {p2}, Lcom/google/common/base/Preconditions;->checkNotNull(Ljava/lang/Object;)Ljava/lang/Object; .line 4136 invoke-virtual {p0, p1}, Lcom/google/common/cache/LocalCache;->hash(Ljava/lang/Object;)I move-result v0 .line 4137 invoke-virtual {p0, v0}, Lcom/google/common/cache/LocalCache;->segmentFor(I)Lcom/google/common/cache/LocalCache$Segment; move-result-object p0 invoke-virtual {p0, p1, v0, p2}, Lcom/google/common/cache/LocalCache$Segment;->replace(Ljava/lang/Object;ILjava/lang/Object;)Ljava/lang/Object; move-result-object p0 return-object p0 .end method .method public replace(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Z .locals 1 .param p2 # Ljava/lang/Object; .annotation runtime Ljavax/annotation/CheckForNull; .end annotation .end param .annotation system Ldalvik/annotation/Signature; value = { "(TK;TV;TV;)Z" } .end annotation .line 4123 invoke-static {p1}, Lcom/google/common/base/Preconditions;->checkNotNull(Ljava/lang/Object;)Ljava/lang/Object; .line 4124 invoke-static {p3}, Lcom/google/common/base/Preconditions;->checkNotNull(Ljava/lang/Object;)Ljava/lang/Object; if-nez p2, :cond_0 const/4 p0, 0x0 return p0 .line 4128 :cond_0 invoke-virtual {p0, p1}, Lcom/google/common/cache/LocalCache;->hash(Ljava/lang/Object;)I move-result v0 .line 4129 invoke-virtual {p0, v0}, Lcom/google/common/cache/LocalCache;->segmentFor(I)Lcom/google/common/cache/LocalCache$Segment; move-result-object p0 invoke-virtual {p0, p1, v0, p2, p3}, Lcom/google/common/cache/LocalCache$Segment;->replace(Ljava/lang/Object;ILjava/lang/Object;Ljava/lang/Object;)Z move-result p0 return p0 .end method .method 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 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 p0, p0, Lcom/google/common/cache/LocalCache;->segmentMask:I and-int/2addr p0, p1 .line 1733 aget-object p0, v0, p0 return-object p0 .end method .method public size()I .locals 2 .line 3840 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 p0 return p0 .end method .method usesAccessEntries()Z .locals 1 .line 366 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 p0 if-eqz p0, :cond_0 goto :goto_0 :cond_0 const/4 p0, 0x0 goto :goto_1 :cond_1 :goto_0 const/4 p0, 0x1 :goto_1 return p0 .end method .method usesAccessQueue()Z .locals 1 .line 342 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 p0 if-eqz p0, :cond_0 goto :goto_0 :cond_0 const/4 p0, 0x0 goto :goto_1 :cond_1 :goto_0 const/4 p0, 0x1 :goto_1 return p0 .end method .method usesKeyReferences()Z .locals 1 iget-object p0, p0, Lcom/google/common/cache/LocalCache;->keyStrength:Lcom/google/common/cache/LocalCache$Strength; .line 370 sget-object v0, Lcom/google/common/cache/LocalCache$Strength;->STRONG:Lcom/google/common/cache/LocalCache$Strength; if-eq p0, v0, :cond_0 const/4 p0, 0x1 goto :goto_0 :cond_0 const/4 p0, 0x0 :goto_0 return p0 .end method .method usesValueReferences()Z .locals 1 iget-object p0, p0, Lcom/google/common/cache/LocalCache;->valueStrength:Lcom/google/common/cache/LocalCache$Strength; .line 374 sget-object v0, Lcom/google/common/cache/LocalCache$Strength;->STRONG:Lcom/google/common/cache/LocalCache$Strength; if-eq p0, v0, :cond_0 const/4 p0, 0x1 goto :goto_0 :cond_0 const/4 p0, 0x0 :goto_0 return p0 .end method .method usesWriteEntries()Z .locals 1 .line 362 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 p0 if-eqz p0, :cond_0 goto :goto_0 :cond_0 const/4 p0, 0x0 goto :goto_1 :cond_1 :goto_0 const/4 p0, 0x1 :goto_1 return p0 .end method .method usesWriteQueue()Z .locals 0 .line 346 invoke-virtual {p0}, Lcom/google/common/cache/LocalCache;->expiresAfterWrite()Z move-result p0 return p0 .end method .method public values()Ljava/util/Collection; .locals 1 .annotation system Ldalvik/annotation/Signature; value = { "()", "Ljava/util/Collection<", "TV;>;" } .end annotation iget-object v0, p0, Lcom/google/common/cache/LocalCache;->values:Ljava/util/Collection; if-eqz v0, :cond_0 goto :goto_0 .line 4169 :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