KObjPoolMgr$KObjPool.smali
.class public Lcom/cleanmaster/base/util/misc/KObjPoolMgr$KObjPool;
.super Ljava/lang/Object;
.source "KObjPoolMgr.java"
# annotations
.annotation system Ldalvik/annotation/EnclosingClass;
value = Lcom/cleanmaster/base/util/misc/KObjPoolMgr;
.end annotation
.annotation system Ldalvik/annotation/InnerClass;
accessFlags = 0x9
name = "KObjPool"
.end annotation
.annotation system Ldalvik/annotation/Signature;
value = {
"<E:",
"Lcom/cleanmaster/base/util/misc/KObjPoolMgr$KPoolObj;",
">",
"Ljava/lang/Object;"
}
.end annotation
# instance fields
.field private mCreator:Lcom/cleanmaster/base/util/misc/KObjPoolMgr$IKPoolObjCreator;
.annotation system Ldalvik/annotation/Signature;
value = {
"Lcom/cleanmaster/base/util/misc/KObjPoolMgr$IKPoolObjCreator",
"<TE;>;"
}
.end annotation
.end field
.field private mMutex:Ljava/lang/Object;
.field private mPoolSize:I
.field private mPooledObj:Lcom/cleanmaster/base/util/misc/KObjPoolMgr$KPoolObj;
.annotation system Ldalvik/annotation/Signature;
value = {
"TE;"
}
.end annotation
.end field
# direct methods
.method public constructor <init>(ILcom/cleanmaster/base/util/misc/KObjPoolMgr$IKPoolObjCreator;)V
.registers 4
.annotation system Ldalvik/annotation/Signature;
value = {
"(I",
"Lcom/cleanmaster/base/util/misc/KObjPoolMgr$IKPoolObjCreator",
"<TE;>;)V"
}
.end annotation
.prologue
.line 78
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 75
new-instance v0, Ljava/lang/Object;
invoke-direct {v0}, Ljava/lang/Object;-><init>()V
iput-object v0, p0, Lcom/cleanmaster/base/util/misc/KObjPoolMgr$KObjPool;->mMutex:Ljava/lang/Object;
.line 76
const/4 v0, 0x0
iput-object v0, p0, Lcom/cleanmaster/base/util/misc/KObjPoolMgr$KObjPool;->mPooledObj:Lcom/cleanmaster/base/util/misc/KObjPoolMgr$KPoolObj;
.line 80
if-gtz p1, :cond_15
.line 81
new-instance v0, Ljava/lang/IllegalArgumentException;
invoke-direct {v0}, Ljava/lang/IllegalArgumentException;-><init>()V
throw v0
.line 84
:cond_15
if-nez p2, :cond_1d
.line 85
new-instance v0, Ljava/lang/NullPointerException;
invoke-direct {v0}, Ljava/lang/NullPointerException;-><init>()V
throw v0
.line 88
:cond_1d
iput p1, p0, Lcom/cleanmaster/base/util/misc/KObjPoolMgr$KObjPool;->mPoolSize:I
.line 89
iput-object p2, p0, Lcom/cleanmaster/base/util/misc/KObjPoolMgr$KObjPool;->mCreator:Lcom/cleanmaster/base/util/misc/KObjPoolMgr$IKPoolObjCreator;
.line 90
return-void
.end method
# virtual methods
.method public obtainObj()Lcom/cleanmaster/base/util/misc/KObjPoolMgr$KPoolObj;
.registers 4
.annotation system Ldalvik/annotation/Signature;
value = {
"()TE;"
}
.end annotation
.prologue
.line 93
iget-object v0, p0, Lcom/cleanmaster/base/util/misc/KObjPoolMgr$KObjPool;->mPooledObj:Lcom/cleanmaster/base/util/misc/KObjPoolMgr$KPoolObj;
if-nez v0, :cond_b
.line 94
iget-object v0, p0, Lcom/cleanmaster/base/util/misc/KObjPoolMgr$KObjPool;->mCreator:Lcom/cleanmaster/base/util/misc/KObjPoolMgr$IKPoolObjCreator;
invoke-interface {v0}, Lcom/cleanmaster/base/util/misc/KObjPoolMgr$IKPoolObjCreator;->create()Lcom/cleanmaster/base/util/misc/KObjPoolMgr$KPoolObj;
move-result-object v0
.line 106
:goto_a
return-object v0
.line 97
:cond_b
iget-object v1, p0, Lcom/cleanmaster/base/util/misc/KObjPoolMgr$KObjPool;->mMutex:Ljava/lang/Object;
monitor-enter v1
.line 98
:try_start_e
iget-object v0, p0, Lcom/cleanmaster/base/util/misc/KObjPoolMgr$KObjPool;->mPooledObj:Lcom/cleanmaster/base/util/misc/KObjPoolMgr$KPoolObj;
if-nez v0, :cond_1d
.line 99
iget-object v0, p0, Lcom/cleanmaster/base/util/misc/KObjPoolMgr$KObjPool;->mCreator:Lcom/cleanmaster/base/util/misc/KObjPoolMgr$IKPoolObjCreator;
invoke-interface {v0}, Lcom/cleanmaster/base/util/misc/KObjPoolMgr$IKPoolObjCreator;->create()Lcom/cleanmaster/base/util/misc/KObjPoolMgr$KPoolObj;
move-result-object v0
monitor-exit v1
goto :goto_a
.line 107
:catchall_1a
move-exception v0
monitor-exit v1
:try_end_1c
.catchall {:try_start_e .. :try_end_1c} :catchall_1a
throw v0
.line 102
:cond_1d
:try_start_1d
iget-object v0, p0, Lcom/cleanmaster/base/util/misc/KObjPoolMgr$KObjPool;->mPooledObj:Lcom/cleanmaster/base/util/misc/KObjPoolMgr$KPoolObj;
.line 103
iget-object v2, p0, Lcom/cleanmaster/base/util/misc/KObjPoolMgr$KObjPool;->mPooledObj:Lcom/cleanmaster/base/util/misc/KObjPoolMgr$KPoolObj;
invoke-virtual {v2}, Lcom/cleanmaster/base/util/misc/KObjPoolMgr$KPoolObj;->getNext()Lcom/cleanmaster/base/util/misc/KObjPoolMgr$KPoolObj;
move-result-object v2
iput-object v2, p0, Lcom/cleanmaster/base/util/misc/KObjPoolMgr$KObjPool;->mPooledObj:Lcom/cleanmaster/base/util/misc/KObjPoolMgr$KPoolObj;
.line 104
const/4 v2, 0x0
invoke-virtual {v0, v2}, Lcom/cleanmaster/base/util/misc/KObjPoolMgr$KPoolObj;->setNext(Lcom/cleanmaster/base/util/misc/KObjPoolMgr$KPoolObj;)V
.line 105
iget v2, p0, Lcom/cleanmaster/base/util/misc/KObjPoolMgr$KObjPool;->mPoolSize:I
add-int/lit8 v2, v2, 0x1
iput v2, p0, Lcom/cleanmaster/base/util/misc/KObjPoolMgr$KObjPool;->mPoolSize:I
.line 106
monitor-exit v1
:try_end_32
.catchall {:try_start_1d .. :try_end_32} :catchall_1a
goto :goto_a
.end method
.method public recycleObj(Lcom/cleanmaster/base/util/misc/KObjPoolMgr$KPoolObj;)V
.registers 4
.annotation system Ldalvik/annotation/Signature;
value = {
"(TE;)V"
}
.end annotation
.prologue
.line 112
if-nez p1, :cond_3
.line 131
:cond_2
:goto_2
return-void
.line 116
:cond_3
invoke-virtual {p1}, Lcom/cleanmaster/base/util/misc/KObjPoolMgr$KPoolObj;->reset()V
.line 118
iget v0, p0, Lcom/cleanmaster/base/util/misc/KObjPoolMgr$KObjPool;->mPoolSize:I
if-lez v0, :cond_2
.line 122
iget-object v1, p0, Lcom/cleanmaster/base/util/misc/KObjPoolMgr$KObjPool;->mMutex:Ljava/lang/Object;
monitor-enter v1
.line 123
:try_start_d
iget v0, p0, Lcom/cleanmaster/base/util/misc/KObjPoolMgr$KObjPool;->mPoolSize:I
if-gtz v0, :cond_16
.line 124
monitor-exit v1
goto :goto_2
.line 130
:catchall_13
move-exception v0
monitor-exit v1
:try_end_15
.catchall {:try_start_d .. :try_end_15} :catchall_13
throw v0
.line 127
:cond_16
:try_start_16
iget-object v0, p0, Lcom/cleanmaster/base/util/misc/KObjPoolMgr$KObjPool;->mPooledObj:Lcom/cleanmaster/base/util/misc/KObjPoolMgr$KPoolObj;
invoke-virtual {p1, v0}, Lcom/cleanmaster/base/util/misc/KObjPoolMgr$KPoolObj;->setNext(Lcom/cleanmaster/base/util/misc/KObjPoolMgr$KPoolObj;)V
.line 128
iput-object p1, p0, Lcom/cleanmaster/base/util/misc/KObjPoolMgr$KObjPool;->mPooledObj:Lcom/cleanmaster/base/util/misc/KObjPoolMgr$KPoolObj;
.line 129
iget v0, p0, Lcom/cleanmaster/base/util/misc/KObjPoolMgr$KObjPool;->mPoolSize:I
add-int/lit8 v0, v0, -0x1
iput v0, p0, Lcom/cleanmaster/base/util/misc/KObjPoolMgr$KObjPool;->mPoolSize:I
.line 130
monitor-exit v1
:try_end_24
.catchall {:try_start_16 .. :try_end_24} :catchall_13
goto :goto_2
.end method