LuaStateFactory.smali
.class public final Lcom/luajava/LuaStateFactory;
.super Ljava/lang/Object;
# static fields
.field private static final states:Ljava/util/List;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/List",
"<",
"Lcom/luajava/LuaState;",
">;"
}
.end annotation
.end field
# direct methods
.method static constructor <clinit>()V
.registers 1
new-instance v0, Ljava/util/ArrayList;
invoke-direct {v0}, Ljava/util/ArrayList;-><init>()V
sput-object v0, Lcom/luajava/LuaStateFactory;->states:Ljava/util/List;
return-void
.end method
.method private constructor <init>()V
.registers 1
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
return-void
.end method
.method public static declared-synchronized getExistingState(I)Lcom/luajava/LuaState;
.registers 3
const-class v1, Lcom/luajava/LuaStateFactory;
monitor-enter v1
:try_start_3
sget-object v0, Lcom/luajava/LuaStateFactory;->states:Ljava/util/List;
invoke-interface {v0, p0}, Ljava/util/List;->get(I)Ljava/lang/Object;
move-result-object v0
check-cast v0, Lcom/luajava/LuaState;
:try_end_b
.catchall {:try_start_3 .. :try_end_b} :catchall_d
monitor-exit v1
return-object v0
:catchall_d
move-exception v0
monitor-exit v1
throw v0
.end method
.method private static declared-synchronized getNextStateIndex()I
.registers 3
const-class v1, Lcom/luajava/LuaStateFactory;
monitor-enter v1
const/4 v0, 0x0
:goto_4
:try_start_4
sget-object v2, Lcom/luajava/LuaStateFactory;->states:Ljava/util/List;
invoke-interface {v2}, Ljava/util/List;->size()I
move-result v2
if-ge v0, v2, :cond_17
sget-object v2, Lcom/luajava/LuaStateFactory;->states:Ljava/util/List;
invoke-interface {v2, v0}, Ljava/util/List;->get(I)Ljava/lang/Object;
:try_end_11
.catchall {:try_start_4 .. :try_end_11} :catchall_19
move-result-object v2
if-eqz v2, :cond_17
add-int/lit8 v0, v0, 0x1
goto :goto_4
:cond_17
monitor-exit v1
return v0
:catchall_19
move-exception v0
monitor-exit v1
throw v0
.end method
.method public static declared-synchronized insertLuaState(Lcom/luajava/LuaState;)I
.registers 9
const-class v2, Lcom/luajava/LuaStateFactory;
monitor-enter v2
const/4 v1, 0x0
:goto_4
:try_start_4
sget-object v0, Lcom/luajava/LuaStateFactory;->states:Ljava/util/List;
invoke-interface {v0}, Ljava/util/List;->size()I
move-result v0
if-ge v1, v0, :cond_28
sget-object v0, Lcom/luajava/LuaStateFactory;->states:Ljava/util/List;
invoke-interface {v0, v1}, Ljava/util/List;->get(I)Ljava/lang/Object;
move-result-object v0
check-cast v0, Lcom/luajava/LuaState;
if-eqz v0, :cond_25
invoke-virtual {v0}, Lcom/luajava/LuaState;->getCPtrPeer()J
move-result-wide v4
invoke-virtual {p0}, Lcom/luajava/LuaState;->getCPtrPeer()J
:try_end_1d
.catchall {:try_start_4 .. :try_end_1d} :catchall_32
move-result-wide v6
cmp-long v0, v4, v6
if-nez v0, :cond_25
move v0, v1
:goto_23
monitor-exit v2
return v0
:cond_25
add-int/lit8 v1, v1, 0x1
goto :goto_4
:cond_28
:try_start_28
invoke-static {}, Lcom/luajava/LuaStateFactory;->getNextStateIndex()I
move-result v0
sget-object v1, Lcom/luajava/LuaStateFactory;->states:Ljava/util/List;
invoke-interface {v1, v0, p0}, Ljava/util/List;->set(ILjava/lang/Object;)Ljava/lang/Object;
:try_end_31
.catchall {:try_start_28 .. :try_end_31} :catchall_32
goto :goto_23
:catchall_32
move-exception v0
monitor-exit v2
throw v0
.end method
.method public static declared-synchronized newLuaState()Lcom/luajava/LuaState;
.registers 4
const-class v1, Lcom/luajava/LuaStateFactory;
monitor-enter v1
:try_start_3
invoke-static {}, Lcom/luajava/LuaStateFactory;->getNextStateIndex()I
move-result v0
new-instance v2, Lcom/luajava/LuaState;
invoke-direct {v2, v0}, Lcom/luajava/LuaState;-><init>(I)V
sget-object v3, Lcom/luajava/LuaStateFactory;->states:Ljava/util/List;
invoke-interface {v3, v0, v2}, Ljava/util/List;->add(ILjava/lang/Object;)V
:try_end_11
.catchall {:try_start_3 .. :try_end_11} :catchall_13
monitor-exit v1
return-object v2
:catchall_13
move-exception v0
monitor-exit v1
throw v0
.end method
.method public static declared-synchronized removeLuaState(I)V
.registers 4
const-class v1, Lcom/luajava/LuaStateFactory;
monitor-enter v1
:try_start_3
sget-object v0, Lcom/luajava/LuaStateFactory;->states:Ljava/util/List;
const/4 v2, 0x0
invoke-interface {v0, p0, v2}, Ljava/util/List;->add(ILjava/lang/Object;)V
:try_end_9
.catchall {:try_start_3 .. :try_end_9} :catchall_b
monitor-exit v1
return-void
:catchall_b
move-exception v0
monitor-exit v1
throw v0
.end method