PoolFactory.smali
.class public Lcom/facebook/imagepipeline/memory/PoolFactory;
.super Ljava/lang/Object;
.source "PoolFactory.java"
# instance fields
.field private mAshmemMemoryChunkPool:Lcom/facebook/imagepipeline/memory/MemoryChunkPool;
.annotation runtime Ljavax/annotation/Nullable;
.end annotation
.end field
.field private mBitmapPool:Lcom/facebook/imagepipeline/memory/BitmapPool;
.annotation runtime Ljavax/annotation/Nullable;
.end annotation
.end field
.field private mBufferMemoryChunkPool:Lcom/facebook/imagepipeline/memory/MemoryChunkPool;
.annotation runtime Ljavax/annotation/Nullable;
.end annotation
.end field
.field private final mConfig:Lcom/facebook/imagepipeline/memory/PoolConfig;
.field private mFlexByteArrayPool:Lcom/facebook/imagepipeline/memory/FlexByteArrayPool;
.annotation runtime Ljavax/annotation/Nullable;
.end annotation
.end field
.field private mNativeMemoryChunkPool:Lcom/facebook/imagepipeline/memory/MemoryChunkPool;
.annotation runtime Ljavax/annotation/Nullable;
.end annotation
.end field
.field private mPooledByteBufferFactory:Lcom/facebook/common/memory/PooledByteBufferFactory;
.annotation runtime Ljavax/annotation/Nullable;
.end annotation
.end field
.field private mPooledByteStreams:Lcom/facebook/common/memory/PooledByteStreams;
.annotation runtime Ljavax/annotation/Nullable;
.end annotation
.end field
.field private mSharedByteArray:Lcom/facebook/imagepipeline/memory/SharedByteArray;
.annotation runtime Ljavax/annotation/Nullable;
.end annotation
.end field
.field private mSmallByteArrayPool:Lcom/facebook/common/memory/ByteArrayPool;
.annotation runtime Ljavax/annotation/Nullable;
.end annotation
.end field
# direct methods
.method public constructor <init>(Lcom/facebook/imagepipeline/memory/PoolConfig;)V
.registers 2
.annotation system Ldalvik/annotation/MethodParameters;
accessFlags = {
0x0
}
names = {
"config"
}
.end annotation
.line 46
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 47
invoke-static {p1}, Lcom/facebook/common/internal/Preconditions;->checkNotNull(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object p1
check-cast p1, Lcom/facebook/imagepipeline/memory/PoolConfig;
iput-object p1, p0, Lcom/facebook/imagepipeline/memory/PoolFactory;->mConfig:Lcom/facebook/imagepipeline/memory/PoolConfig;
return-void
.end method
.method private getAshmemMemoryChunkPool()Lcom/facebook/imagepipeline/memory/MemoryChunkPool;
.registers 9
.annotation runtime Ljavax/annotation/Nullable;
.end annotation
.line 174
iget-object v0, p0, Lcom/facebook/imagepipeline/memory/PoolFactory;->mAshmemMemoryChunkPool:Lcom/facebook/imagepipeline/memory/MemoryChunkPool;
if-nez v0, :cond_52
const/4 v0, 0x0
:try_start_5
const-string v1, "com.facebook.imagepipeline.memory.AshmemMemoryChunkPool"
.line 176
invoke-static {v1}, Ljava/lang/Class;->forName(Ljava/lang/String;)Ljava/lang/Class;
move-result-object v1
const/4 v2, 0x3
new-array v3, v2, [Ljava/lang/Class;
.line 177
const-class v4, Lcom/facebook/common/memory/MemoryTrimmableRegistry;
const/4 v5, 0x0
aput-object v4, v3, v5
const-class v4, Lcom/facebook/imagepipeline/memory/PoolParams;
const/4 v6, 0x1
aput-object v4, v3, v6
const-class v4, Lcom/facebook/imagepipeline/memory/PoolStatsTracker;
const/4 v7, 0x2
aput-object v4, v3, v7
.line 178
invoke-virtual {v1, v3}, Ljava/lang/Class;->getConstructor([Ljava/lang/Class;)Ljava/lang/reflect/Constructor;
move-result-object v1
new-array v2, v2, [Ljava/lang/Object;
.line 180
iget-object v3, p0, Lcom/facebook/imagepipeline/memory/PoolFactory;->mConfig:Lcom/facebook/imagepipeline/memory/PoolConfig;
.line 183
invoke-virtual {v3}, Lcom/facebook/imagepipeline/memory/PoolConfig;->getMemoryTrimmableRegistry()Lcom/facebook/common/memory/MemoryTrimmableRegistry;
move-result-object v3
aput-object v3, v2, v5
iget-object v3, p0, Lcom/facebook/imagepipeline/memory/PoolFactory;->mConfig:Lcom/facebook/imagepipeline/memory/PoolConfig;
.line 184
invoke-virtual {v3}, Lcom/facebook/imagepipeline/memory/PoolConfig;->getMemoryChunkPoolParams()Lcom/facebook/imagepipeline/memory/PoolParams;
move-result-object v3
aput-object v3, v2, v6
iget-object v3, p0, Lcom/facebook/imagepipeline/memory/PoolFactory;->mConfig:Lcom/facebook/imagepipeline/memory/PoolConfig;
.line 185
invoke-virtual {v3}, Lcom/facebook/imagepipeline/memory/PoolConfig;->getMemoryChunkPoolStatsTracker()Lcom/facebook/imagepipeline/memory/PoolStatsTracker;
move-result-object v3
aput-object v3, v2, v7
.line 182
invoke-virtual {v1, v2}, Ljava/lang/reflect/Constructor;->newInstance([Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v1
check-cast v1, Lcom/facebook/imagepipeline/memory/MemoryChunkPool;
iput-object v1, p0, Lcom/facebook/imagepipeline/memory/PoolFactory;->mAshmemMemoryChunkPool:Lcom/facebook/imagepipeline/memory/MemoryChunkPool;
:try_end_43
.catch Ljava/lang/ClassNotFoundException; {:try_start_5 .. :try_end_43} :catch_50
.catch Ljava/lang/IllegalAccessException; {:try_start_5 .. :try_end_43} :catch_4d
.catch Ljava/lang/InstantiationException; {:try_start_5 .. :try_end_43} :catch_4a
.catch Ljava/lang/NoSuchMethodException; {:try_start_5 .. :try_end_43} :catch_47
.catch Ljava/lang/reflect/InvocationTargetException; {:try_start_5 .. :try_end_43} :catch_44
goto :goto_52
.line 195
:catch_44
iput-object v0, p0, Lcom/facebook/imagepipeline/memory/PoolFactory;->mAshmemMemoryChunkPool:Lcom/facebook/imagepipeline/memory/MemoryChunkPool;
goto :goto_52
.line 193
:catch_47
iput-object v0, p0, Lcom/facebook/imagepipeline/memory/PoolFactory;->mAshmemMemoryChunkPool:Lcom/facebook/imagepipeline/memory/MemoryChunkPool;
goto :goto_52
.line 191
:catch_4a
iput-object v0, p0, Lcom/facebook/imagepipeline/memory/PoolFactory;->mAshmemMemoryChunkPool:Lcom/facebook/imagepipeline/memory/MemoryChunkPool;
goto :goto_52
.line 189
:catch_4d
iput-object v0, p0, Lcom/facebook/imagepipeline/memory/PoolFactory;->mAshmemMemoryChunkPool:Lcom/facebook/imagepipeline/memory/MemoryChunkPool;
goto :goto_52
.line 187
:catch_50
iput-object v0, p0, Lcom/facebook/imagepipeline/memory/PoolFactory;->mAshmemMemoryChunkPool:Lcom/facebook/imagepipeline/memory/MemoryChunkPool;
.line 198
:cond_52
:goto_52
iget-object v0, p0, Lcom/facebook/imagepipeline/memory/PoolFactory;->mAshmemMemoryChunkPool:Lcom/facebook/imagepipeline/memory/MemoryChunkPool;
return-object v0
.end method
.method private getMemoryChunkPool(I)Lcom/facebook/imagepipeline/memory/MemoryChunkPool;
.registers 3
.annotation system Ldalvik/annotation/MethodParameters;
accessFlags = {
0x0
}
names = {
"memoryChunkType"
}
.end annotation
.annotation runtime Ljavax/annotation/Nullable;
.end annotation
if-eqz p1, :cond_1a
const/4 v0, 0x1
if-eq p1, v0, :cond_15
const/4 v0, 0x2
if-ne p1, v0, :cond_d
.line 252
invoke-direct {p0}, Lcom/facebook/imagepipeline/memory/PoolFactory;->getAshmemMemoryChunkPool()Lcom/facebook/imagepipeline/memory/MemoryChunkPool;
move-result-object p1
return-object p1
.line 254
:cond_d
new-instance p1, Ljava/lang/IllegalArgumentException;
const-string v0, "Invalid MemoryChunkType"
invoke-direct {p1, v0}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
throw p1
.line 250
:cond_15
invoke-virtual {p0}, Lcom/facebook/imagepipeline/memory/PoolFactory;->getBufferMemoryChunkPool()Lcom/facebook/imagepipeline/memory/MemoryChunkPool;
move-result-object p1
return-object p1
.line 248
:cond_1a
invoke-virtual {p0}, Lcom/facebook/imagepipeline/memory/PoolFactory;->getNativeMemoryChunkPool()Lcom/facebook/imagepipeline/memory/MemoryChunkPool;
move-result-object p1
return-object p1
.end method
# virtual methods
.method public getBitmapPool()Lcom/facebook/imagepipeline/memory/BitmapPool;
.registers 7
.line 51
iget-object v0, p0, Lcom/facebook/imagepipeline/memory/PoolFactory;->mBitmapPool:Lcom/facebook/imagepipeline/memory/BitmapPool;
if-nez v0, :cond_d2
.line 52
iget-object v0, p0, Lcom/facebook/imagepipeline/memory/PoolFactory;->mConfig:Lcom/facebook/imagepipeline/memory/PoolConfig;
invoke-virtual {v0}, Lcom/facebook/imagepipeline/memory/PoolConfig;->getBitmapPoolType()Ljava/lang/String;
move-result-object v0
const/4 v1, -0x1
.line 53
invoke-virtual {v0}, Ljava/lang/String;->hashCode()I
move-result v2
const/4 v3, 0x3
const/4 v4, 0x2
const/4 v5, 0x1
sparse-switch v2, :sswitch_data_d6
goto :goto_47
:sswitch_16
const-string v2, "dummy"
invoke-virtual {v0, v2}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v0
if-eqz v0, :cond_47
const/4 v1, 0x0
goto :goto_47
:sswitch_20
const-string v2, "dummy_with_tracking"
invoke-virtual {v0, v2}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v0
if-eqz v0, :cond_47
move v1, v5
goto :goto_47
:sswitch_2a
const-string v2, "experimental"
invoke-virtual {v0, v2}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v0
if-eqz v0, :cond_47
move v1, v4
goto :goto_47
:sswitch_34
const-string v2, "legacy"
invoke-virtual {v0, v2}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v0
if-eqz v0, :cond_47
const/4 v1, 0x4
goto :goto_47
:sswitch_3e
const-string v2, "legacy_default_params"
invoke-virtual {v0, v2}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v0
if-eqz v0, :cond_47
move v1, v3
:cond_47
:goto_47
if-eqz v1, :cond_cb
if-eq v1, v5, :cond_c3
if-eq v1, v4, :cond_9b
if-eq v1, v3, :cond_7d
.line 81
sget v0, Landroid/os/Build$VERSION;->SDK_INT:I
const/16 v1, 0x15
if-lt v0, v1, :cond_75
.line 82
new-instance v0, Lcom/facebook/imagepipeline/memory/BucketsBitmapPool;
iget-object v1, p0, Lcom/facebook/imagepipeline/memory/PoolFactory;->mConfig:Lcom/facebook/imagepipeline/memory/PoolConfig;
.line 84
invoke-virtual {v1}, Lcom/facebook/imagepipeline/memory/PoolConfig;->getMemoryTrimmableRegistry()Lcom/facebook/common/memory/MemoryTrimmableRegistry;
move-result-object v1
iget-object v2, p0, Lcom/facebook/imagepipeline/memory/PoolFactory;->mConfig:Lcom/facebook/imagepipeline/memory/PoolConfig;
.line 85
invoke-virtual {v2}, Lcom/facebook/imagepipeline/memory/PoolConfig;->getBitmapPoolParams()Lcom/facebook/imagepipeline/memory/PoolParams;
move-result-object v2
iget-object v3, p0, Lcom/facebook/imagepipeline/memory/PoolFactory;->mConfig:Lcom/facebook/imagepipeline/memory/PoolConfig;
.line 86
invoke-virtual {v3}, Lcom/facebook/imagepipeline/memory/PoolConfig;->getBitmapPoolStatsTracker()Lcom/facebook/imagepipeline/memory/PoolStatsTracker;
move-result-object v3
iget-object v4, p0, Lcom/facebook/imagepipeline/memory/PoolFactory;->mConfig:Lcom/facebook/imagepipeline/memory/PoolConfig;
.line 87
invoke-virtual {v4}, Lcom/facebook/imagepipeline/memory/PoolConfig;->isIgnoreBitmapPoolHardCap()Z
move-result v4
invoke-direct {v0, v1, v2, v3, v4}, Lcom/facebook/imagepipeline/memory/BucketsBitmapPool;-><init>(Lcom/facebook/common/memory/MemoryTrimmableRegistry;Lcom/facebook/imagepipeline/memory/PoolParams;Lcom/facebook/imagepipeline/memory/PoolStatsTracker;Z)V
iput-object v0, p0, Lcom/facebook/imagepipeline/memory/PoolFactory;->mBitmapPool:Lcom/facebook/imagepipeline/memory/BitmapPool;
goto :goto_d2
.line 89
:cond_75
new-instance v0, Lcom/facebook/imagepipeline/memory/DummyBitmapPool;
invoke-direct {v0}, Lcom/facebook/imagepipeline/memory/DummyBitmapPool;-><init>()V
iput-object v0, p0, Lcom/facebook/imagepipeline/memory/PoolFactory;->mBitmapPool:Lcom/facebook/imagepipeline/memory/BitmapPool;
goto :goto_d2
.line 71
:cond_7d
new-instance v0, Lcom/facebook/imagepipeline/memory/BucketsBitmapPool;
iget-object v1, p0, Lcom/facebook/imagepipeline/memory/PoolFactory;->mConfig:Lcom/facebook/imagepipeline/memory/PoolConfig;
.line 73
invoke-virtual {v1}, Lcom/facebook/imagepipeline/memory/PoolConfig;->getMemoryTrimmableRegistry()Lcom/facebook/common/memory/MemoryTrimmableRegistry;
move-result-object v1
.line 74
invoke-static {}, Lcom/facebook/imagepipeline/memory/DefaultBitmapPoolParams;->get()Lcom/facebook/imagepipeline/memory/PoolParams;
move-result-object v2
iget-object v3, p0, Lcom/facebook/imagepipeline/memory/PoolFactory;->mConfig:Lcom/facebook/imagepipeline/memory/PoolConfig;
.line 75
invoke-virtual {v3}, Lcom/facebook/imagepipeline/memory/PoolConfig;->getBitmapPoolStatsTracker()Lcom/facebook/imagepipeline/memory/PoolStatsTracker;
move-result-object v3
iget-object v4, p0, Lcom/facebook/imagepipeline/memory/PoolFactory;->mConfig:Lcom/facebook/imagepipeline/memory/PoolConfig;
.line 76
invoke-virtual {v4}, Lcom/facebook/imagepipeline/memory/PoolConfig;->isIgnoreBitmapPoolHardCap()Z
move-result v4
invoke-direct {v0, v1, v2, v3, v4}, Lcom/facebook/imagepipeline/memory/BucketsBitmapPool;-><init>(Lcom/facebook/common/memory/MemoryTrimmableRegistry;Lcom/facebook/imagepipeline/memory/PoolParams;Lcom/facebook/imagepipeline/memory/PoolStatsTracker;Z)V
iput-object v0, p0, Lcom/facebook/imagepipeline/memory/PoolFactory;->mBitmapPool:Lcom/facebook/imagepipeline/memory/BitmapPool;
goto :goto_d2
.line 61
:cond_9b
new-instance v0, Lcom/facebook/imagepipeline/memory/LruBitmapPool;
iget-object v1, p0, Lcom/facebook/imagepipeline/memory/PoolFactory;->mConfig:Lcom/facebook/imagepipeline/memory/PoolConfig;
.line 63
invoke-virtual {v1}, Lcom/facebook/imagepipeline/memory/PoolConfig;->getBitmapPoolMaxPoolSize()I
move-result v1
iget-object v2, p0, Lcom/facebook/imagepipeline/memory/PoolFactory;->mConfig:Lcom/facebook/imagepipeline/memory/PoolConfig;
.line 64
invoke-virtual {v2}, Lcom/facebook/imagepipeline/memory/PoolConfig;->getBitmapPoolMaxBitmapSize()I
move-result v2
.line 65
invoke-static {}, Lcom/facebook/imagepipeline/memory/NoOpPoolStatsTracker;->getInstance()Lcom/facebook/imagepipeline/memory/NoOpPoolStatsTracker;
move-result-object v3
iget-object v4, p0, Lcom/facebook/imagepipeline/memory/PoolFactory;->mConfig:Lcom/facebook/imagepipeline/memory/PoolConfig;
.line 66
invoke-virtual {v4}, Lcom/facebook/imagepipeline/memory/PoolConfig;->isRegisterLruBitmapPoolAsMemoryTrimmable()Z
move-result v4
if-eqz v4, :cond_bc
iget-object v4, p0, Lcom/facebook/imagepipeline/memory/PoolFactory;->mConfig:Lcom/facebook/imagepipeline/memory/PoolConfig;
.line 67
invoke-virtual {v4}, Lcom/facebook/imagepipeline/memory/PoolConfig;->getMemoryTrimmableRegistry()Lcom/facebook/common/memory/MemoryTrimmableRegistry;
move-result-object v4
goto :goto_bd
:cond_bc
const/4 v4, 0x0
:goto_bd
invoke-direct {v0, v1, v2, v3, v4}, Lcom/facebook/imagepipeline/memory/LruBitmapPool;-><init>(IILcom/facebook/imagepipeline/memory/PoolStatsTracker;Lcom/facebook/common/memory/MemoryTrimmableRegistry;)V
iput-object v0, p0, Lcom/facebook/imagepipeline/memory/PoolFactory;->mBitmapPool:Lcom/facebook/imagepipeline/memory/BitmapPool;
goto :goto_d2
.line 58
:cond_c3
new-instance v0, Lcom/facebook/imagepipeline/memory/DummyTrackingInUseBitmapPool;
invoke-direct {v0}, Lcom/facebook/imagepipeline/memory/DummyTrackingInUseBitmapPool;-><init>()V
iput-object v0, p0, Lcom/facebook/imagepipeline/memory/PoolFactory;->mBitmapPool:Lcom/facebook/imagepipeline/memory/BitmapPool;
goto :goto_d2
.line 55
:cond_cb
new-instance v0, Lcom/facebook/imagepipeline/memory/DummyBitmapPool;
invoke-direct {v0}, Lcom/facebook/imagepipeline/memory/DummyBitmapPool;-><init>()V
iput-object v0, p0, Lcom/facebook/imagepipeline/memory/PoolFactory;->mBitmapPool:Lcom/facebook/imagepipeline/memory/BitmapPool;
.line 93
:cond_d2
:goto_d2
iget-object v0, p0, Lcom/facebook/imagepipeline/memory/PoolFactory;->mBitmapPool:Lcom/facebook/imagepipeline/memory/BitmapPool;
return-object v0
nop
:sswitch_data_d6
.sparse-switch
-0x6f64eb86 -> :sswitch_3e
-0x41f50c37 -> :sswitch_34
-0x181d2318 -> :sswitch_2a
-0x17f85147 -> :sswitch_20
0x5b804a8 -> :sswitch_16
.end sparse-switch
.end method
.method public getBufferMemoryChunkPool()Lcom/facebook/imagepipeline/memory/MemoryChunkPool;
.registers 9
.annotation runtime Ljavax/annotation/Nullable;
.end annotation
.line 98
iget-object v0, p0, Lcom/facebook/imagepipeline/memory/PoolFactory;->mBufferMemoryChunkPool:Lcom/facebook/imagepipeline/memory/MemoryChunkPool;
if-nez v0, :cond_52
const/4 v0, 0x0
:try_start_5
const-string v1, "com.facebook.imagepipeline.memory.BufferMemoryChunkPool"
.line 100
invoke-static {v1}, Ljava/lang/Class;->forName(Ljava/lang/String;)Ljava/lang/Class;
move-result-object v1
const/4 v2, 0x3
new-array v3, v2, [Ljava/lang/Class;
.line 101
const-class v4, Lcom/facebook/common/memory/MemoryTrimmableRegistry;
const/4 v5, 0x0
aput-object v4, v3, v5
const-class v4, Lcom/facebook/imagepipeline/memory/PoolParams;
const/4 v6, 0x1
aput-object v4, v3, v6
const-class v4, Lcom/facebook/imagepipeline/memory/PoolStatsTracker;
const/4 v7, 0x2
aput-object v4, v3, v7
.line 102
invoke-virtual {v1, v3}, Ljava/lang/Class;->getConstructor([Ljava/lang/Class;)Ljava/lang/reflect/Constructor;
move-result-object v1
new-array v2, v2, [Ljava/lang/Object;
.line 104
iget-object v3, p0, Lcom/facebook/imagepipeline/memory/PoolFactory;->mConfig:Lcom/facebook/imagepipeline/memory/PoolConfig;
.line 107
invoke-virtual {v3}, Lcom/facebook/imagepipeline/memory/PoolConfig;->getMemoryTrimmableRegistry()Lcom/facebook/common/memory/MemoryTrimmableRegistry;
move-result-object v3
aput-object v3, v2, v5
iget-object v3, p0, Lcom/facebook/imagepipeline/memory/PoolFactory;->mConfig:Lcom/facebook/imagepipeline/memory/PoolConfig;
.line 108
invoke-virtual {v3}, Lcom/facebook/imagepipeline/memory/PoolConfig;->getMemoryChunkPoolParams()Lcom/facebook/imagepipeline/memory/PoolParams;
move-result-object v3
aput-object v3, v2, v6
iget-object v3, p0, Lcom/facebook/imagepipeline/memory/PoolFactory;->mConfig:Lcom/facebook/imagepipeline/memory/PoolConfig;
.line 109
invoke-virtual {v3}, Lcom/facebook/imagepipeline/memory/PoolConfig;->getMemoryChunkPoolStatsTracker()Lcom/facebook/imagepipeline/memory/PoolStatsTracker;
move-result-object v3
aput-object v3, v2, v7
.line 106
invoke-virtual {v1, v2}, Ljava/lang/reflect/Constructor;->newInstance([Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v1
check-cast v1, Lcom/facebook/imagepipeline/memory/MemoryChunkPool;
iput-object v1, p0, Lcom/facebook/imagepipeline/memory/PoolFactory;->mBufferMemoryChunkPool:Lcom/facebook/imagepipeline/memory/MemoryChunkPool;
:try_end_43
.catch Ljava/lang/ClassNotFoundException; {:try_start_5 .. :try_end_43} :catch_50
.catch Ljava/lang/IllegalAccessException; {:try_start_5 .. :try_end_43} :catch_4d
.catch Ljava/lang/InstantiationException; {:try_start_5 .. :try_end_43} :catch_4a
.catch Ljava/lang/NoSuchMethodException; {:try_start_5 .. :try_end_43} :catch_47
.catch Ljava/lang/reflect/InvocationTargetException; {:try_start_5 .. :try_end_43} :catch_44
goto :goto_52
.line 119
:catch_44
iput-object v0, p0, Lcom/facebook/imagepipeline/memory/PoolFactory;->mBufferMemoryChunkPool:Lcom/facebook/imagepipeline/memory/MemoryChunkPool;
goto :goto_52
.line 117
:catch_47
iput-object v0, p0, Lcom/facebook/imagepipeline/memory/PoolFactory;->mBufferMemoryChunkPool:Lcom/facebook/imagepipeline/memory/MemoryChunkPool;
goto :goto_52
.line 115
:catch_4a
iput-object v0, p0, Lcom/facebook/imagepipeline/memory/PoolFactory;->mBufferMemoryChunkPool:Lcom/facebook/imagepipeline/memory/MemoryChunkPool;
goto :goto_52
.line 113
:catch_4d
iput-object v0, p0, Lcom/facebook/imagepipeline/memory/PoolFactory;->mBufferMemoryChunkPool:Lcom/facebook/imagepipeline/memory/MemoryChunkPool;
goto :goto_52
.line 111
:catch_50
iput-object v0, p0, Lcom/facebook/imagepipeline/memory/PoolFactory;->mBufferMemoryChunkPool:Lcom/facebook/imagepipeline/memory/MemoryChunkPool;
.line 122
:cond_52
:goto_52
iget-object v0, p0, Lcom/facebook/imagepipeline/memory/PoolFactory;->mBufferMemoryChunkPool:Lcom/facebook/imagepipeline/memory/MemoryChunkPool;
return-object v0
.end method
.method public getFlexByteArrayPool()Lcom/facebook/imagepipeline/memory/FlexByteArrayPool;
.registers 4
.line 126
iget-object v0, p0, Lcom/facebook/imagepipeline/memory/PoolFactory;->mFlexByteArrayPool:Lcom/facebook/imagepipeline/memory/FlexByteArrayPool;
if-nez v0, :cond_17
.line 127
new-instance v0, Lcom/facebook/imagepipeline/memory/FlexByteArrayPool;
iget-object v1, p0, Lcom/facebook/imagepipeline/memory/PoolFactory;->mConfig:Lcom/facebook/imagepipeline/memory/PoolConfig;
.line 129
invoke-virtual {v1}, Lcom/facebook/imagepipeline/memory/PoolConfig;->getMemoryTrimmableRegistry()Lcom/facebook/common/memory/MemoryTrimmableRegistry;
move-result-object v1
iget-object v2, p0, Lcom/facebook/imagepipeline/memory/PoolFactory;->mConfig:Lcom/facebook/imagepipeline/memory/PoolConfig;
invoke-virtual {v2}, Lcom/facebook/imagepipeline/memory/PoolConfig;->getFlexByteArrayPoolParams()Lcom/facebook/imagepipeline/memory/PoolParams;
move-result-object v2
invoke-direct {v0, v1, v2}, Lcom/facebook/imagepipeline/memory/FlexByteArrayPool;-><init>(Lcom/facebook/common/memory/MemoryTrimmableRegistry;Lcom/facebook/imagepipeline/memory/PoolParams;)V
iput-object v0, p0, Lcom/facebook/imagepipeline/memory/PoolFactory;->mFlexByteArrayPool:Lcom/facebook/imagepipeline/memory/FlexByteArrayPool;
.line 131
:cond_17
iget-object v0, p0, Lcom/facebook/imagepipeline/memory/PoolFactory;->mFlexByteArrayPool:Lcom/facebook/imagepipeline/memory/FlexByteArrayPool;
return-object v0
.end method
.method public getFlexByteArrayPoolMaxNumThreads()I
.registers 2
.line 135
iget-object v0, p0, Lcom/facebook/imagepipeline/memory/PoolFactory;->mConfig:Lcom/facebook/imagepipeline/memory/PoolConfig;
invoke-virtual {v0}, Lcom/facebook/imagepipeline/memory/PoolConfig;->getFlexByteArrayPoolParams()Lcom/facebook/imagepipeline/memory/PoolParams;
move-result-object v0
iget v0, v0, Lcom/facebook/imagepipeline/memory/PoolParams;->maxNumThreads:I
return v0
.end method
.method public getNativeMemoryChunkPool()Lcom/facebook/imagepipeline/memory/MemoryChunkPool;
.registers 11
.annotation runtime Ljavax/annotation/Nullable;
.end annotation
const-string v0, ""
const-string v1, "PoolFactory"
.line 140
iget-object v2, p0, Lcom/facebook/imagepipeline/memory/PoolFactory;->mNativeMemoryChunkPool:Lcom/facebook/imagepipeline/memory/MemoryChunkPool;
if-nez v2, :cond_6a
const/4 v2, 0x0
:try_start_9
const-string v3, "com.facebook.imagepipeline.memory.NativeMemoryChunkPool"
.line 142
invoke-static {v3}, Ljava/lang/Class;->forName(Ljava/lang/String;)Ljava/lang/Class;
move-result-object v3
const/4 v4, 0x3
new-array v5, v4, [Ljava/lang/Class;
.line 143
const-class v6, Lcom/facebook/common/memory/MemoryTrimmableRegistry;
const/4 v7, 0x0
aput-object v6, v5, v7
const-class v6, Lcom/facebook/imagepipeline/memory/PoolParams;
const/4 v8, 0x1
aput-object v6, v5, v8
const-class v6, Lcom/facebook/imagepipeline/memory/PoolStatsTracker;
const/4 v9, 0x2
aput-object v6, v5, v9
.line 144
invoke-virtual {v3, v5}, Ljava/lang/Class;->getConstructor([Ljava/lang/Class;)Ljava/lang/reflect/Constructor;
move-result-object v3
new-array v4, v4, [Ljava/lang/Object;
.line 146
iget-object v5, p0, Lcom/facebook/imagepipeline/memory/PoolFactory;->mConfig:Lcom/facebook/imagepipeline/memory/PoolConfig;
.line 149
invoke-virtual {v5}, Lcom/facebook/imagepipeline/memory/PoolConfig;->getMemoryTrimmableRegistry()Lcom/facebook/common/memory/MemoryTrimmableRegistry;
move-result-object v5
aput-object v5, v4, v7
iget-object v5, p0, Lcom/facebook/imagepipeline/memory/PoolFactory;->mConfig:Lcom/facebook/imagepipeline/memory/PoolConfig;
.line 150
invoke-virtual {v5}, Lcom/facebook/imagepipeline/memory/PoolConfig;->getMemoryChunkPoolParams()Lcom/facebook/imagepipeline/memory/PoolParams;
move-result-object v5
aput-object v5, v4, v8
iget-object v5, p0, Lcom/facebook/imagepipeline/memory/PoolFactory;->mConfig:Lcom/facebook/imagepipeline/memory/PoolConfig;
.line 151
invoke-virtual {v5}, Lcom/facebook/imagepipeline/memory/PoolConfig;->getMemoryChunkPoolStatsTracker()Lcom/facebook/imagepipeline/memory/PoolStatsTracker;
move-result-object v5
aput-object v5, v4, v9
.line 148
invoke-virtual {v3, v4}, Ljava/lang/reflect/Constructor;->newInstance([Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v3
check-cast v3, Lcom/facebook/imagepipeline/memory/MemoryChunkPool;
iput-object v3, p0, Lcom/facebook/imagepipeline/memory/PoolFactory;->mNativeMemoryChunkPool:Lcom/facebook/imagepipeline/memory/MemoryChunkPool;
:try_end_47
.catch Ljava/lang/ClassNotFoundException; {:try_start_9 .. :try_end_47} :catch_64
.catch Ljava/lang/IllegalAccessException; {:try_start_9 .. :try_end_47} :catch_5d
.catch Ljava/lang/InstantiationException; {:try_start_9 .. :try_end_47} :catch_56
.catch Ljava/lang/NoSuchMethodException; {:try_start_9 .. :try_end_47} :catch_4f
.catch Ljava/lang/reflect/InvocationTargetException; {:try_start_9 .. :try_end_47} :catch_48
goto :goto_6a
:catch_48
move-exception v3
.line 165
invoke-static {v1, v0, v3}, Lcom/facebook/common/logging/FLog;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V
.line 166
iput-object v2, p0, Lcom/facebook/imagepipeline/memory/PoolFactory;->mNativeMemoryChunkPool:Lcom/facebook/imagepipeline/memory/MemoryChunkPool;
goto :goto_6a
:catch_4f
move-exception v3
.line 162
invoke-static {v1, v0, v3}, Lcom/facebook/common/logging/FLog;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V
.line 163
iput-object v2, p0, Lcom/facebook/imagepipeline/memory/PoolFactory;->mNativeMemoryChunkPool:Lcom/facebook/imagepipeline/memory/MemoryChunkPool;
goto :goto_6a
:catch_56
move-exception v3
.line 159
invoke-static {v1, v0, v3}, Lcom/facebook/common/logging/FLog;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V
.line 160
iput-object v2, p0, Lcom/facebook/imagepipeline/memory/PoolFactory;->mNativeMemoryChunkPool:Lcom/facebook/imagepipeline/memory/MemoryChunkPool;
goto :goto_6a
:catch_5d
move-exception v3
.line 156
invoke-static {v1, v0, v3}, Lcom/facebook/common/logging/FLog;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V
.line 157
iput-object v2, p0, Lcom/facebook/imagepipeline/memory/PoolFactory;->mNativeMemoryChunkPool:Lcom/facebook/imagepipeline/memory/MemoryChunkPool;
goto :goto_6a
:catch_64
move-exception v3
.line 153
invoke-static {v1, v0, v3}, Lcom/facebook/common/logging/FLog;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V
.line 154
iput-object v2, p0, Lcom/facebook/imagepipeline/memory/PoolFactory;->mNativeMemoryChunkPool:Lcom/facebook/imagepipeline/memory/MemoryChunkPool;
.line 169
:cond_6a
:goto_6a
iget-object v0, p0, Lcom/facebook/imagepipeline/memory/PoolFactory;->mNativeMemoryChunkPool:Lcom/facebook/imagepipeline/memory/MemoryChunkPool;
return-object v0
.end method
.method public getPooledByteBufferFactory()Lcom/facebook/common/memory/PooledByteBufferFactory;
.registers 2
.line 203
invoke-static {}, Lcom/facebook/imagepipeline/core/NativeCodeSetup;->getUseNativeCode()Z
move-result v0
xor-int/lit8 v0, v0, 0x1
.line 202
invoke-virtual {p0, v0}, Lcom/facebook/imagepipeline/memory/PoolFactory;->getPooledByteBufferFactory(I)Lcom/facebook/common/memory/PooledByteBufferFactory;
move-result-object v0
return-object v0
.end method
.method public getPooledByteBufferFactory(I)Lcom/facebook/common/memory/PooledByteBufferFactory;
.registers 5
.annotation system Ldalvik/annotation/MethodParameters;
accessFlags = {
0x0
}
names = {
"memoryChunkType"
}
.end annotation
.line 207
iget-object v0, p0, Lcom/facebook/imagepipeline/memory/PoolFactory;->mPooledByteBufferFactory:Lcom/facebook/common/memory/PooledByteBufferFactory;
if-nez v0, :cond_27
.line 208
invoke-direct {p0, p1}, Lcom/facebook/imagepipeline/memory/PoolFactory;->getMemoryChunkPool(I)Lcom/facebook/imagepipeline/memory/MemoryChunkPool;
move-result-object v0
.line 209
new-instance v1, Ljava/lang/StringBuilder;
invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
const-string v2, "failed to get pool for chunk type: "
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v1, p1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object p1
invoke-static {v0, p1}, Lcom/facebook/common/internal/Preconditions;->checkNotNull(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
.line 211
new-instance p1, Lcom/facebook/imagepipeline/memory/MemoryPooledByteBufferFactory;
.line 212
invoke-virtual {p0}, Lcom/facebook/imagepipeline/memory/PoolFactory;->getPooledByteStreams()Lcom/facebook/common/memory/PooledByteStreams;
move-result-object v1
invoke-direct {p1, v0, v1}, Lcom/facebook/imagepipeline/memory/MemoryPooledByteBufferFactory;-><init>(Lcom/facebook/imagepipeline/memory/MemoryChunkPool;Lcom/facebook/common/memory/PooledByteStreams;)V
iput-object p1, p0, Lcom/facebook/imagepipeline/memory/PoolFactory;->mPooledByteBufferFactory:Lcom/facebook/common/memory/PooledByteBufferFactory;
.line 214
:cond_27
iget-object p1, p0, Lcom/facebook/imagepipeline/memory/PoolFactory;->mPooledByteBufferFactory:Lcom/facebook/common/memory/PooledByteBufferFactory;
return-object p1
.end method
.method public getPooledByteStreams()Lcom/facebook/common/memory/PooledByteStreams;
.registers 3
.line 218
iget-object v0, p0, Lcom/facebook/imagepipeline/memory/PoolFactory;->mPooledByteStreams:Lcom/facebook/common/memory/PooledByteStreams;
if-nez v0, :cond_f
.line 219
new-instance v0, Lcom/facebook/common/memory/PooledByteStreams;
invoke-virtual {p0}, Lcom/facebook/imagepipeline/memory/PoolFactory;->getSmallByteArrayPool()Lcom/facebook/common/memory/ByteArrayPool;
move-result-object v1
invoke-direct {v0, v1}, Lcom/facebook/common/memory/PooledByteStreams;-><init>(Lcom/facebook/common/memory/ByteArrayPool;)V
iput-object v0, p0, Lcom/facebook/imagepipeline/memory/PoolFactory;->mPooledByteStreams:Lcom/facebook/common/memory/PooledByteStreams;
.line 221
:cond_f
iget-object v0, p0, Lcom/facebook/imagepipeline/memory/PoolFactory;->mPooledByteStreams:Lcom/facebook/common/memory/PooledByteStreams;
return-object v0
.end method
.method public getSharedByteArray()Lcom/facebook/imagepipeline/memory/SharedByteArray;
.registers 4
.line 225
iget-object v0, p0, Lcom/facebook/imagepipeline/memory/PoolFactory;->mSharedByteArray:Lcom/facebook/imagepipeline/memory/SharedByteArray;
if-nez v0, :cond_17
.line 226
new-instance v0, Lcom/facebook/imagepipeline/memory/SharedByteArray;
iget-object v1, p0, Lcom/facebook/imagepipeline/memory/PoolFactory;->mConfig:Lcom/facebook/imagepipeline/memory/PoolConfig;
.line 228
invoke-virtual {v1}, Lcom/facebook/imagepipeline/memory/PoolConfig;->getMemoryTrimmableRegistry()Lcom/facebook/common/memory/MemoryTrimmableRegistry;
move-result-object v1
iget-object v2, p0, Lcom/facebook/imagepipeline/memory/PoolFactory;->mConfig:Lcom/facebook/imagepipeline/memory/PoolConfig;
invoke-virtual {v2}, Lcom/facebook/imagepipeline/memory/PoolConfig;->getFlexByteArrayPoolParams()Lcom/facebook/imagepipeline/memory/PoolParams;
move-result-object v2
invoke-direct {v0, v1, v2}, Lcom/facebook/imagepipeline/memory/SharedByteArray;-><init>(Lcom/facebook/common/memory/MemoryTrimmableRegistry;Lcom/facebook/imagepipeline/memory/PoolParams;)V
iput-object v0, p0, Lcom/facebook/imagepipeline/memory/PoolFactory;->mSharedByteArray:Lcom/facebook/imagepipeline/memory/SharedByteArray;
.line 230
:cond_17
iget-object v0, p0, Lcom/facebook/imagepipeline/memory/PoolFactory;->mSharedByteArray:Lcom/facebook/imagepipeline/memory/SharedByteArray;
return-object v0
.end method
.method public getSmallByteArrayPool()Lcom/facebook/common/memory/ByteArrayPool;
.registers 5
.line 234
iget-object v0, p0, Lcom/facebook/imagepipeline/memory/PoolFactory;->mSmallByteArrayPool:Lcom/facebook/common/memory/ByteArrayPool;
if-nez v0, :cond_1d
.line 235
new-instance v0, Lcom/facebook/imagepipeline/memory/GenericByteArrayPool;
iget-object v1, p0, Lcom/facebook/imagepipeline/memory/PoolFactory;->mConfig:Lcom/facebook/imagepipeline/memory/PoolConfig;
.line 237
invoke-virtual {v1}, Lcom/facebook/imagepipeline/memory/PoolConfig;->getMemoryTrimmableRegistry()Lcom/facebook/common/memory/MemoryTrimmableRegistry;
move-result-object v1
iget-object v2, p0, Lcom/facebook/imagepipeline/memory/PoolFactory;->mConfig:Lcom/facebook/imagepipeline/memory/PoolConfig;
.line 238
invoke-virtual {v2}, Lcom/facebook/imagepipeline/memory/PoolConfig;->getSmallByteArrayPoolParams()Lcom/facebook/imagepipeline/memory/PoolParams;
move-result-object v2
iget-object v3, p0, Lcom/facebook/imagepipeline/memory/PoolFactory;->mConfig:Lcom/facebook/imagepipeline/memory/PoolConfig;
.line 239
invoke-virtual {v3}, Lcom/facebook/imagepipeline/memory/PoolConfig;->getSmallByteArrayPoolStatsTracker()Lcom/facebook/imagepipeline/memory/PoolStatsTracker;
move-result-object v3
invoke-direct {v0, v1, v2, v3}, Lcom/facebook/imagepipeline/memory/GenericByteArrayPool;-><init>(Lcom/facebook/common/memory/MemoryTrimmableRegistry;Lcom/facebook/imagepipeline/memory/PoolParams;Lcom/facebook/imagepipeline/memory/PoolStatsTracker;)V
iput-object v0, p0, Lcom/facebook/imagepipeline/memory/PoolFactory;->mSmallByteArrayPool:Lcom/facebook/common/memory/ByteArrayPool;
.line 241
:cond_1d
iget-object v0, p0, Lcom/facebook/imagepipeline/memory/PoolFactory;->mSmallByteArrayPool:Lcom/facebook/common/memory/ByteArrayPool;
return-object v0
.end method