AbstractAdaptiveCountingMemoryCache.smali
.class public abstract Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;
.super Ljava/lang/Object;
.source "AbstractAdaptiveCountingMemoryCache.java"
# interfaces
.implements Lcom/facebook/imagepipeline/cache/CountingMemoryCache;
# annotations
.annotation system Ldalvik/annotation/MemberClasses;
value = {
Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache$IntMapArrayList;,
Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache$ArrayListType;
}
.end annotation
.annotation system Ldalvik/annotation/Signature;
value = {
"<K:",
"Ljava/lang/Object;",
"V:",
"Ljava/lang/Object;",
">",
"Ljava/lang/Object;",
"Lcom/facebook/imagepipeline/cache/CountingMemoryCache<",
"TK;TV;>;"
}
.end annotation
# static fields
.field static final DEFAULT_ADAPTIVE_RATE_PROMIL:I = 0xa
.field static final DEFAULT_LFU_FRACTION_PROMIL:I = 0x1f4
.field static final MAX_FRACTION_PROMIL:I = 0x384
.field static final MIN_FRACTION_PROMIL:I = 0x64
.field private static final TAG:Ljava/lang/String; = "AbstractArcCountingMemoryCache"
.field static final TOTAL_PROMIL:I = 0x3e8
# instance fields
.field final mAdaptiveRatePromil:I
.field private final mCacheTrimStrategy:Lcom/facebook/imagepipeline/cache/MemoryCache$CacheTrimStrategy;
.field final mCachedEntries:Lcom/facebook/imagepipeline/cache/CountingLruMap;
.annotation system Ldalvik/annotation/Signature;
value = {
"Lcom/facebook/imagepipeline/cache/CountingLruMap<",
"TK;",
"Lcom/facebook/imagepipeline/cache/CountingMemoryCache$Entry<",
"TK;TV;>;>;"
}
.end annotation
.end field
.field private final mFrequentlyUsedThreshold:I
.field final mGhostListMaxSize:I
.field mLFUFractionPromil:I
.field private mLastCacheParamsCheck:J
.field final mLeastFrequentlyUsedExclusiveEntries:Lcom/facebook/imagepipeline/cache/CountingLruMap;
.annotation system Ldalvik/annotation/Signature;
value = {
"Lcom/facebook/imagepipeline/cache/CountingLruMap<",
"TK;",
"Lcom/facebook/imagepipeline/cache/CountingMemoryCache$Entry<",
"TK;TV;>;>;"
}
.end annotation
.end field
.field final mLeastFrequentlyUsedKeysGhostList:Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache$IntMapArrayList;
.annotation system Ldalvik/annotation/Signature;
value = {
"Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache<",
"TK;TV;>.IntMapArray",
"List<",
"TK;>;"
}
.end annotation
.end field
.field protected mMemoryCacheParams:Lcom/facebook/imagepipeline/cache/MemoryCacheParams;
.field private final mMemoryCacheParamsSupplier:Lcom/facebook/common/internal/Supplier;
.annotation system Ldalvik/annotation/Signature;
value = {
"Lcom/facebook/common/internal/Supplier<",
"Lcom/facebook/imagepipeline/cache/MemoryCacheParams;",
">;"
}
.end annotation
.end field
.field final mMostFrequentlyUsedExclusiveEntries:Lcom/facebook/imagepipeline/cache/CountingLruMap;
.annotation system Ldalvik/annotation/Signature;
value = {
"Lcom/facebook/imagepipeline/cache/CountingLruMap<",
"TK;",
"Lcom/facebook/imagepipeline/cache/CountingMemoryCache$Entry<",
"TK;TV;>;>;"
}
.end annotation
.end field
.field final mMostFrequentlyUsedKeysGhostList:Ljava/util/ArrayList;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/ArrayList<",
"TK;>;"
}
.end annotation
.end field
.field private final mValueDescriptor:Lcom/facebook/imagepipeline/cache/ValueDescriptor;
.annotation system Ldalvik/annotation/Signature;
value = {
"Lcom/facebook/imagepipeline/cache/ValueDescriptor<",
"TV;>;"
}
.end annotation
.end field
# direct methods
.method public constructor <init>(Lcom/facebook/common/internal/Supplier;Lcom/facebook/imagepipeline/cache/MemoryCache$CacheTrimStrategy;Lcom/facebook/imagepipeline/cache/ValueDescriptor;IIII)V
.registers 10
.annotation system Ldalvik/annotation/MethodParameters;
accessFlags = {
0x0,
0x0,
0x0,
0x0,
0x0,
0x0,
0x0
}
names = {
"memoryCacheParamsSupplier",
"cacheTrimStrategy",
"valueDescriptor",
"adaptiveRatePromil",
"frequentlyUsedThreshold",
"ghostListMaxSize",
"lfuFractionPromil"
}
.end annotation
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Lcom/facebook/common/internal/Supplier<",
"Lcom/facebook/imagepipeline/cache/MemoryCacheParams;",
">;",
"Lcom/facebook/imagepipeline/cache/MemoryCache$CacheTrimStrategy;",
"Lcom/facebook/imagepipeline/cache/ValueDescriptor<",
"TV;>;IIII)V"
}
.end annotation
.line 134
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
const-string v0, "AbstractArcCountingMemoryCache"
const-string v1, "Create Adaptive Replacement Cache"
.line 135
invoke-static {v0, v1}, Lcom/facebook/common/logging/FLog;->d(Ljava/lang/String;Ljava/lang/String;)V
.line 136
iput-object p3, p0, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->mValueDescriptor:Lcom/facebook/imagepipeline/cache/ValueDescriptor;
.line 137
new-instance v0, Lcom/facebook/imagepipeline/cache/CountingLruMap;
.line 138
invoke-direct {p0, p3}, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->wrapValueDescriptor(Lcom/facebook/imagepipeline/cache/ValueDescriptor;)Lcom/facebook/imagepipeline/cache/ValueDescriptor;
move-result-object v1
invoke-direct {v0, v1}, Lcom/facebook/imagepipeline/cache/CountingLruMap;-><init>(Lcom/facebook/imagepipeline/cache/ValueDescriptor;)V
iput-object v0, p0, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->mLeastFrequentlyUsedExclusiveEntries:Lcom/facebook/imagepipeline/cache/CountingLruMap;
.line 139
new-instance v0, Lcom/facebook/imagepipeline/cache/CountingLruMap;
.line 140
invoke-direct {p0, p3}, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->wrapValueDescriptor(Lcom/facebook/imagepipeline/cache/ValueDescriptor;)Lcom/facebook/imagepipeline/cache/ValueDescriptor;
move-result-object v1
invoke-direct {v0, v1}, Lcom/facebook/imagepipeline/cache/CountingLruMap;-><init>(Lcom/facebook/imagepipeline/cache/ValueDescriptor;)V
iput-object v0, p0, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->mMostFrequentlyUsedExclusiveEntries:Lcom/facebook/imagepipeline/cache/CountingLruMap;
.line 141
new-instance v0, Lcom/facebook/imagepipeline/cache/CountingLruMap;
invoke-direct {p0, p3}, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->wrapValueDescriptor(Lcom/facebook/imagepipeline/cache/ValueDescriptor;)Lcom/facebook/imagepipeline/cache/ValueDescriptor;
move-result-object p3
invoke-direct {v0, p3}, Lcom/facebook/imagepipeline/cache/CountingLruMap;-><init>(Lcom/facebook/imagepipeline/cache/ValueDescriptor;)V
iput-object v0, p0, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->mCachedEntries:Lcom/facebook/imagepipeline/cache/CountingLruMap;
.line 142
iput-object p2, p0, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->mCacheTrimStrategy:Lcom/facebook/imagepipeline/cache/MemoryCache$CacheTrimStrategy;
.line 143
iput-object p1, p0, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->mMemoryCacheParamsSupplier:Lcom/facebook/common/internal/Supplier;
.line 146
invoke-interface {p1}, Lcom/facebook/common/internal/Supplier;->get()Ljava/lang/Object;
move-result-object p1
const-string p2, "mMemoryCacheParamsSupplier returned null"
.line 145
invoke-static {p1, p2}, Lcom/facebook/common/internal/Preconditions;->checkNotNull(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
move-result-object p1
check-cast p1, Lcom/facebook/imagepipeline/cache/MemoryCacheParams;
iput-object p1, p0, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->mMemoryCacheParams:Lcom/facebook/imagepipeline/cache/MemoryCacheParams;
.line 147
invoke-static {}, Landroid/os/SystemClock;->uptimeMillis()J
move-result-wide p1
iput-wide p1, p0, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->mLastCacheParamsCheck:J
.line 148
iput p5, p0, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->mFrequentlyUsedThreshold:I
.line 149
iput p6, p0, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->mGhostListMaxSize:I
.line 150
new-instance p1, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache$IntMapArrayList;
invoke-direct {p1, p0, p6}, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache$IntMapArrayList;-><init>(Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;I)V
iput-object p1, p0, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->mLeastFrequentlyUsedKeysGhostList:Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache$IntMapArrayList;
.line 151
new-instance p1, Ljava/util/ArrayList;
invoke-direct {p1, p6}, Ljava/util/ArrayList;-><init>(I)V
iput-object p1, p0, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->mMostFrequentlyUsedKeysGhostList:Ljava/util/ArrayList;
const/16 p1, 0x64
if-lt p7, p1, :cond_63
const/16 p1, 0x384
if-le p7, p1, :cond_60
goto :goto_63
.line 156
:cond_60
iput p7, p0, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->mLFUFractionPromil:I
goto :goto_6a
:cond_63
:goto_63
const/16 p1, 0x1f4
.line 153
iput p1, p0, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->mLFUFractionPromil:I
.line 154
invoke-virtual {p0}, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->logIllegalLfuFraction()V
:goto_6a
if-lez p4, :cond_74
const/16 p1, 0x3e8
if-lt p4, p1, :cond_71
goto :goto_74
.line 162
:cond_71
iput p4, p0, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->mAdaptiveRatePromil:I
goto :goto_7b
:cond_74
:goto_74
const/16 p1, 0xa
.line 159
iput p1, p0, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->mAdaptiveRatePromil:I
.line 160
invoke-virtual {p0}, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->logIllegalAdaptiveRate()V
:goto_7b
return-void
.end method
.method static synthetic access$000(Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;Lcom/facebook/imagepipeline/cache/CountingMemoryCache$Entry;)V
.registers 2
.line 43
invoke-direct {p0, p1}, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->releaseClientReference(Lcom/facebook/imagepipeline/cache/CountingMemoryCache$Entry;)V
return-void
.end method
.method private declared-synchronized addElementToGhostList(Ljava/lang/Object;ILcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache$ArrayListType;)V
.registers 5
.annotation system Ldalvik/annotation/MethodParameters;
accessFlags = {
0x0,
0x0,
0x0
}
names = {
"key",
"accessCount",
"evictionType"
}
.end annotation
.annotation system Ldalvik/annotation/Signature;
value = {
"(TK;I",
"Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache$ArrayListType;",
")V"
}
.end annotation
monitor-enter p0
.line 329
:try_start_1
sget-object v0, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache$ArrayListType;->LFU:Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache$ArrayListType;
if-ne p3, v0, :cond_f
.line 330
iget-object p3, p0, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->mLeastFrequentlyUsedKeysGhostList:Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache$IntMapArrayList;
invoke-static {p2}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
move-result-object p2
invoke-virtual {p3, p1, p2}, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache$IntMapArrayList;->addPair(Ljava/lang/Object;Ljava/lang/Integer;)V
goto :goto_24
.line 332
:cond_f
iget-object p2, p0, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->mMostFrequentlyUsedKeysGhostList:Ljava/util/ArrayList;
invoke-virtual {p2}, Ljava/util/ArrayList;->size()I
move-result p2
iget p3, p0, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->mGhostListMaxSize:I
if-ne p2, p3, :cond_1f
.line 333
iget-object p2, p0, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->mMostFrequentlyUsedKeysGhostList:Ljava/util/ArrayList;
const/4 p3, 0x0
invoke-virtual {p2, p3}, Ljava/util/ArrayList;->remove(I)Ljava/lang/Object;
.line 335
:cond_1f
iget-object p2, p0, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->mMostFrequentlyUsedKeysGhostList:Ljava/util/ArrayList;
invoke-virtual {p2, p1}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
:try_end_24
.catchall {:try_start_1 .. :try_end_24} :catchall_26
.line 337
:goto_24
monitor-exit p0
return-void
:catchall_26
move-exception p1
monitor-exit p0
throw p1
.end method
.method private declared-synchronized canCacheNewValue(Ljava/lang/Object;)Z
.registers 5
.annotation system Ldalvik/annotation/MethodParameters;
accessFlags = {
0x0
}
names = {
"value"
}
.end annotation
.annotation system Ldalvik/annotation/Signature;
value = {
"(TV;)Z"
}
.end annotation
monitor-enter p0
.line 239
:try_start_1
iget-object v0, p0, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->mValueDescriptor:Lcom/facebook/imagepipeline/cache/ValueDescriptor;
invoke-interface {v0, p1}, Lcom/facebook/imagepipeline/cache/ValueDescriptor;->getSizeInBytes(Ljava/lang/Object;)I
move-result p1
.line 240
iget-object v0, p0, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->mMemoryCacheParams:Lcom/facebook/imagepipeline/cache/MemoryCacheParams;
iget v0, v0, Lcom/facebook/imagepipeline/cache/MemoryCacheParams;->maxCacheEntrySize:I
const/4 v1, 0x1
if-gt p1, v0, :cond_25
.line 241
invoke-virtual {p0}, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->getInUseCount()I
move-result v0
iget-object v2, p0, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->mMemoryCacheParams:Lcom/facebook/imagepipeline/cache/MemoryCacheParams;
iget v2, v2, Lcom/facebook/imagepipeline/cache/MemoryCacheParams;->maxCacheEntries:I
sub-int/2addr v2, v1
if-gt v0, v2, :cond_25
.line 242
invoke-virtual {p0}, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->getInUseSizeInBytes()I
move-result v0
iget-object v2, p0, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->mMemoryCacheParams:Lcom/facebook/imagepipeline/cache/MemoryCacheParams;
iget v2, v2, Lcom/facebook/imagepipeline/cache/MemoryCacheParams;->maxCacheSize:I
:try_end_21
.catchall {:try_start_1 .. :try_end_21} :catchall_28
sub-int/2addr v2, p1
if-gt v0, v2, :cond_25
goto :goto_26
:cond_25
const/4 v1, 0x0
.line 240
:goto_26
monitor-exit p0
return v1
:catchall_28
move-exception p1
monitor-exit p0
throw p1
.end method
.method private declared-synchronized decreaseClientCount(Lcom/facebook/imagepipeline/cache/CountingMemoryCache$Entry;)V
.registers 4
.annotation system Ldalvik/annotation/MethodParameters;
accessFlags = {
0x0
}
names = {
"entry"
}
.end annotation
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Lcom/facebook/imagepipeline/cache/CountingMemoryCache$Entry<",
"TK;TV;>;)V"
}
.end annotation
monitor-enter p0
.line 673
:try_start_1
invoke-static {p1}, Lcom/facebook/common/internal/Preconditions;->checkNotNull(Ljava/lang/Object;)Ljava/lang/Object;
.line 674
iget v0, p1, Lcom/facebook/imagepipeline/cache/CountingMemoryCache$Entry;->clientCount:I
const/4 v1, 0x1
if-lez v0, :cond_b
move v0, v1
goto :goto_c
:cond_b
const/4 v0, 0x0
:goto_c
invoke-static {v0}, Lcom/facebook/common/internal/Preconditions;->checkState(Z)V
.line 675
iget v0, p1, Lcom/facebook/imagepipeline/cache/CountingMemoryCache$Entry;->clientCount:I
sub-int/2addr v0, v1
iput v0, p1, Lcom/facebook/imagepipeline/cache/CountingMemoryCache$Entry;->clientCount:I
:try_end_14
.catchall {:try_start_1 .. :try_end_14} :catchall_16
.line 676
monitor-exit p0
return-void
:catchall_16
move-exception p1
monitor-exit p0
throw p1
.end method
.method private declared-synchronized increaseAccessCount(Lcom/facebook/imagepipeline/cache/CountingMemoryCache$Entry;)V
.registers 4
.annotation system Ldalvik/annotation/MethodParameters;
accessFlags = {
0x0
}
names = {
"entry"
}
.end annotation
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Lcom/facebook/imagepipeline/cache/CountingMemoryCache$Entry<",
"TK;TV;>;)V"
}
.end annotation
monitor-enter p0
.line 666
:try_start_1
invoke-static {p1}, Lcom/facebook/common/internal/Preconditions;->checkNotNull(Ljava/lang/Object;)Ljava/lang/Object;
.line 667
iget-boolean v0, p1, Lcom/facebook/imagepipeline/cache/CountingMemoryCache$Entry;->isOrphan:Z
const/4 v1, 0x1
if-nez v0, :cond_b
move v0, v1
goto :goto_c
:cond_b
const/4 v0, 0x0
:goto_c
invoke-static {v0}, Lcom/facebook/common/internal/Preconditions;->checkState(Z)V
.line 668
iget v0, p1, Lcom/facebook/imagepipeline/cache/CountingMemoryCache$Entry;->accessCount:I
add-int/2addr v0, v1
iput v0, p1, Lcom/facebook/imagepipeline/cache/CountingMemoryCache$Entry;->accessCount:I
:try_end_14
.catchall {:try_start_1 .. :try_end_14} :catchall_16
.line 669
monitor-exit p0
return-void
:catchall_16
move-exception p1
monitor-exit p0
throw p1
.end method
.method private declared-synchronized increaseCounters(Lcom/facebook/imagepipeline/cache/CountingMemoryCache$Entry;)V
.registers 4
.annotation system Ldalvik/annotation/MethodParameters;
accessFlags = {
0x0
}
names = {
"entry"
}
.end annotation
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Lcom/facebook/imagepipeline/cache/CountingMemoryCache$Entry<",
"TK;TV;>;)V"
}
.end annotation
monitor-enter p0
.line 658
:try_start_1
invoke-static {p1}, Lcom/facebook/common/internal/Preconditions;->checkNotNull(Ljava/lang/Object;)Ljava/lang/Object;
.line 659
iget-boolean v0, p1, Lcom/facebook/imagepipeline/cache/CountingMemoryCache$Entry;->isOrphan:Z
const/4 v1, 0x1
if-nez v0, :cond_b
move v0, v1
goto :goto_c
:cond_b
const/4 v0, 0x0
:goto_c
invoke-static {v0}, Lcom/facebook/common/internal/Preconditions;->checkState(Z)V
.line 660
iget v0, p1, Lcom/facebook/imagepipeline/cache/CountingMemoryCache$Entry;->clientCount:I
add-int/2addr v0, v1
iput v0, p1, Lcom/facebook/imagepipeline/cache/CountingMemoryCache$Entry;->clientCount:I
.line 661
invoke-direct {p0, p1}, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->increaseAccessCount(Lcom/facebook/imagepipeline/cache/CountingMemoryCache$Entry;)V
:try_end_17
.catchall {:try_start_1 .. :try_end_17} :catchall_19
.line 662
monitor-exit p0
return-void
:catchall_19
move-exception p1
monitor-exit p0
throw p1
.end method
.method private declared-synchronized makeOrphan(Lcom/facebook/imagepipeline/cache/CountingMemoryCache$Entry;)V
.registers 4
.annotation system Ldalvik/annotation/MethodParameters;
accessFlags = {
0x0
}
names = {
"entry"
}
.end annotation
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Lcom/facebook/imagepipeline/cache/CountingMemoryCache$Entry<",
"TK;TV;>;)V"
}
.end annotation
monitor-enter p0
.line 651
:try_start_1
invoke-static {p1}, Lcom/facebook/common/internal/Preconditions;->checkNotNull(Ljava/lang/Object;)Ljava/lang/Object;
.line 652
iget-boolean v0, p1, Lcom/facebook/imagepipeline/cache/CountingMemoryCache$Entry;->isOrphan:Z
const/4 v1, 0x1
if-nez v0, :cond_b
move v0, v1
goto :goto_c
:cond_b
const/4 v0, 0x0
:goto_c
invoke-static {v0}, Lcom/facebook/common/internal/Preconditions;->checkState(Z)V
.line 653
iput-boolean v1, p1, Lcom/facebook/imagepipeline/cache/CountingMemoryCache$Entry;->isOrphan:Z
:try_end_11
.catchall {:try_start_1 .. :try_end_11} :catchall_13
.line 654
monitor-exit p0
return-void
:catchall_13
move-exception p1
monitor-exit p0
throw p1
.end method
.method private declared-synchronized makeOrphans(Ljava/util/ArrayList;)V
.registers 3
.param p1 # Ljava/util/ArrayList;
.annotation runtime Ljavax/annotation/Nullable;
.end annotation
.end param
.annotation system Ldalvik/annotation/MethodParameters;
accessFlags = {
0x0
}
names = {
"oldEntries"
}
.end annotation
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/util/ArrayList<",
"Lcom/facebook/imagepipeline/cache/CountingMemoryCache$Entry<",
"TK;TV;>;>;)V"
}
.end annotation
monitor-enter p0
if-eqz p1, :cond_1a
.line 643
:try_start_3
invoke-virtual {p1}, Ljava/util/ArrayList;->iterator()Ljava/util/Iterator;
move-result-object p1
:goto_7
invoke-interface {p1}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_1a
invoke-interface {p1}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lcom/facebook/imagepipeline/cache/CountingMemoryCache$Entry;
.line 644
invoke-direct {p0, v0}, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->makeOrphan(Lcom/facebook/imagepipeline/cache/CountingMemoryCache$Entry;)V
:try_end_16
.catchall {:try_start_3 .. :try_end_16} :catchall_17
goto :goto_7
:catchall_17
move-exception p1
monitor-exit p0
throw p1
.line 647
:cond_1a
monitor-exit p0
return-void
.end method
.method private declared-synchronized makeOrphans(Ljava/util/ArrayList;Ljava/util/ArrayList;)V
.registers 3
.param p1 # Ljava/util/ArrayList;
.annotation runtime Ljavax/annotation/Nullable;
.end annotation
.end param
.param p2 # Ljava/util/ArrayList;
.annotation runtime Ljavax/annotation/Nullable;
.end annotation
.end param
.annotation system Ldalvik/annotation/MethodParameters;
accessFlags = {
0x0,
0x0
}
names = {
"oldEntries1",
"oldEntries2"
}
.end annotation
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/util/ArrayList<",
"Lcom/facebook/imagepipeline/cache/CountingMemoryCache$Entry<",
"TK;TV;>;>;",
"Ljava/util/ArrayList<",
"Lcom/facebook/imagepipeline/cache/CountingMemoryCache$Entry<",
"TK;TV;>;>;)V"
}
.end annotation
monitor-enter p0
.line 637
:try_start_1
invoke-direct {p0, p1}, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->makeOrphans(Ljava/util/ArrayList;)V
.line 638
invoke-direct {p0, p2}, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->makeOrphans(Ljava/util/ArrayList;)V
:try_end_7
.catchall {:try_start_1 .. :try_end_7} :catchall_9
.line 639
monitor-exit p0
return-void
:catchall_9
move-exception p1
monitor-exit p0
throw p1
.end method
.method private declared-synchronized maybeAddToExclusives(Lcom/facebook/imagepipeline/cache/CountingMemoryCache$Entry;)Z
.registers 4
.annotation system Ldalvik/annotation/MethodParameters;
accessFlags = {
0x0
}
names = {
"entry"
}
.end annotation
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Lcom/facebook/imagepipeline/cache/CountingMemoryCache$Entry<",
"TK;TV;>;)Z"
}
.end annotation
monitor-enter p0
.line 357
:try_start_1
iget-boolean v0, p1, Lcom/facebook/imagepipeline/cache/CountingMemoryCache$Entry;->isOrphan:Z
if-nez v0, :cond_21
iget v0, p1, Lcom/facebook/imagepipeline/cache/CountingMemoryCache$Entry;->clientCount:I
if-nez v0, :cond_21
.line 358
iget v0, p1, Lcom/facebook/imagepipeline/cache/CountingMemoryCache$Entry;->accessCount:I
iget v1, p0, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->mFrequentlyUsedThreshold:I
if-le v0, v1, :cond_17
.line 359
iget-object v0, p0, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->mMostFrequentlyUsedExclusiveEntries:Lcom/facebook/imagepipeline/cache/CountingLruMap;
iget-object v1, p1, Lcom/facebook/imagepipeline/cache/CountingMemoryCache$Entry;->key:Ljava/lang/Object;
invoke-virtual {v0, v1, p1}, Lcom/facebook/imagepipeline/cache/CountingLruMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
goto :goto_1e
.line 361
:cond_17
iget-object v0, p0, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->mLeastFrequentlyUsedExclusiveEntries:Lcom/facebook/imagepipeline/cache/CountingLruMap;
iget-object v1, p1, Lcom/facebook/imagepipeline/cache/CountingMemoryCache$Entry;->key:Ljava/lang/Object;
invoke-virtual {v0, v1, p1}, Lcom/facebook/imagepipeline/cache/CountingLruMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
:try_end_1e
.catchall {:try_start_1 .. :try_end_1e} :catchall_24
:goto_1e
const/4 p1, 0x1
.line 363
monitor-exit p0
return p1
:cond_21
const/4 p1, 0x0
.line 365
monitor-exit p0
return p1
:catchall_24
move-exception p1
monitor-exit p0
throw p1
.end method
.method private maybeClose(Ljava/util/ArrayList;)V
.registers 3
.param p1 # Ljava/util/ArrayList;
.annotation runtime Ljavax/annotation/Nullable;
.end annotation
.end param
.annotation system Ldalvik/annotation/MethodParameters;
accessFlags = {
0x0
}
names = {
"oldEntries"
}
.end annotation
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/util/ArrayList<",
"Lcom/facebook/imagepipeline/cache/CountingMemoryCache$Entry<",
"TK;TV;>;>;)V"
}
.end annotation
if-eqz p1, :cond_1a
.line 596
invoke-virtual {p1}, Ljava/util/ArrayList;->iterator()Ljava/util/Iterator;
move-result-object p1
:goto_6
invoke-interface {p1}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_1a
invoke-interface {p1}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lcom/facebook/imagepipeline/cache/CountingMemoryCache$Entry;
.line 597
invoke-direct {p0, v0}, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->referenceToClose(Lcom/facebook/imagepipeline/cache/CountingMemoryCache$Entry;)Lcom/facebook/common/references/CloseableReference;
move-result-object v0
invoke-static {v0}, Lcom/facebook/common/references/CloseableReference;->closeSafely(Lcom/facebook/common/references/CloseableReference;)V
goto :goto_6
:cond_1a
return-void
.end method
.method private maybeClose(Ljava/util/ArrayList;Ljava/util/ArrayList;)V
.registers 3
.param p1 # Ljava/util/ArrayList;
.annotation runtime Ljavax/annotation/Nullable;
.end annotation
.end param
.param p2 # Ljava/util/ArrayList;
.annotation runtime Ljavax/annotation/Nullable;
.end annotation
.end param
.annotation system Ldalvik/annotation/MethodParameters;
accessFlags = {
0x0,
0x0
}
names = {
"oldEntries1",
"oldEntries2"
}
.end annotation
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/util/ArrayList<",
"Lcom/facebook/imagepipeline/cache/CountingMemoryCache$Entry<",
"TK;TV;>;>;",
"Ljava/util/ArrayList<",
"Lcom/facebook/imagepipeline/cache/CountingMemoryCache$Entry<",
"TK;TV;>;>;)V"
}
.end annotation
.line 590
invoke-direct {p0, p1}, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->maybeClose(Ljava/util/ArrayList;)V
.line 591
invoke-direct {p0, p2}, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->maybeClose(Ljava/util/ArrayList;)V
return-void
.end method
.method private maybeNotifyExclusiveEntriesRemoval(Ljava/util/ArrayList;Ljava/util/ArrayList;)V
.registers 3
.param p1 # Ljava/util/ArrayList;
.annotation runtime Ljavax/annotation/Nullable;
.end annotation
.end param
.param p2 # Ljava/util/ArrayList;
.annotation runtime Ljavax/annotation/Nullable;
.end annotation
.end param
.annotation system Ldalvik/annotation/MethodParameters;
accessFlags = {
0x0,
0x0
}
names = {
"entries1",
"entries2"
}
.end annotation
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/util/ArrayList<",
"Lcom/facebook/imagepipeline/cache/CountingMemoryCache$Entry<",
"TK;TV;>;>;",
"Ljava/util/ArrayList<",
"Lcom/facebook/imagepipeline/cache/CountingMemoryCache$Entry<",
"TK;TV;>;>;)V"
}
.end annotation
.line 604
invoke-direct {p0, p1}, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->maybeNotifyExclusiveEntryRemoval(Ljava/util/ArrayList;)V
.line 605
invoke-direct {p0, p2}, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->maybeNotifyExclusiveEntryRemoval(Ljava/util/ArrayList;)V
return-void
.end method
.method private static maybeNotifyExclusiveEntryInsertion(Lcom/facebook/imagepipeline/cache/CountingMemoryCache$Entry;)V
.registers 3
.param p0 # Lcom/facebook/imagepipeline/cache/CountingMemoryCache$Entry;
.annotation runtime Ljavax/annotation/Nullable;
.end annotation
.end param
.annotation system Ldalvik/annotation/MethodParameters;
accessFlags = {
0x0
}
names = {
"entry"
}
.end annotation
.annotation system Ldalvik/annotation/Signature;
value = {
"<K:",
"Ljava/lang/Object;",
"V:",
"Ljava/lang/Object;",
">(",
"Lcom/facebook/imagepipeline/cache/CountingMemoryCache$Entry<",
"TK;TV;>;)V"
}
.end annotation
if-eqz p0, :cond_e
.line 629
iget-object v0, p0, Lcom/facebook/imagepipeline/cache/CountingMemoryCache$Entry;->observer:Lcom/facebook/imagepipeline/cache/CountingMemoryCache$EntryStateObserver;
if-eqz v0, :cond_e
.line 630
iget-object v0, p0, Lcom/facebook/imagepipeline/cache/CountingMemoryCache$Entry;->observer:Lcom/facebook/imagepipeline/cache/CountingMemoryCache$EntryStateObserver;
iget-object p0, p0, Lcom/facebook/imagepipeline/cache/CountingMemoryCache$Entry;->key:Ljava/lang/Object;
const/4 v1, 0x1
invoke-interface {v0, p0, v1}, Lcom/facebook/imagepipeline/cache/CountingMemoryCache$EntryStateObserver;->onExclusivityChanged(Ljava/lang/Object;Z)V
:cond_e
return-void
.end method
.method private static maybeNotifyExclusiveEntryRemoval(Lcom/facebook/imagepipeline/cache/CountingMemoryCache$Entry;)V
.registers 3
.param p0 # Lcom/facebook/imagepipeline/cache/CountingMemoryCache$Entry;
.annotation runtime Ljavax/annotation/Nullable;
.end annotation
.end param
.annotation system Ldalvik/annotation/MethodParameters;
accessFlags = {
0x0
}
names = {
"entry"
}
.end annotation
.annotation system Ldalvik/annotation/Signature;
value = {
"<K:",
"Ljava/lang/Object;",
"V:",
"Ljava/lang/Object;",
">(",
"Lcom/facebook/imagepipeline/cache/CountingMemoryCache$Entry<",
"TK;TV;>;)V"
}
.end annotation
if-eqz p0, :cond_e
.line 623
iget-object v0, p0, Lcom/facebook/imagepipeline/cache/CountingMemoryCache$Entry;->observer:Lcom/facebook/imagepipeline/cache/CountingMemoryCache$EntryStateObserver;
if-eqz v0, :cond_e
.line 624
iget-object v0, p0, Lcom/facebook/imagepipeline/cache/CountingMemoryCache$Entry;->observer:Lcom/facebook/imagepipeline/cache/CountingMemoryCache$EntryStateObserver;
iget-object p0, p0, Lcom/facebook/imagepipeline/cache/CountingMemoryCache$Entry;->key:Ljava/lang/Object;
const/4 v1, 0x0
invoke-interface {v0, p0, v1}, Lcom/facebook/imagepipeline/cache/CountingMemoryCache$EntryStateObserver;->onExclusivityChanged(Ljava/lang/Object;Z)V
:cond_e
return-void
.end method
.method private maybeNotifyExclusiveEntryRemoval(Lcom/facebook/imagepipeline/cache/CountingMemoryCache$Entry;Lcom/facebook/imagepipeline/cache/CountingMemoryCache$Entry;)V
.registers 3
.param p1 # Lcom/facebook/imagepipeline/cache/CountingMemoryCache$Entry;
.annotation runtime Ljavax/annotation/Nullable;
.end annotation
.end param
.param p2 # Lcom/facebook/imagepipeline/cache/CountingMemoryCache$Entry;
.annotation runtime Ljavax/annotation/Nullable;
.end annotation
.end param
.annotation system Ldalvik/annotation/MethodParameters;
accessFlags = {
0x0,
0x0
}
names = {
"entry1",
"entry2"
}
.end annotation
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Lcom/facebook/imagepipeline/cache/CountingMemoryCache$Entry<",
"TK;TV;>;",
"Lcom/facebook/imagepipeline/cache/CountingMemoryCache$Entry<",
"TK;TV;>;)V"
}
.end annotation
.line 610
invoke-static {p1}, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->maybeNotifyExclusiveEntryRemoval(Lcom/facebook/imagepipeline/cache/CountingMemoryCache$Entry;)V
.line 611
invoke-static {p2}, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->maybeNotifyExclusiveEntryRemoval(Lcom/facebook/imagepipeline/cache/CountingMemoryCache$Entry;)V
return-void
.end method
.method private maybeNotifyExclusiveEntryRemoval(Ljava/util/ArrayList;)V
.registers 3
.param p1 # Ljava/util/ArrayList;
.annotation runtime Ljavax/annotation/Nullable;
.end annotation
.end param
.annotation system Ldalvik/annotation/MethodParameters;
accessFlags = {
0x0
}
names = {
"entries"
}
.end annotation
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/util/ArrayList<",
"Lcom/facebook/imagepipeline/cache/CountingMemoryCache$Entry<",
"TK;TV;>;>;)V"
}
.end annotation
if-eqz p1, :cond_16
.line 616
invoke-virtual {p1}, Ljava/util/ArrayList;->iterator()Ljava/util/Iterator;
move-result-object p1
:goto_6
invoke-interface {p1}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_16
invoke-interface {p1}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lcom/facebook/imagepipeline/cache/CountingMemoryCache$Entry;
.line 617
invoke-static {v0}, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->maybeNotifyExclusiveEntryRemoval(Lcom/facebook/imagepipeline/cache/CountingMemoryCache$Entry;)V
goto :goto_6
:cond_16
return-void
.end method
.method private declared-synchronized maybeUpdateCacheFraction(Ljava/lang/Object;)V
.registers 6
.annotation system Ldalvik/annotation/MethodParameters;
accessFlags = {
0x0
}
names = {
"key"
}
.end annotation
.annotation system Ldalvik/annotation/Signature;
value = {
"(TK;)V"
}
.end annotation
monitor-enter p0
.line 293
:try_start_1
iget-object v0, p0, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->mLeastFrequentlyUsedKeysGhostList:Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache$IntMapArrayList;
invoke-virtual {v0, p1}, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache$IntMapArrayList;->contains(Ljava/lang/Object;)Z
move-result v0
if-eqz v0, :cond_1c
.line 294
iget v0, p0, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->mLFUFractionPromil:I
iget v1, p0, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->mAdaptiveRatePromil:I
add-int v2, v0, v1
const/16 v3, 0x384
if-gt v2, v3, :cond_16
add-int/2addr v0, v1
.line 297
iput v0, p0, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->mLFUFractionPromil:I
.line 301
:cond_16
iget-object v0, p0, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->mLeastFrequentlyUsedKeysGhostList:Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache$IntMapArrayList;
invoke-virtual {v0, p1}, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache$IntMapArrayList;->increaseValueIfExists(Ljava/lang/Object;)V
goto :goto_34
.line 302
:cond_1c
iget v0, p0, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->mLFUFractionPromil:I
iget v1, p0, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->mAdaptiveRatePromil:I
sub-int/2addr v0, v1
const/16 v1, 0x64
if-lt v0, v1, :cond_34
iget-object v0, p0, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->mMostFrequentlyUsedKeysGhostList:Ljava/util/ArrayList;
.line 303
invoke-virtual {v0, p1}, Ljava/util/ArrayList;->contains(Ljava/lang/Object;)Z
move-result p1
if-eqz p1, :cond_34
.line 306
iget p1, p0, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->mLFUFractionPromil:I
iget v0, p0, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->mAdaptiveRatePromil:I
sub-int/2addr p1, v0
iput p1, p0, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->mLFUFractionPromil:I
:try_end_34
.catchall {:try_start_1 .. :try_end_34} :catchall_36
.line 308
:cond_34
:goto_34
monitor-exit p0
return-void
:catchall_36
move-exception p1
monitor-exit p0
throw p1
.end method
.method private declared-synchronized maybeUpdateCacheParams()V
.registers 5
monitor-enter p0
.line 502
:try_start_1
iget-wide v0, p0, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->mLastCacheParamsCheck:J
iget-object v2, p0, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->mMemoryCacheParams:Lcom/facebook/imagepipeline/cache/MemoryCacheParams;
iget-wide v2, v2, Lcom/facebook/imagepipeline/cache/MemoryCacheParams;->paramsCheckIntervalMs:J
add-long/2addr v0, v2
.line 503
invoke-static {}, Landroid/os/SystemClock;->uptimeMillis()J
move-result-wide v2
:try_end_c
.catchall {:try_start_1 .. :try_end_c} :catchall_2a
cmp-long v0, v0, v2
if-lez v0, :cond_12
.line 504
monitor-exit p0
return-void
.line 506
:cond_12
:try_start_12
invoke-static {}, Landroid/os/SystemClock;->uptimeMillis()J
move-result-wide v0
iput-wide v0, p0, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->mLastCacheParamsCheck:J
.line 507
iget-object v0, p0, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->mMemoryCacheParamsSupplier:Lcom/facebook/common/internal/Supplier;
.line 509
invoke-interface {v0}, Lcom/facebook/common/internal/Supplier;->get()Ljava/lang/Object;
move-result-object v0
const-string v1, "mMemoryCacheParamsSupplier returned null"
.line 508
invoke-static {v0, v1}, Lcom/facebook/common/internal/Preconditions;->checkNotNull(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v0
check-cast v0, Lcom/facebook/imagepipeline/cache/MemoryCacheParams;
iput-object v0, p0, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->mMemoryCacheParams:Lcom/facebook/imagepipeline/cache/MemoryCacheParams;
:try_end_28
.catchall {:try_start_12 .. :try_end_28} :catchall_2a
.line 510
monitor-exit p0
return-void
:catchall_2a
move-exception v0
monitor-exit p0
throw v0
.end method
.method private declared-synchronized newClientReference(Lcom/facebook/imagepipeline/cache/CountingMemoryCache$Entry;)Lcom/facebook/common/references/CloseableReference;
.registers 4
.annotation system Ldalvik/annotation/MethodParameters;
accessFlags = {
0x10
}
names = {
"entry"
}
.end annotation
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Lcom/facebook/imagepipeline/cache/CountingMemoryCache$Entry<",
"TK;TV;>;)",
"Lcom/facebook/common/references/CloseableReference<",
"TV;>;"
}
.end annotation
monitor-enter p0
.line 312
:try_start_1
invoke-direct {p0, p1}, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->increaseCounters(Lcom/facebook/imagepipeline/cache/CountingMemoryCache$Entry;)V
.line 313
iget-object v0, p1, Lcom/facebook/imagepipeline/cache/CountingMemoryCache$Entry;->valueRef:Lcom/facebook/common/references/CloseableReference;
.line 314
invoke-virtual {v0}, Lcom/facebook/common/references/CloseableReference;->get()Ljava/lang/Object;
move-result-object v0
new-instance v1, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache$2;
invoke-direct {v1, p0, p1}, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache$2;-><init>(Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;Lcom/facebook/imagepipeline/cache/CountingMemoryCache$Entry;)V
.line 313
invoke-static {v0, v1}, Lcom/facebook/common/references/CloseableReference;->of(Ljava/lang/Object;Lcom/facebook/common/references/ResourceReleaser;)Lcom/facebook/common/references/CloseableReference;
move-result-object p1
:try_end_13
.catchall {:try_start_1 .. :try_end_13} :catchall_15
monitor-exit p0
return-object p1
:catchall_15
move-exception p1
monitor-exit p0
throw p1
.end method
.method private declared-synchronized referenceToClose(Lcom/facebook/imagepipeline/cache/CountingMemoryCache$Entry;)Lcom/facebook/common/references/CloseableReference;
.registers 3
.annotation system Ldalvik/annotation/MethodParameters;
accessFlags = {
0x0
}
names = {
"entry"
}
.end annotation
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Lcom/facebook/imagepipeline/cache/CountingMemoryCache$Entry<",
"TK;TV;>;)",
"Lcom/facebook/common/references/CloseableReference<",
"TV;>;"
}
.end annotation
.annotation runtime Ljavax/annotation/Nullable;
.end annotation
monitor-enter p0
.line 681
:try_start_1
invoke-static {p1}, Lcom/facebook/common/internal/Preconditions;->checkNotNull(Ljava/lang/Object;)Ljava/lang/Object;
.line 682
iget-boolean v0, p1, Lcom/facebook/imagepipeline/cache/CountingMemoryCache$Entry;->isOrphan:Z
if-eqz v0, :cond_f
iget v0, p1, Lcom/facebook/imagepipeline/cache/CountingMemoryCache$Entry;->clientCount:I
if-nez v0, :cond_f
iget-object p1, p1, Lcom/facebook/imagepipeline/cache/CountingMemoryCache$Entry;->valueRef:Lcom/facebook/common/references/CloseableReference;
:try_end_e
.catchall {:try_start_1 .. :try_end_e} :catchall_12
goto :goto_10
:cond_f
const/4 p1, 0x0
:goto_10
monitor-exit p0
return-object p1
:catchall_12
move-exception p1
monitor-exit p0
throw p1
.end method
.method private releaseClientReference(Lcom/facebook/imagepipeline/cache/CountingMemoryCache$Entry;)V
.registers 4
.annotation system Ldalvik/annotation/MethodParameters;
accessFlags = {
0x10
}
names = {
"entry"
}
.end annotation
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Lcom/facebook/imagepipeline/cache/CountingMemoryCache$Entry<",
"TK;TV;>;)V"
}
.end annotation
.line 341
invoke-static {p1}, Lcom/facebook/common/internal/Preconditions;->checkNotNull(Ljava/lang/Object;)Ljava/lang/Object;
.line 344
monitor-enter p0
.line 345
:try_start_4
invoke-direct {p0, p1}, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->decreaseClientCount(Lcom/facebook/imagepipeline/cache/CountingMemoryCache$Entry;)V
.line 346
invoke-direct {p0, p1}, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->maybeAddToExclusives(Lcom/facebook/imagepipeline/cache/CountingMemoryCache$Entry;)Z
move-result v0
.line 347
invoke-direct {p0, p1}, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->referenceToClose(Lcom/facebook/imagepipeline/cache/CountingMemoryCache$Entry;)Lcom/facebook/common/references/CloseableReference;
move-result-object v1
.line 348
monitor-exit p0
:try_end_10
.catchall {:try_start_4 .. :try_end_10} :catchall_21
.line 349
invoke-static {v1}, Lcom/facebook/common/references/CloseableReference;->closeSafely(Lcom/facebook/common/references/CloseableReference;)V
if-eqz v0, :cond_16
goto :goto_17
:cond_16
const/4 p1, 0x0
.line 350
:goto_17
invoke-static {p1}, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->maybeNotifyExclusiveEntryInsertion(Lcom/facebook/imagepipeline/cache/CountingMemoryCache$Entry;)V
.line 351
invoke-direct {p0}, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->maybeUpdateCacheParams()V
.line 352
invoke-virtual {p0}, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->maybeEvictEntries()V
return-void
:catchall_21
move-exception p1
.line 348
:try_start_22
monitor-exit p0
:try_end_23
.catchall {:try_start_22 .. :try_end_23} :catchall_21
throw p1
.end method
.method private declared-synchronized trimExclusivelyOwnedEntries(IILcom/facebook/imagepipeline/cache/CountingLruMap;Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache$ArrayListType;)Ljava/util/ArrayList;
.registers 8
.annotation system Ldalvik/annotation/MethodParameters;
accessFlags = {
0x0,
0x0,
0x0,
0x0
}
names = {
"count",
"size",
"ExclusixeEntries",
"evictionType"
}
.end annotation
.annotation system Ldalvik/annotation/Signature;
value = {
"(II",
"Lcom/facebook/imagepipeline/cache/CountingLruMap<",
"TK;",
"Lcom/facebook/imagepipeline/cache/CountingMemoryCache$Entry<",
"TK;TV;>;>;",
"Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache$ArrayListType;",
")",
"Ljava/util/ArrayList<",
"Lcom/facebook/imagepipeline/cache/CountingMemoryCache$Entry<",
"TK;TV;>;>;"
}
.end annotation
.annotation runtime Ljavax/annotation/Nullable;
.end annotation
monitor-enter p0
const/4 v0, 0x0
.line 565
:try_start_2
invoke-static {p1, v0}, Ljava/lang/Math;->max(II)I
move-result p1
.line 566
invoke-static {p2, v0}, Ljava/lang/Math;->max(II)I
move-result p2
.line 568
invoke-virtual {p3}, Lcom/facebook/imagepipeline/cache/CountingLruMap;->getCount()I
move-result v0
if-gt v0, p1, :cond_19
invoke-virtual {p3}, Lcom/facebook/imagepipeline/cache/CountingLruMap;->getSizeInBytes()I
move-result v0
:try_end_14
.catchall {:try_start_2 .. :try_end_14} :catchall_51
if-gt v0, p2, :cond_19
const/4 p1, 0x0
.line 569
monitor-exit p0
return-object p1
.line 571
:cond_19
:try_start_19
new-instance v0, Ljava/util/ArrayList;
invoke-direct {v0}, Ljava/util/ArrayList;-><init>()V
.line 572
:goto_1e
invoke-virtual {p3}, Lcom/facebook/imagepipeline/cache/CountingLruMap;->getCount()I
move-result v1
if-gt v1, p1, :cond_2d
invoke-virtual {p3}, Lcom/facebook/imagepipeline/cache/CountingLruMap;->getSizeInBytes()I
move-result v1
:try_end_28
.catchall {:try_start_19 .. :try_end_28} :catchall_51
if-le v1, p2, :cond_2b
goto :goto_2d
.line 579
:cond_2b
monitor-exit p0
return-object v0
.line 573
:cond_2d
:goto_2d
:try_start_2d
invoke-virtual {p3}, Lcom/facebook/imagepipeline/cache/CountingLruMap;->getFirstKey()Ljava/lang/Object;
move-result-object v1
invoke-static {v1}, Lcom/facebook/common/internal/Preconditions;->checkNotNull(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v1
.line 575
invoke-virtual {p3, v1}, Lcom/facebook/imagepipeline/cache/CountingLruMap;->get(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v2
invoke-static {v2}, Lcom/facebook/common/internal/Preconditions;->checkNotNull(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v2
check-cast v2, Lcom/facebook/imagepipeline/cache/CountingMemoryCache$Entry;
iget v2, v2, Lcom/facebook/imagepipeline/cache/CountingMemoryCache$Entry;->accessCount:I
.line 574
invoke-direct {p0, v1, v2, p4}, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->addElementToGhostList(Ljava/lang/Object;ILcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache$ArrayListType;)V
.line 576
invoke-virtual {p3, v1}, Lcom/facebook/imagepipeline/cache/CountingLruMap;->remove(Ljava/lang/Object;)Ljava/lang/Object;
.line 577
iget-object v2, p0, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->mCachedEntries:Lcom/facebook/imagepipeline/cache/CountingLruMap;
invoke-virtual {v2, v1}, Lcom/facebook/imagepipeline/cache/CountingLruMap;->remove(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v1
invoke-virtual {v0, v1}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
:try_end_50
.catchall {:try_start_2d .. :try_end_50} :catchall_51
goto :goto_1e
:catchall_51
move-exception p1
monitor-exit p0
throw p1
.end method
.method private wrapValueDescriptor(Lcom/facebook/imagepipeline/cache/ValueDescriptor;)Lcom/facebook/imagepipeline/cache/ValueDescriptor;
.registers 3
.annotation system Ldalvik/annotation/MethodParameters;
accessFlags = {
0x10
}
names = {
"evictableValueDescriptor"
}
.end annotation
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Lcom/facebook/imagepipeline/cache/ValueDescriptor<",
"TV;>;)",
"Lcom/facebook/imagepipeline/cache/ValueDescriptor<",
"Lcom/facebook/imagepipeline/cache/CountingMemoryCache$Entry<",
"TK;TV;>;>;"
}
.end annotation
.line 168
new-instance v0, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache$1;
invoke-direct {v0, p0, p1}, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache$1;-><init>(Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;Lcom/facebook/imagepipeline/cache/ValueDescriptor;)V
return-object v0
.end method
# virtual methods
.method public cache(Ljava/lang/Object;Lcom/facebook/common/references/CloseableReference;)Lcom/facebook/common/references/CloseableReference;
.registers 4
.annotation system Ldalvik/annotation/MethodParameters;
accessFlags = {
0x10,
0x10
}
names = {
"key",
"valueRef"
}
.end annotation
.annotation system Ldalvik/annotation/Signature;
value = {
"(TK;",
"Lcom/facebook/common/references/CloseableReference<",
"TV;>;)",
"Lcom/facebook/common/references/CloseableReference<",
"TV;>;"
}
.end annotation
.annotation runtime Ljavax/annotation/Nullable;
.end annotation
const/4 v0, 0x0
.line 185
invoke-virtual {p0, p1, p2, v0}, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->cache(Ljava/lang/Object;Lcom/facebook/common/references/CloseableReference;Lcom/facebook/imagepipeline/cache/CountingMemoryCache$EntryStateObserver;)Lcom/facebook/common/references/CloseableReference;
move-result-object p1
return-object p1
.end method
.method public cache(Ljava/lang/Object;Lcom/facebook/common/references/CloseableReference;Lcom/facebook/imagepipeline/cache/CountingMemoryCache$EntryStateObserver;)Lcom/facebook/common/references/CloseableReference;
.registers 10
.param p3 # Lcom/facebook/imagepipeline/cache/CountingMemoryCache$EntryStateObserver;
.annotation runtime Ljavax/annotation/Nullable;
.end annotation
.end param
.annotation system Ldalvik/annotation/MethodParameters;
accessFlags = {
0x10,
0x10,
0x10
}
names = {
"key",
"valueRef",
"observer"
}
.end annotation
.annotation system Ldalvik/annotation/Signature;
value = {
"(TK;",
"Lcom/facebook/common/references/CloseableReference<",
"TV;>;",
"Lcom/facebook/imagepipeline/cache/CountingMemoryCache$EntryStateObserver<",
"TK;>;)",
"Lcom/facebook/common/references/CloseableReference<",
"TV;>;"
}
.end annotation
.annotation runtime Ljavax/annotation/Nullable;
.end annotation
.line 200
invoke-static {p1}, Lcom/facebook/common/internal/Preconditions;->checkNotNull(Ljava/lang/Object;)Ljava/lang/Object;
.line 201
invoke-static {p2}, Lcom/facebook/common/internal/Preconditions;->checkNotNull(Ljava/lang/Object;)Ljava/lang/Object;
.line 203
invoke-direct {p0}, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->maybeUpdateCacheParams()V
.line 209
monitor-enter p0
.line 211
:try_start_a
iget-object v0, p0, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->mLeastFrequentlyUsedExclusiveEntries:Lcom/facebook/imagepipeline/cache/CountingLruMap;
invoke-virtual {v0, p1}, Lcom/facebook/imagepipeline/cache/CountingLruMap;->remove(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v0
check-cast v0, Lcom/facebook/imagepipeline/cache/CountingMemoryCache$Entry;
.line 212
iget-object v1, p0, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->mMostFrequentlyUsedExclusiveEntries:Lcom/facebook/imagepipeline/cache/CountingLruMap;
invoke-virtual {v1, p1}, Lcom/facebook/imagepipeline/cache/CountingLruMap;->remove(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v1
check-cast v1, Lcom/facebook/imagepipeline/cache/CountingMemoryCache$Entry;
const/4 v2, 0x0
if-eqz v0, :cond_22
if-nez v1, :cond_20
goto :goto_22
:cond_20
move v3, v2
goto :goto_23
:cond_22
:goto_22
const/4 v3, 0x1
.line 214
:goto_23
invoke-static {v3}, Lcom/facebook/common/internal/Preconditions;->checkState(Z)V
.line 215
iget-object v3, p0, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->mCachedEntries:Lcom/facebook/imagepipeline/cache/CountingLruMap;
invoke-virtual {v3, p1}, Lcom/facebook/imagepipeline/cache/CountingLruMap;->remove(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v3
check-cast v3, Lcom/facebook/imagepipeline/cache/CountingMemoryCache$Entry;
const/4 v4, 0x0
if-eqz v3, :cond_39
.line 217
invoke-direct {p0, v3}, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->makeOrphan(Lcom/facebook/imagepipeline/cache/CountingMemoryCache$Entry;)V
.line 218
invoke-direct {p0, v3}, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->referenceToClose(Lcom/facebook/imagepipeline/cache/CountingMemoryCache$Entry;)Lcom/facebook/common/references/CloseableReference;
move-result-object v3
goto :goto_3a
:cond_39
move-object v3, v4
.line 221
:goto_3a
invoke-virtual {p2}, Lcom/facebook/common/references/CloseableReference;->get()Ljava/lang/Object;
move-result-object v5
invoke-direct {p0, v5}, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->canCacheNewValue(Ljava/lang/Object;)Z
move-result v5
if-eqz v5, :cond_5f
.line 222
invoke-static {p1, p2, p3}, Lcom/facebook/imagepipeline/cache/CountingMemoryCache$Entry;->of(Ljava/lang/Object;Lcom/facebook/common/references/CloseableReference;Lcom/facebook/imagepipeline/cache/CountingMemoryCache$EntryStateObserver;)Lcom/facebook/imagepipeline/cache/CountingMemoryCache$Entry;
move-result-object p2
.line 224
iget-object p3, p0, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->mLeastFrequentlyUsedKeysGhostList:Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache$IntMapArrayList;
invoke-virtual {p3, p1}, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache$IntMapArrayList;->getValue(Ljava/lang/Object;)Ljava/lang/Integer;
move-result-object p3
if-eqz p3, :cond_54
.line 225
invoke-virtual {p3}, Ljava/lang/Integer;->intValue()I
move-result v2
:cond_54
iput v2, p2, Lcom/facebook/imagepipeline/cache/CountingMemoryCache$Entry;->accessCount:I
.line 226
iget-object p3, p0, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->mCachedEntries:Lcom/facebook/imagepipeline/cache/CountingLruMap;
invoke-virtual {p3, p1, p2}, Lcom/facebook/imagepipeline/cache/CountingLruMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
.line 227
invoke-direct {p0, p2}, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->newClientReference(Lcom/facebook/imagepipeline/cache/CountingMemoryCache$Entry;)Lcom/facebook/common/references/CloseableReference;
move-result-object v4
.line 229
:cond_5f
monitor-exit p0
:try_end_60
.catchall {:try_start_a .. :try_end_60} :catchall_6a
.line 230
invoke-static {v3}, Lcom/facebook/common/references/CloseableReference;->closeSafely(Lcom/facebook/common/references/CloseableReference;)V
.line 231
invoke-direct {p0, v0, v1}, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->maybeNotifyExclusiveEntryRemoval(Lcom/facebook/imagepipeline/cache/CountingMemoryCache$Entry;Lcom/facebook/imagepipeline/cache/CountingMemoryCache$Entry;)V
.line 233
invoke-virtual {p0}, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->maybeEvictEntries()V
return-object v4
:catchall_6a
move-exception p1
.line 229
:try_start_6b
monitor-exit p0
:try_end_6c
.catchall {:try_start_6b .. :try_end_6c} :catchall_6a
throw p1
.end method
.method public clear()V
.registers 4
.line 428
monitor-enter p0
.line 429
:try_start_1
iget-object v0, p0, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->mLeastFrequentlyUsedExclusiveEntries:Lcom/facebook/imagepipeline/cache/CountingLruMap;
invoke-virtual {v0}, Lcom/facebook/imagepipeline/cache/CountingLruMap;->clear()Ljava/util/ArrayList;
move-result-object v0
.line 430
iget-object v1, p0, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->mMostFrequentlyUsedExclusiveEntries:Lcom/facebook/imagepipeline/cache/CountingLruMap;
invoke-virtual {v1}, Lcom/facebook/imagepipeline/cache/CountingLruMap;->clear()Ljava/util/ArrayList;
move-result-object v1
.line 431
iget-object v2, p0, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->mCachedEntries:Lcom/facebook/imagepipeline/cache/CountingLruMap;
invoke-virtual {v2}, Lcom/facebook/imagepipeline/cache/CountingLruMap;->clear()Ljava/util/ArrayList;
move-result-object v2
.line 432
invoke-direct {p0, v2}, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->makeOrphans(Ljava/util/ArrayList;)V
.line 433
monitor-exit p0
:try_end_17
.catchall {:try_start_1 .. :try_end_17} :catchall_21
.line 434
invoke-direct {p0, v2}, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->maybeClose(Ljava/util/ArrayList;)V
.line 435
invoke-direct {p0, v0, v1}, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->maybeNotifyExclusiveEntriesRemoval(Ljava/util/ArrayList;Ljava/util/ArrayList;)V
.line 436
invoke-direct {p0}, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->maybeUpdateCacheParams()V
return-void
:catchall_21
move-exception v0
.line 433
:try_start_22
monitor-exit p0
:try_end_23
.catchall {:try_start_22 .. :try_end_23} :catchall_21
throw v0
.end method
.method public declared-synchronized contains(Lcom/facebook/common/internal/Predicate;)Z
.registers 3
.annotation system Ldalvik/annotation/MethodParameters;
accessFlags = {
0x0
}
names = {
"predicate"
}
.end annotation
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Lcom/facebook/common/internal/Predicate<",
"TK;>;)Z"
}
.end annotation
monitor-enter p0
.line 447
:try_start_1
iget-object v0, p0, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->mCachedEntries:Lcom/facebook/imagepipeline/cache/CountingLruMap;
invoke-virtual {v0, p1}, Lcom/facebook/imagepipeline/cache/CountingLruMap;->getMatchingEntries(Lcom/facebook/common/internal/Predicate;)Ljava/util/ArrayList;
move-result-object p1
invoke-virtual {p1}, Ljava/util/ArrayList;->isEmpty()Z
move-result p1
:try_end_b
.catchall {:try_start_1 .. :try_end_b} :catchall_f
xor-int/lit8 p1, p1, 0x1
monitor-exit p0
return p1
:catchall_f
move-exception p1
monitor-exit p0
throw p1
.end method
.method public declared-synchronized contains(Ljava/lang/Object;)Z
.registers 3
.annotation system Ldalvik/annotation/MethodParameters;
accessFlags = {
0x0
}
names = {
"key"
}
.end annotation
.annotation system Ldalvik/annotation/Signature;
value = {
"(TK;)Z"
}
.end annotation
monitor-enter p0
.line 458
:try_start_1
iget-object v0, p0, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->mCachedEntries:Lcom/facebook/imagepipeline/cache/CountingLruMap;
invoke-virtual {v0, p1}, Lcom/facebook/imagepipeline/cache/CountingLruMap;->contains(Ljava/lang/Object;)Z
move-result p1
:try_end_7
.catchall {:try_start_1 .. :try_end_7} :catchall_9
monitor-exit p0
return p1
:catchall_9
move-exception p1
monitor-exit p0
throw p1
.end method
.method public get(Ljava/lang/Object;)Lcom/facebook/common/references/CloseableReference;
.registers 5
.annotation system Ldalvik/annotation/MethodParameters;
accessFlags = {
0x10
}
names = {
"key"
}
.end annotation
.annotation system Ldalvik/annotation/Signature;
value = {
"(TK;)",
"Lcom/facebook/common/references/CloseableReference<",
"TV;>;"
}
.end annotation
.annotation runtime Ljavax/annotation/Nullable;
.end annotation
.line 252
invoke-static {p1}, Lcom/facebook/common/internal/Preconditions;->checkNotNull(Ljava/lang/Object;)Ljava/lang/Object;
.line 256
monitor-enter p0
.line 257
:try_start_4
iget-object v0, p0, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->mLeastFrequentlyUsedExclusiveEntries:Lcom/facebook/imagepipeline/cache/CountingLruMap;
invoke-virtual {v0, p1}, Lcom/facebook/imagepipeline/cache/CountingLruMap;->remove(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v0
check-cast v0, Lcom/facebook/imagepipeline/cache/CountingMemoryCache$Entry;
.line 258
iget-object v1, p0, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->mMostFrequentlyUsedExclusiveEntries:Lcom/facebook/imagepipeline/cache/CountingLruMap;
invoke-virtual {v1, p1}, Lcom/facebook/imagepipeline/cache/CountingLruMap;->remove(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v1
check-cast v1, Lcom/facebook/imagepipeline/cache/CountingMemoryCache$Entry;
.line 259
iget-object v2, p0, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->mCachedEntries:Lcom/facebook/imagepipeline/cache/CountingLruMap;
invoke-virtual {v2, p1}, Lcom/facebook/imagepipeline/cache/CountingLruMap;->get(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v2
check-cast v2, Lcom/facebook/imagepipeline/cache/CountingMemoryCache$Entry;
if-eqz v2, :cond_23
.line 261
invoke-direct {p0, v2}, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->newClientReference(Lcom/facebook/imagepipeline/cache/CountingMemoryCache$Entry;)Lcom/facebook/common/references/CloseableReference;
move-result-object p1
goto :goto_27
.line 263
:cond_23
invoke-direct {p0, p1}, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->maybeUpdateCacheFraction(Ljava/lang/Object;)V
const/4 p1, 0x0
.line 265
:goto_27
monitor-exit p0
:try_end_28
.catchall {:try_start_4 .. :try_end_28} :catchall_32
.line 266
invoke-direct {p0, v0, v1}, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->maybeNotifyExclusiveEntryRemoval(Lcom/facebook/imagepipeline/cache/CountingMemoryCache$Entry;Lcom/facebook/imagepipeline/cache/CountingMemoryCache$Entry;)V
.line 267
invoke-direct {p0}, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->maybeUpdateCacheParams()V
.line 268
invoke-virtual {p0}, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->maybeEvictEntries()V
return-object p1
:catchall_32
move-exception p1
.line 265
:try_start_33
monitor-exit p0
:try_end_34
.catchall {:try_start_33 .. :try_end_34} :catchall_32
throw p1
.end method
.method public getCachedEntries()Lcom/facebook/imagepipeline/cache/CountingLruMap;
.registers 2
.line 801
iget-object v0, p0, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->mCachedEntries:Lcom/facebook/imagepipeline/cache/CountingLruMap;
return-object v0
.end method
.method public declared-synchronized getCount()I
.registers 2
monitor-enter p0
.line 688
:try_start_1
iget-object v0, p0, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->mCachedEntries:Lcom/facebook/imagepipeline/cache/CountingLruMap;
invoke-virtual {v0}, Lcom/facebook/imagepipeline/cache/CountingLruMap;->getCount()I
move-result v0
:try_end_7
.catchall {:try_start_1 .. :try_end_7} :catchall_9
monitor-exit p0
return v0
:catchall_9
move-exception v0
monitor-exit p0
throw v0
.end method
.method public declared-synchronized getEvictionQueueCount()I
.registers 3
monitor-enter p0
.line 713
:try_start_1
iget-object v0, p0, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->mLeastFrequentlyUsedExclusiveEntries:Lcom/facebook/imagepipeline/cache/CountingLruMap;
invoke-virtual {v0}, Lcom/facebook/imagepipeline/cache/CountingLruMap;->getCount()I
move-result v0
iget-object v1, p0, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->mMostFrequentlyUsedExclusiveEntries:Lcom/facebook/imagepipeline/cache/CountingLruMap;
.line 714
invoke-virtual {v1}, Lcom/facebook/imagepipeline/cache/CountingLruMap;->getCount()I
move-result v1
:try_end_d
.catchall {:try_start_1 .. :try_end_d} :catchall_10
add-int/2addr v0, v1
.line 713
monitor-exit p0
return v0
:catchall_10
move-exception v0
monitor-exit p0
throw v0
.end method
.method public declared-synchronized getEvictionQueueSizeInBytes()I
.registers 3
monitor-enter p0
.line 719
:try_start_1
iget-object v0, p0, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->mLeastFrequentlyUsedExclusiveEntries:Lcom/facebook/imagepipeline/cache/CountingLruMap;
invoke-virtual {v0}, Lcom/facebook/imagepipeline/cache/CountingLruMap;->getSizeInBytes()I
move-result v0
iget-object v1, p0, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->mMostFrequentlyUsedExclusiveEntries:Lcom/facebook/imagepipeline/cache/CountingLruMap;
.line 720
invoke-virtual {v1}, Lcom/facebook/imagepipeline/cache/CountingLruMap;->getSizeInBytes()I
move-result v1
:try_end_d
.catchall {:try_start_1 .. :try_end_d} :catchall_10
add-int/2addr v0, v1
.line 719
monitor-exit p0
return v0
:catchall_10
move-exception v0
monitor-exit p0
throw v0
.end method
.method public declared-synchronized getInUseCount()I
.registers 3
monitor-enter p0
.line 699
:try_start_1
iget-object v0, p0, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->mCachedEntries:Lcom/facebook/imagepipeline/cache/CountingLruMap;
invoke-virtual {v0}, Lcom/facebook/imagepipeline/cache/CountingLruMap;->getCount()I
move-result v0
iget-object v1, p0, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->mLeastFrequentlyUsedExclusiveEntries:Lcom/facebook/imagepipeline/cache/CountingLruMap;
.line 700
invoke-virtual {v1}, Lcom/facebook/imagepipeline/cache/CountingLruMap;->getCount()I
move-result v1
sub-int/2addr v0, v1
iget-object v1, p0, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->mMostFrequentlyUsedExclusiveEntries:Lcom/facebook/imagepipeline/cache/CountingLruMap;
.line 701
invoke-virtual {v1}, Lcom/facebook/imagepipeline/cache/CountingLruMap;->getCount()I
move-result v1
:try_end_14
.catchall {:try_start_1 .. :try_end_14} :catchall_17
sub-int/2addr v0, v1
.line 699
monitor-exit p0
return v0
:catchall_17
move-exception v0
monitor-exit p0
throw v0
.end method
.method public declared-synchronized getInUseSizeInBytes()I
.registers 3
monitor-enter p0
.line 706
:try_start_1
iget-object v0, p0, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->mCachedEntries:Lcom/facebook/imagepipeline/cache/CountingLruMap;
invoke-virtual {v0}, Lcom/facebook/imagepipeline/cache/CountingLruMap;->getSizeInBytes()I
move-result v0
iget-object v1, p0, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->mLeastFrequentlyUsedExclusiveEntries:Lcom/facebook/imagepipeline/cache/CountingLruMap;
.line 707
invoke-virtual {v1}, Lcom/facebook/imagepipeline/cache/CountingLruMap;->getSizeInBytes()I
move-result v1
sub-int/2addr v0, v1
iget-object v1, p0, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->mMostFrequentlyUsedExclusiveEntries:Lcom/facebook/imagepipeline/cache/CountingLruMap;
.line 708
invoke-virtual {v1}, Lcom/facebook/imagepipeline/cache/CountingLruMap;->getSizeInBytes()I
move-result v1
:try_end_14
.catchall {:try_start_1 .. :try_end_14} :catchall_17
sub-int/2addr v0, v1
.line 706
monitor-exit p0
return v0
:catchall_17
move-exception v0
monitor-exit p0
throw v0
.end method
.method public getMemoryCacheParams()Lcom/facebook/imagepipeline/cache/MemoryCacheParams;
.registers 2
.line 513
iget-object v0, p0, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->mMemoryCacheParams:Lcom/facebook/imagepipeline/cache/MemoryCacheParams;
return-object v0
.end method
.method public getOtherEntries()Ljava/util/Map;
.registers 2
.annotation system Ldalvik/annotation/Signature;
value = {
"()",
"Ljava/util/Map<",
"Landroid/graphics/Bitmap;",
"Ljava/lang/Object;",
">;"
}
.end annotation
.line 806
invoke-static {}, Ljava/util/Collections;->emptyMap()Ljava/util/Map;
move-result-object v0
return-object v0
.end method
.method public declared-synchronized getSizeInBytes()I
.registers 2
monitor-enter p0
.line 694
:try_start_1
iget-object v0, p0, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->mCachedEntries:Lcom/facebook/imagepipeline/cache/CountingLruMap;
invoke-virtual {v0}, Lcom/facebook/imagepipeline/cache/CountingLruMap;->getSizeInBytes()I
move-result v0
:try_end_7
.catchall {:try_start_1 .. :try_end_7} :catchall_9
monitor-exit p0
return v0
:catchall_9
move-exception v0
monitor-exit p0
throw v0
.end method
.method protected abstract logIllegalAdaptiveRate()V
.end method
.method protected abstract logIllegalLfuFraction()V
.end method
.method public maybeEvictEntries()V
.registers 10
.line 526
monitor-enter p0
.line 527
:try_start_1
iget-object v0, p0, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->mMemoryCacheParams:Lcom/facebook/imagepipeline/cache/MemoryCacheParams;
iget v0, v0, Lcom/facebook/imagepipeline/cache/MemoryCacheParams;->maxEvictionQueueEntries:I
iget-object v1, p0, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->mMemoryCacheParams:Lcom/facebook/imagepipeline/cache/MemoryCacheParams;
iget v1, v1, Lcom/facebook/imagepipeline/cache/MemoryCacheParams;->maxCacheEntries:I
.line 530
invoke-virtual {p0}, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->getInUseCount()I
move-result v2
sub-int/2addr v1, v2
.line 528
invoke-static {v0, v1}, Ljava/lang/Math;->min(II)I
move-result v0
.line 531
iget-object v1, p0, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->mMemoryCacheParams:Lcom/facebook/imagepipeline/cache/MemoryCacheParams;
iget v1, v1, Lcom/facebook/imagepipeline/cache/MemoryCacheParams;->maxEvictionQueueSize:I
iget-object v2, p0, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->mMemoryCacheParams:Lcom/facebook/imagepipeline/cache/MemoryCacheParams;
iget v2, v2, Lcom/facebook/imagepipeline/cache/MemoryCacheParams;->maxCacheSize:I
.line 534
invoke-virtual {p0}, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->getInUseSizeInBytes()I
move-result v3
sub-int/2addr v2, v3
.line 532
invoke-static {v1, v2}, Ljava/lang/Math;->min(II)I
move-result v1
int-to-long v2, v0
.line 535
iget v4, p0, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->mLFUFractionPromil:I
int-to-long v5, v4
mul-long/2addr v2, v5
const-wide/16 v5, 0x3e8
div-long/2addr v2, v5
long-to-int v2, v2
int-to-long v7, v1
int-to-long v3, v4
mul-long/2addr v7, v3
.line 536
div-long/2addr v7, v5
long-to-int v3, v7
.line 537
iget-object v4, p0, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->mLeastFrequentlyUsedExclusiveEntries:Lcom/facebook/imagepipeline/cache/CountingLruMap;
sget-object v5, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache$ArrayListType;->LFU:Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache$ArrayListType;
.line 538
invoke-direct {p0, v2, v3, v4, v5}, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->trimExclusivelyOwnedEntries(IILcom/facebook/imagepipeline/cache/CountingLruMap;Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache$ArrayListType;)Ljava/util/ArrayList;
move-result-object v4
sub-int/2addr v0, v2
sub-int/2addr v1, v3
.line 540
iget-object v2, p0, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->mMostFrequentlyUsedExclusiveEntries:Lcom/facebook/imagepipeline/cache/CountingLruMap;
sget-object v3, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache$ArrayListType;->MFU:Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache$ArrayListType;
.line 541
invoke-direct {p0, v0, v1, v2, v3}, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->trimExclusivelyOwnedEntries(IILcom/facebook/imagepipeline/cache/CountingLruMap;Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache$ArrayListType;)Ljava/util/ArrayList;
move-result-object v0
.line 546
invoke-direct {p0, v4, v0}, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->makeOrphans(Ljava/util/ArrayList;Ljava/util/ArrayList;)V
.line 547
monitor-exit p0
:try_end_47
.catchall {:try_start_1 .. :try_end_47} :catchall_4e
.line 548
invoke-direct {p0, v4, v0}, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->maybeClose(Ljava/util/ArrayList;Ljava/util/ArrayList;)V
.line 549
invoke-direct {p0, v4, v0}, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->maybeNotifyExclusiveEntriesRemoval(Ljava/util/ArrayList;Ljava/util/ArrayList;)V
return-void
:catchall_4e
move-exception v0
.line 547
:try_start_4f
monitor-exit p0
:try_end_50
.catchall {:try_start_4f .. :try_end_50} :catchall_4e
throw v0
.end method
.method public probe(Ljava/lang/Object;)V
.registers 3
.annotation system Ldalvik/annotation/MethodParameters;
accessFlags = {
0x0
}
names = {
"key"
}
.end annotation
.annotation system Ldalvik/annotation/Signature;
value = {
"(TK;)V"
}
.end annotation
.line 277
invoke-static {p1}, Lcom/facebook/common/internal/Preconditions;->checkNotNull(Ljava/lang/Object;)Ljava/lang/Object;
.line 279
monitor-enter p0
.line 280
:try_start_4
iget-object v0, p0, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->mLeastFrequentlyUsedExclusiveEntries:Lcom/facebook/imagepipeline/cache/CountingLruMap;
invoke-virtual {v0, p1}, Lcom/facebook/imagepipeline/cache/CountingLruMap;->remove(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v0
check-cast v0, Lcom/facebook/imagepipeline/cache/CountingMemoryCache$Entry;
if-nez v0, :cond_17
.line 282
iget-object v0, p0, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->mMostFrequentlyUsedExclusiveEntries:Lcom/facebook/imagepipeline/cache/CountingLruMap;
invoke-virtual {v0, p1}, Lcom/facebook/imagepipeline/cache/CountingLruMap;->remove(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object p1
move-object v0, p1
check-cast v0, Lcom/facebook/imagepipeline/cache/CountingMemoryCache$Entry;
:cond_17
if-eqz v0, :cond_1f
.line 285
invoke-direct {p0, v0}, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->increaseAccessCount(Lcom/facebook/imagepipeline/cache/CountingMemoryCache$Entry;)V
.line 286
invoke-direct {p0, v0}, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->maybeAddToExclusives(Lcom/facebook/imagepipeline/cache/CountingMemoryCache$Entry;)Z
.line 288
:cond_1f
monitor-exit p0
return-void
:catchall_21
move-exception p1
monitor-exit p0
:try_end_23
.catchall {:try_start_4 .. :try_end_23} :catchall_21
throw p1
.end method
.method public removeAll(Lcom/facebook/common/internal/Predicate;)I
.registers 5
.annotation system Ldalvik/annotation/MethodParameters;
accessFlags = {
0x0
}
names = {
"predicate"
}
.end annotation
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Lcom/facebook/common/internal/Predicate<",
"TK;>;)I"
}
.end annotation
.line 410
monitor-enter p0
.line 411
:try_start_1
iget-object v0, p0, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->mLeastFrequentlyUsedExclusiveEntries:Lcom/facebook/imagepipeline/cache/CountingLruMap;
invoke-virtual {v0, p1}, Lcom/facebook/imagepipeline/cache/CountingLruMap;->removeAll(Lcom/facebook/common/internal/Predicate;)Ljava/util/ArrayList;
move-result-object v0
.line 412
iget-object v1, p0, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->mMostFrequentlyUsedExclusiveEntries:Lcom/facebook/imagepipeline/cache/CountingLruMap;
invoke-virtual {v1, p1}, Lcom/facebook/imagepipeline/cache/CountingLruMap;->removeAll(Lcom/facebook/common/internal/Predicate;)Ljava/util/ArrayList;
move-result-object v1
.line 413
iget-object v2, p0, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->mCachedEntries:Lcom/facebook/imagepipeline/cache/CountingLruMap;
invoke-virtual {v2, p1}, Lcom/facebook/imagepipeline/cache/CountingLruMap;->removeAll(Lcom/facebook/common/internal/Predicate;)Ljava/util/ArrayList;
move-result-object p1
.line 414
invoke-direct {p0, p1}, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->makeOrphans(Ljava/util/ArrayList;)V
.line 415
monitor-exit p0
:try_end_17
.catchall {:try_start_1 .. :try_end_17} :catchall_28
.line 416
invoke-direct {p0, p1}, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->maybeClose(Ljava/util/ArrayList;)V
.line 417
invoke-direct {p0, v0, v1}, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->maybeNotifyExclusiveEntriesRemoval(Ljava/util/ArrayList;Ljava/util/ArrayList;)V
.line 418
invoke-direct {p0}, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->maybeUpdateCacheParams()V
.line 419
invoke-virtual {p0}, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->maybeEvictEntries()V
.line 420
invoke-virtual {p1}, Ljava/util/ArrayList;->size()I
move-result p1
return p1
:catchall_28
move-exception p1
.line 415
:try_start_29
monitor-exit p0
:try_end_2a
.catchall {:try_start_29 .. :try_end_2a} :catchall_28
throw p1
.end method
.method public reportData()Ljava/lang/String;
.registers 4
const-string v0, "CountingMemoryCache"
.line 724
invoke-static {v0}, Lcom/facebook/common/internal/Objects;->toStringHelper(Ljava/lang/String;)Lcom/facebook/common/internal/Objects$ToStringHelper;
move-result-object v0
iget-object v1, p0, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->mCachedEntries:Lcom/facebook/imagepipeline/cache/CountingLruMap;
.line 725
invoke-virtual {v1}, Lcom/facebook/imagepipeline/cache/CountingLruMap;->getCount()I
move-result v1
const-string v2, "cached_entries_count:"
invoke-virtual {v0, v2, v1}, Lcom/facebook/common/internal/Objects$ToStringHelper;->add(Ljava/lang/String;I)Lcom/facebook/common/internal/Objects$ToStringHelper;
move-result-object v0
.line 726
invoke-virtual {p0}, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->getEvictionQueueCount()I
move-result v1
const-string v2, "exclusive_entries_count"
invoke-virtual {v0, v2, v1}, Lcom/facebook/common/internal/Objects$ToStringHelper;->add(Ljava/lang/String;I)Lcom/facebook/common/internal/Objects$ToStringHelper;
move-result-object v0
.line 727
invoke-virtual {v0}, Lcom/facebook/common/internal/Objects$ToStringHelper;->toString()Ljava/lang/String;
move-result-object v0
return-object v0
.end method
.method public reuse(Ljava/lang/Object;)Lcom/facebook/common/references/CloseableReference;
.registers 6
.annotation system Ldalvik/annotation/MethodParameters;
accessFlags = {
0x0
}
names = {
"key"
}
.end annotation
.annotation system Ldalvik/annotation/Signature;
value = {
"(TK;)",
"Lcom/facebook/common/references/CloseableReference<",
"TV;>;"
}
.end annotation
.annotation runtime Ljavax/annotation/Nullable;
.end annotation
.line 375
invoke-static {p1}, Lcom/facebook/common/internal/Preconditions;->checkNotNull(Ljava/lang/Object;)Ljava/lang/Object;
.line 379
monitor-enter p0
.line 380
:try_start_4
iget-object v0, p0, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->mLeastFrequentlyUsedExclusiveEntries:Lcom/facebook/imagepipeline/cache/CountingLruMap;
invoke-virtual {v0, p1}, Lcom/facebook/imagepipeline/cache/CountingLruMap;->remove(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v0
check-cast v0, Lcom/facebook/imagepipeline/cache/CountingMemoryCache$Entry;
if-nez v0, :cond_16
.line 382
iget-object v0, p0, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->mMostFrequentlyUsedExclusiveEntries:Lcom/facebook/imagepipeline/cache/CountingLruMap;
invoke-virtual {v0, p1}, Lcom/facebook/imagepipeline/cache/CountingLruMap;->remove(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v0
check-cast v0, Lcom/facebook/imagepipeline/cache/CountingMemoryCache$Entry;
:cond_16
const/4 v1, 0x1
const/4 v2, 0x0
if-eqz v0, :cond_30
.line 385
iget-object v3, p0, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->mCachedEntries:Lcom/facebook/imagepipeline/cache/CountingLruMap;
invoke-virtual {v3, p1}, Lcom/facebook/imagepipeline/cache/CountingLruMap;->remove(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object p1
check-cast p1, Lcom/facebook/imagepipeline/cache/CountingMemoryCache$Entry;
.line 386
invoke-static {p1}, Lcom/facebook/common/internal/Preconditions;->checkNotNull(Ljava/lang/Object;)Ljava/lang/Object;
.line 387
iget v3, p1, Lcom/facebook/imagepipeline/cache/CountingMemoryCache$Entry;->clientCount:I
if-nez v3, :cond_2a
move v2, v1
:cond_2a
invoke-static {v2}, Lcom/facebook/common/internal/Preconditions;->checkState(Z)V
.line 390
iget-object p1, p1, Lcom/facebook/imagepipeline/cache/CountingMemoryCache$Entry;->valueRef:Lcom/facebook/common/references/CloseableReference;
goto :goto_32
:cond_30
const/4 p1, 0x0
move v1, v2
.line 393
:goto_32
monitor-exit p0
:try_end_33
.catchall {:try_start_4 .. :try_end_33} :catchall_39
if-eqz v1, :cond_38
.line 395
invoke-static {v0}, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->maybeNotifyExclusiveEntryRemoval(Lcom/facebook/imagepipeline/cache/CountingMemoryCache$Entry;)V
:cond_38
return-object p1
:catchall_39
move-exception p1
.line 393
:try_start_3a
monitor-exit p0
:try_end_3b
.catchall {:try_start_3a .. :try_end_3b} :catchall_39
throw p1
.end method
.method public trim(Lcom/facebook/common/memory/MemoryTrimType;)V
.registers 8
.annotation system Ldalvik/annotation/MethodParameters;
accessFlags = {
0x0
}
names = {
"trimType"
}
.end annotation
.line 469
iget-object v0, p0, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->mCacheTrimStrategy:Lcom/facebook/imagepipeline/cache/MemoryCache$CacheTrimStrategy;
invoke-interface {v0, p1}, Lcom/facebook/imagepipeline/cache/MemoryCache$CacheTrimStrategy;->getTrimRatio(Lcom/facebook/common/memory/MemoryTrimType;)D
move-result-wide v0
.line 470
monitor-enter p0
.line 471
:try_start_7
iget-object p1, p0, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->mCachedEntries:Lcom/facebook/imagepipeline/cache/CountingLruMap;
invoke-virtual {p1}, Lcom/facebook/imagepipeline/cache/CountingLruMap;->getSizeInBytes()I
move-result p1
int-to-double v2, p1
const-wide/high16 v4, 0x3ff0000000000000L # 1.0
sub-double/2addr v4, v0
mul-double/2addr v2, v4
double-to-int p1, v2
.line 472
invoke-virtual {p0}, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->getInUseSizeInBytes()I
move-result v0
sub-int/2addr p1, v0
const/4 v0, 0x0
invoke-static {v0, p1}, Ljava/lang/Math;->max(II)I
move-result p1
.line 473
iget-object v1, p0, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->mMostFrequentlyUsedExclusiveEntries:Lcom/facebook/imagepipeline/cache/CountingLruMap;
invoke-virtual {v1}, Lcom/facebook/imagepipeline/cache/CountingLruMap;->getSizeInBytes()I
move-result v1
sub-int v2, p1, v1
.line 475
invoke-static {v0, v2}, Ljava/lang/Math;->max(II)I
move-result v2
if-gt p1, v1, :cond_2c
goto :goto_2e
:cond_2c
move p1, v1
move v0, v2
.line 480
:goto_2e
iget-object v1, p0, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->mLeastFrequentlyUsedExclusiveEntries:Lcom/facebook/imagepipeline/cache/CountingLruMap;
sget-object v2, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache$ArrayListType;->LFU:Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache$ArrayListType;
const v3, 0x7fffffff
.line 481
invoke-direct {p0, v3, v0, v1, v2}, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->trimExclusivelyOwnedEntries(IILcom/facebook/imagepipeline/cache/CountingLruMap;Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache$ArrayListType;)Ljava/util/ArrayList;
move-result-object v0
.line 486
iget-object v1, p0, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->mMostFrequentlyUsedExclusiveEntries:Lcom/facebook/imagepipeline/cache/CountingLruMap;
sget-object v2, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache$ArrayListType;->MFU:Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache$ArrayListType;
.line 487
invoke-direct {p0, v3, p1, v1, v2}, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->trimExclusivelyOwnedEntries(IILcom/facebook/imagepipeline/cache/CountingLruMap;Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache$ArrayListType;)Ljava/util/ArrayList;
move-result-object p1
.line 492
invoke-direct {p0, v0, p1}, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->makeOrphans(Ljava/util/ArrayList;Ljava/util/ArrayList;)V
.line 493
monitor-exit p0
:try_end_45
.catchall {:try_start_7 .. :try_end_45} :catchall_52
.line 494
invoke-direct {p0, v0, p1}, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->maybeClose(Ljava/util/ArrayList;Ljava/util/ArrayList;)V
.line 495
invoke-direct {p0, v0, p1}, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->maybeNotifyExclusiveEntriesRemoval(Ljava/util/ArrayList;Ljava/util/ArrayList;)V
.line 496
invoke-direct {p0}, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->maybeUpdateCacheParams()V
.line 497
invoke-virtual {p0}, Lcom/facebook/imagepipeline/cache/AbstractAdaptiveCountingMemoryCache;->maybeEvictEntries()V
return-void
:catchall_52
move-exception p1
.line 493
:try_start_53
monitor-exit p0
:try_end_54
.catchall {:try_start_53 .. :try_end_54} :catchall_52
throw p1
.end method