ArrayUtils.smali
.class public Lim/tpelyyftgw/messenger/support/ArrayUtils;
.super Ljava/lang/Object;
.source "ArrayUtils.java"
# static fields
.field private static final CACHE_SIZE:I = 0x49
.field private static EMPTY:[Ljava/lang/Object;
.field private static sCache:[Ljava/lang/Object;
# direct methods
.method static constructor <clinit>()V
.registers 1
.line 23
const/4 v0, 0x0
new-array v0, v0, [Ljava/lang/Object;
sput-object v0, Lim/tpelyyftgw/messenger/support/ArrayUtils;->EMPTY:[Ljava/lang/Object;
.line 25
const/16 v0, 0x49
new-array v0, v0, [Ljava/lang/Object;
sput-object v0, Lim/tpelyyftgw/messenger/support/ArrayUtils;->sCache:[Ljava/lang/Object;
return-void
.end method
.method private constructor <init>()V
.registers 1
.line 27
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
return-void
.end method
.method public static appendElement(Ljava/lang/Class;[Ljava/lang/Object;Ljava/lang/Object;)[Ljava/lang/Object;
.registers 6
.annotation system Ldalvik/annotation/Signature;
value = {
"<T:",
"Ljava/lang/Object;",
">(",
"Ljava/lang/Class<",
"TT;>;[TT;TT;)[TT;"
}
.end annotation
.line 167
.local p0, "kind":Ljava/lang/Class;, "Ljava/lang/Class<TT;>;"
.local p1, "array":[Ljava/lang/Object;, "[TT;"
.local p2, "element":Ljava/lang/Object;, "TT;"
if-eqz p1, :cond_12
.line 168
array-length v0, p1
.line 169
.local v0, "end":I
add-int/lit8 v1, v0, 0x1
invoke-static {p0, v1}, Ljava/lang/reflect/Array;->newInstance(Ljava/lang/Class;I)Ljava/lang/Object;
move-result-object v1
check-cast v1, [Ljava/lang/Object;
check-cast v1, [Ljava/lang/Object;
.line 170
.local v1, "result":[Ljava/lang/Object;, "[TT;"
const/4 v2, 0x0
invoke-static {p1, v2, v1, v2, v0}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
goto :goto_1c
.line 172
.end local v0 # "end":I
.end local v1 # "result":[Ljava/lang/Object;, "[TT;"
:cond_12
const/4 v0, 0x0
.line 173
.restart local v0 # "end":I
const/4 v1, 0x1
invoke-static {p0, v1}, Ljava/lang/reflect/Array;->newInstance(Ljava/lang/Class;I)Ljava/lang/Object;
move-result-object v1
check-cast v1, [Ljava/lang/Object;
check-cast v1, [Ljava/lang/Object;
.line 175
.restart local v1 # "result":[Ljava/lang/Object;, "[TT;"
:goto_1c
aput-object p2, v1, v0
.line 176
return-object v1
.end method
.method public static appendInt([II)[I
.registers 6
.param p0, "cur" # [I
.param p1, "val" # I
.line 209
const/4 v0, 0x0
if-nez p0, :cond_9
.line 210
const/4 v1, 0x1
new-array v1, v1, [I
aput p1, v1, v0
return-object v1
.line 212
:cond_9
array-length v1, p0
.line 213
.local v1, "N":I
const/4 v2, 0x0
.local v2, "i":I
:goto_b
if-ge v2, v1, :cond_15
.line 214
aget v3, p0, v2
if-ne v3, p1, :cond_12
.line 215
return-object p0
.line 213
:cond_12
add-int/lit8 v2, v2, 0x1
goto :goto_b
.line 218
.end local v2 # "i":I
:cond_15
add-int/lit8 v2, v1, 0x1
new-array v2, v2, [I
.line 219
.local v2, "ret":[I
invoke-static {p0, v0, v2, v0, v1}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
.line 220
aput p1, v2, v1
.line 221
return-object v2
.end method
.method public static contains([II)Z
.registers 6
.param p0, "array" # [I
.param p1, "value" # I
.line 129
array-length v0, p0
const/4 v1, 0x0
const/4 v2, 0x0
:goto_3
if-ge v2, v0, :cond_e
aget v3, p0, v2
.line 130
.local v3, "element":I
if-ne v3, p1, :cond_b
.line 131
const/4 v0, 0x1
return v0
.line 129
.end local v3 # "element":I
:cond_b
add-int/lit8 v2, v2, 0x1
goto :goto_3
.line 134
:cond_e
return v1
.end method
.method public static contains([Ljava/lang/Object;Ljava/lang/Object;)Z
.registers 8
.annotation system Ldalvik/annotation/Signature;
value = {
"<T:",
"Ljava/lang/Object;",
">([TT;TT;)Z"
}
.end annotation
.line 118
.local p0, "array":[Ljava/lang/Object;, "[TT;"
.local p1, "value":Ljava/lang/Object;, "TT;"
array-length v0, p0
const/4 v1, 0x0
const/4 v2, 0x0
:goto_3
if-ge v2, v0, :cond_19
aget-object v3, p0, v2
.line 119
.local v3, "element":Ljava/lang/Object;, "TT;"
const/4 v4, 0x1
if-nez v3, :cond_d
.line 120
if-nez p1, :cond_16
return v4
.line 122
:cond_d
if-eqz p1, :cond_16
invoke-virtual {v3, p1}, Ljava/lang/Object;->equals(Ljava/lang/Object;)Z
move-result v5
if-eqz v5, :cond_16
return v4
.line 118
.end local v3 # "element":Ljava/lang/Object;, "TT;"
:cond_16
add-int/lit8 v2, v2, 0x1
goto :goto_3
.line 125
:cond_19
return v1
.end method
.method public static emptyArray(Ljava/lang/Class;)[Ljava/lang/Object;
.registers 4
.annotation system Ldalvik/annotation/Signature;
value = {
"<T:",
"Ljava/lang/Object;",
">(",
"Ljava/lang/Class<",
"TT;>;)[TT;"
}
.end annotation
.line 94
.local p0, "kind":Ljava/lang/Class;, "Ljava/lang/Class<TT;>;"
const-class v0, Ljava/lang/Object;
if-ne p0, v0, :cond_9
.line 95
sget-object v0, Lim/tpelyyftgw/messenger/support/ArrayUtils;->EMPTY:[Ljava/lang/Object;
check-cast v0, [Ljava/lang/Object;
return-object v0
.line 98
:cond_9
invoke-static {p0}, Ljava/lang/System;->identityHashCode(Ljava/lang/Object;)I
move-result v0
div-int/lit8 v0, v0, 0x8
const v1, 0x7fffffff
and-int/2addr v0, v1
rem-int/lit8 v0, v0, 0x49
.line 99
.local v0, "bucket":I
sget-object v1, Lim/tpelyyftgw/messenger/support/ArrayUtils;->sCache:[Ljava/lang/Object;
aget-object v1, v1, v0
.line 101
.local v1, "cache":Ljava/lang/Object;
if-eqz v1, :cond_25
invoke-virtual {v1}, Ljava/lang/Object;->getClass()Ljava/lang/Class;
move-result-object v2
invoke-virtual {v2}, Ljava/lang/Class;->getComponentType()Ljava/lang/Class;
move-result-object v2
if-eq v2, p0, :cond_2e
.line 102
:cond_25
const/4 v2, 0x0
invoke-static {p0, v2}, Ljava/lang/reflect/Array;->newInstance(Ljava/lang/Class;I)Ljava/lang/Object;
move-result-object v1
.line 103
sget-object v2, Lim/tpelyyftgw/messenger/support/ArrayUtils;->sCache:[Ljava/lang/Object;
aput-object v1, v2, v0
.line 108
:cond_2e
move-object v2, v1
check-cast v2, [Ljava/lang/Object;
check-cast v2, [Ljava/lang/Object;
return-object v2
.end method
.method public static equals([B[BI)Z
.registers 8
.param p0, "array1" # [B
.param p1, "array2" # [B
.param p2, "length" # I
.line 74
const/4 v0, 0x1
if-ne p0, p1, :cond_4
.line 75
return v0
.line 77
:cond_4
const/4 v1, 0x0
if-eqz p0, :cond_1e
if-eqz p1, :cond_1e
array-length v2, p0
if-lt v2, p2, :cond_1e
array-length v2, p1
if-ge v2, p2, :cond_10
goto :goto_1e
.line 80
:cond_10
const/4 v2, 0x0
.local v2, "i":I
:goto_11
if-ge v2, p2, :cond_1d
.line 81
aget-byte v3, p0, v2
aget-byte v4, p1, v2
if-eq v3, v4, :cond_1a
.line 82
return v1
.line 80
:cond_1a
add-int/lit8 v2, v2, 0x1
goto :goto_11
.line 85
.end local v2 # "i":I
:cond_1d
return v0
.line 78
:cond_1e
:goto_1e
return v1
.end method
.method public static idealBooleanArraySize(I)I
.registers 2
.param p0, "need" # I
.line 38
invoke-static {p0}, Lim/tpelyyftgw/messenger/support/ArrayUtils;->idealByteArraySize(I)I
move-result v0
return v0
.end method
.method public static idealByteArraySize(I)I
.registers 4
.param p0, "need" # I
.line 30
const/4 v0, 0x4
.local v0, "i":I
:goto_1
const/16 v1, 0x20
if-ge v0, v1, :cond_13
.line 31
const/4 v1, 0x1
shl-int v2, v1, v0
add-int/lit8 v2, v2, -0xc
if-gt p0, v2, :cond_10
.line 32
shl-int/2addr v1, v0
add-int/lit8 v1, v1, -0xc
return v1
.line 30
:cond_10
add-int/lit8 v0, v0, 0x1
goto :goto_1
.line 34
.end local v0 # "i":I
:cond_13
return p0
.end method
.method public static idealCharArraySize(I)I
.registers 2
.param p0, "need" # I
.line 46
mul-int/lit8 v0, p0, 0x2
invoke-static {v0}, Lim/tpelyyftgw/messenger/support/ArrayUtils;->idealByteArraySize(I)I
move-result v0
div-int/lit8 v0, v0, 0x2
return v0
.end method
.method public static idealFloatArraySize(I)I
.registers 2
.param p0, "need" # I
.line 54
mul-int/lit8 v0, p0, 0x4
invoke-static {v0}, Lim/tpelyyftgw/messenger/support/ArrayUtils;->idealByteArraySize(I)I
move-result v0
div-int/lit8 v0, v0, 0x4
return v0
.end method
.method public static idealIntArraySize(I)I
.registers 2
.param p0, "need" # I
.line 50
mul-int/lit8 v0, p0, 0x4
invoke-static {v0}, Lim/tpelyyftgw/messenger/support/ArrayUtils;->idealByteArraySize(I)I
move-result v0
div-int/lit8 v0, v0, 0x4
return v0
.end method
.method public static idealLongArraySize(I)I
.registers 2
.param p0, "need" # I
.line 62
mul-int/lit8 v0, p0, 0x8
invoke-static {v0}, Lim/tpelyyftgw/messenger/support/ArrayUtils;->idealByteArraySize(I)I
move-result v0
div-int/lit8 v0, v0, 0x8
return v0
.end method
.method public static idealObjectArraySize(I)I
.registers 2
.param p0, "need" # I
.line 58
mul-int/lit8 v0, p0, 0x4
invoke-static {v0}, Lim/tpelyyftgw/messenger/support/ArrayUtils;->idealByteArraySize(I)I
move-result v0
div-int/lit8 v0, v0, 0x4
return v0
.end method
.method public static idealShortArraySize(I)I
.registers 2
.param p0, "need" # I
.line 42
mul-int/lit8 v0, p0, 0x2
invoke-static {v0}, Lim/tpelyyftgw/messenger/support/ArrayUtils;->idealByteArraySize(I)I
move-result v0
div-int/lit8 v0, v0, 0x2
return v0
.end method
.method public static indexOf([II)I
.registers 4
.param p0, "array" # [I
.param p1, "value" # I
.line 138
if-eqz p0, :cond_e
.line 139
const/4 v0, 0x0
.local v0, "a":I
:goto_3
array-length v1, p0
if-ge v0, v1, :cond_e
.line 140
aget v1, p0, v0
if-ne v1, p1, :cond_b
.line 141
return v0
.line 139
:cond_b
add-int/lit8 v0, v0, 0x1
goto :goto_3
.line 145
.end local v0 # "a":I
:cond_e
const/4 v0, -0x1
return v0
.end method
.method public static removeElement(Ljava/lang/Class;[Ljava/lang/Object;Ljava/lang/Object;)[Ljava/lang/Object;
.registers 9
.annotation system Ldalvik/annotation/Signature;
value = {
"<T:",
"Ljava/lang/Object;",
">(",
"Ljava/lang/Class<",
"TT;>;[TT;TT;)[TT;"
}
.end annotation
.line 191
.local p0, "kind":Ljava/lang/Class;, "Ljava/lang/Class<TT;>;"
.local p1, "array":[Ljava/lang/Object;, "[TT;"
.local p2, "element":Ljava/lang/Object;, "TT;"
if-eqz p1, :cond_29
.line 192
array-length v0, p1
.line 193
.local v0, "length":I
const/4 v1, 0x0
.local v1, "i":I
:goto_4
if-ge v1, v0, :cond_29
.line 194
aget-object v2, p1, v1
if-ne v2, p2, :cond_26
.line 195
const/4 v2, 0x1
if-ne v0, v2, :cond_f
.line 196
const/4 v2, 0x0
return-object v2
.line 198
:cond_f
add-int/lit8 v3, v0, -0x1
invoke-static {p0, v3}, Ljava/lang/reflect/Array;->newInstance(Ljava/lang/Class;I)Ljava/lang/Object;
move-result-object v3
check-cast v3, [Ljava/lang/Object;
check-cast v3, [Ljava/lang/Object;
.line 199
.local v3, "result":[Ljava/lang/Object;, "[TT;"
const/4 v4, 0x0
invoke-static {p1, v4, v3, v4, v1}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
.line 200
add-int/lit8 v4, v1, 0x1
sub-int v5, v0, v1
sub-int/2addr v5, v2
invoke-static {p1, v4, v3, v1, v5}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
.line 201
return-object v3
.line 193
.end local v3 # "result":[Ljava/lang/Object;, "[TT;"
:cond_26
add-int/lit8 v1, v1, 0x1
goto :goto_4
.line 205
.end local v0 # "length":I
.end local v1 # "i":I
:cond_29
return-object p1
.end method
.method public static removeInt([II)[I
.registers 7
.param p0, "cur" # [I
.param p1, "val" # I
.line 225
if-nez p0, :cond_4
.line 226
const/4 v0, 0x0
return-object v0
.line 228
:cond_4
array-length v0, p0
.line 229
.local v0, "N":I
const/4 v1, 0x0
.local v1, "i":I
:goto_6
if-ge v1, v0, :cond_27
.line 230
aget v2, p0, v1
if-ne v2, p1, :cond_24
.line 231
add-int/lit8 v2, v0, -0x1
new-array v2, v2, [I
.line 232
.local v2, "ret":[I
if-lez v1, :cond_16
.line 233
const/4 v3, 0x0
invoke-static {p0, v3, v2, v3, v1}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
.line 235
:cond_16
add-int/lit8 v3, v0, -0x1
if-ge v1, v3, :cond_23
.line 236
add-int/lit8 v3, v1, 0x1
sub-int v4, v0, v1
add-int/lit8 v4, v4, -0x1
invoke-static {p0, v3, v2, v1, v4}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
.line 238
:cond_23
return-object v2
.line 229
.end local v2 # "ret":[I
:cond_24
add-int/lit8 v1, v1, 0x1
goto :goto_6
.line 241
.end local v1 # "i":I
:cond_27
return-object p0
.end method
.method public static total([J)J
.registers 7
.param p0, "array" # [J
.line 149
const-wide/16 v0, 0x0
.line 150
.local v0, "total":J
array-length v2, p0
const/4 v3, 0x0
:goto_4
if-ge v3, v2, :cond_c
aget-wide v4, p0, v3
.line 151
.local v4, "value":J
add-long/2addr v0, v4
.line 150
.end local v4 # "value":J
add-int/lit8 v3, v3, 0x1
goto :goto_4
.line 153
:cond_c
return-wide v0
.end method