BSHArrayInitializer.smali
.class Lbsh/BSHArrayInitializer;
.super Lbsh/SimpleNode;
# direct methods
.method constructor <init>(I)V
.registers 2
invoke-direct {p0, p1}, Lbsh/SimpleNode;-><init>(I)V
return-void
.end method
.method private a(Ljava/lang/Class;Ljava/lang/Object;ILbsh/c;)V
.registers 9
instance-of v0, p2, Lbsh/Primitive;
if-eqz v0, :cond_3e
check-cast p2, Lbsh/Primitive;
invoke-virtual {p2}, Lbsh/Primitive;->b()Ljava/lang/Class;
move-result-object v0
invoke-virtual {v0}, Ljava/lang/Class;->getName()Ljava/lang/String;
move-result-object v0
:goto_e
new-instance v1, Lbsh/EvalError;
new-instance v2, Ljava/lang/StringBuffer;
invoke-direct {v2}, Ljava/lang/StringBuffer;-><init>()V
const-string/jumbo v3, "Incompatible type: "
invoke-virtual {v2, v3}, Ljava/lang/StringBuffer;->append(Ljava/lang/String;)Ljava/lang/StringBuffer;
move-result-object v2
invoke-virtual {v2, v0}, Ljava/lang/StringBuffer;->append(Ljava/lang/String;)Ljava/lang/StringBuffer;
move-result-object v0
const-string/jumbo v2, " in initializer of array type: "
invoke-virtual {v0, v2}, Ljava/lang/StringBuffer;->append(Ljava/lang/String;)Ljava/lang/StringBuffer;
move-result-object v0
invoke-virtual {v0, p1}, Ljava/lang/StringBuffer;->append(Ljava/lang/Object;)Ljava/lang/StringBuffer;
move-result-object v0
const-string/jumbo v2, " at position: "
invoke-virtual {v0, v2}, Ljava/lang/StringBuffer;->append(Ljava/lang/String;)Ljava/lang/StringBuffer;
move-result-object v0
invoke-virtual {v0, p3}, Ljava/lang/StringBuffer;->append(I)Ljava/lang/StringBuffer;
move-result-object v0
invoke-virtual {v0}, Ljava/lang/StringBuffer;->toString()Ljava/lang/String;
move-result-object v0
invoke-direct {v1, v0, p0, p4}, Lbsh/EvalError;-><init>(Ljava/lang/String;Lbsh/SimpleNode;Lbsh/c;)V
throw v1
:cond_3e
invoke-virtual {p2}, Ljava/lang/Object;->getClass()Ljava/lang/Class;
move-result-object v0
invoke-static {v0}, Lbsh/n;->a(Ljava/lang/Class;)Ljava/lang/String;
move-result-object v0
goto :goto_e
.end method
# virtual methods
.method public a(Lbsh/c;Lbsh/Interpreter;)Ljava/lang/Object;
.registers 5
new-instance v0, Lbsh/EvalError;
const-string/jumbo v1, "Array initializer has no base type."
invoke-direct {v0, v1, p0, p1}, Lbsh/EvalError;-><init>(Ljava/lang/String;Lbsh/SimpleNode;Lbsh/c;)V
throw v0
.end method
.method public a(Ljava/lang/Class;ILbsh/c;Lbsh/Interpreter;)Ljava/lang/Object;
.registers 12
const/4 v0, 0x0
invoke-virtual {p0}, Lbsh/BSHArrayInitializer;->g()I
move-result v3
new-array v1, p2, [I
aput v3, v1, v0
invoke-static {p1, v1}, Ljava/lang/reflect/Array;->newInstance(Ljava/lang/Class;[I)Ljava/lang/Object;
move-result-object v4
move v2, v0
:goto_e
if-lt v2, v3, :cond_11
return-object v4
:cond_11
invoke-virtual {p0, v2}, Lbsh/BSHArrayInitializer;->a(I)Lbsh/Node;
move-result-object v0
check-cast v0, Lbsh/SimpleNode;
instance-of v1, v0, Lbsh/BSHArrayInitializer;
if-eqz v1, :cond_5e
const/4 v1, 0x2
if-ge p2, v1, :cond_38
new-instance v0, Lbsh/EvalError;
new-instance v1, Ljava/lang/StringBuffer;
invoke-direct {v1}, Ljava/lang/StringBuffer;-><init>()V
const-string/jumbo v3, "Invalid Location for Intializer, position: "
invoke-virtual {v1, v3}, Ljava/lang/StringBuffer;->append(Ljava/lang/String;)Ljava/lang/StringBuffer;
move-result-object v1
invoke-virtual {v1, v2}, Ljava/lang/StringBuffer;->append(I)Ljava/lang/StringBuffer;
move-result-object v1
invoke-virtual {v1}, Ljava/lang/StringBuffer;->toString()Ljava/lang/String;
move-result-object v1
invoke-direct {v0, v1, p0, p3}, Lbsh/EvalError;-><init>(Ljava/lang/String;Lbsh/SimpleNode;Lbsh/c;)V
throw v0
:cond_38
check-cast v0, Lbsh/BSHArrayInitializer;
add-int/lit8 v1, p2, -0x1
invoke-virtual {v0, p1, v1, p3, p4}, Lbsh/BSHArrayInitializer;->a(Ljava/lang/Class;ILbsh/c;Lbsh/Interpreter;)Ljava/lang/Object;
move-result-object v0
:goto_40
sget-object v1, Lbsh/Primitive;->c:Lbsh/Primitive;
if-ne v0, v1, :cond_63
new-instance v0, Lbsh/EvalError;
new-instance v1, Ljava/lang/StringBuffer;
invoke-direct {v1}, Ljava/lang/StringBuffer;-><init>()V
const-string/jumbo v3, "Void in array initializer, position"
invoke-virtual {v1, v3}, Ljava/lang/StringBuffer;->append(Ljava/lang/String;)Ljava/lang/StringBuffer;
move-result-object v1
invoke-virtual {v1, v2}, Ljava/lang/StringBuffer;->append(I)Ljava/lang/StringBuffer;
move-result-object v1
invoke-virtual {v1}, Ljava/lang/StringBuffer;->toString()Ljava/lang/String;
move-result-object v1
invoke-direct {v0, v1, p0, p3}, Lbsh/EvalError;-><init>(Ljava/lang/String;Lbsh/SimpleNode;Lbsh/c;)V
throw v0
:cond_5e
invoke-virtual {v0, p3, p4}, Lbsh/SimpleNode;->a(Lbsh/c;Lbsh/Interpreter;)Ljava/lang/Object;
move-result-object v0
goto :goto_40
:cond_63
const/4 v1, 0x1
if-ne p2, v1, :cond_b7
const/4 v1, 0x0
:try_start_67
invoke-static {v0, p1, v1}, Lbsh/r;->a(Ljava/lang/Object;Ljava/lang/Class;I)Ljava/lang/Object;
:try_end_6a
.catch Lbsh/UtilEvalError; {:try_start_67 .. :try_end_6a} :catch_76
move-result-object v1
invoke-static {v1}, Lbsh/Primitive;->b(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v1
:goto_6f
:try_start_6f
invoke-static {v4, v2, v1}, Ljava/lang/reflect/Array;->set(Ljava/lang/Object;ILjava/lang/Object;)V
:try_end_72
.catch Ljava/lang/IllegalArgumentException; {:try_start_6f .. :try_end_72} :catch_7f
.catch Ljava/lang/ArrayStoreException; {:try_start_6f .. :try_end_72} :catch_9b
:goto_72
add-int/lit8 v0, v2, 0x1
move v2, v0
goto :goto_e
:catch_76
move-exception v0
const-string/jumbo v1, "Error in array initializer"
invoke-virtual {v0, v1, p0, p3}, Lbsh/UtilEvalError;->a(Ljava/lang/String;Lbsh/SimpleNode;Lbsh/c;)Lbsh/EvalError;
move-result-object v0
throw v0
:catch_7f
move-exception v1
new-instance v5, Ljava/lang/StringBuffer;
invoke-direct {v5}, Ljava/lang/StringBuffer;-><init>()V
const-string/jumbo v6, "illegal arg"
invoke-virtual {v5, v6}, Ljava/lang/StringBuffer;->append(Ljava/lang/String;)Ljava/lang/StringBuffer;
move-result-object v5
invoke-virtual {v5, v1}, Ljava/lang/StringBuffer;->append(Ljava/lang/Object;)Ljava/lang/StringBuffer;
move-result-object v1
invoke-virtual {v1}, Ljava/lang/StringBuffer;->toString()Ljava/lang/String;
move-result-object v1
invoke-static {v1}, Lbsh/Interpreter;->b(Ljava/lang/String;)V
invoke-direct {p0, p1, v0, v2, p3}, Lbsh/BSHArrayInitializer;->a(Ljava/lang/Class;Ljava/lang/Object;ILbsh/c;)V
goto :goto_72
:catch_9b
move-exception v1
new-instance v5, Ljava/lang/StringBuffer;
invoke-direct {v5}, Ljava/lang/StringBuffer;-><init>()V
const-string/jumbo v6, "arraystore"
invoke-virtual {v5, v6}, Ljava/lang/StringBuffer;->append(Ljava/lang/String;)Ljava/lang/StringBuffer;
move-result-object v5
invoke-virtual {v5, v1}, Ljava/lang/StringBuffer;->append(Ljava/lang/Object;)Ljava/lang/StringBuffer;
move-result-object v1
invoke-virtual {v1}, Ljava/lang/StringBuffer;->toString()Ljava/lang/String;
move-result-object v1
invoke-static {v1}, Lbsh/Interpreter;->b(Ljava/lang/String;)V
invoke-direct {p0, p1, v0, v2, p3}, Lbsh/BSHArrayInitializer;->a(Ljava/lang/Class;Ljava/lang/Object;ILbsh/c;)V
goto :goto_72
:cond_b7
move-object v1, v0
goto :goto_6f
.end method