ArraySet.smali
.class public final Lcom/cmcm/support/util/ArraySet;
.super Ljava/lang/Object;
# interfaces
.implements Ljava/util/Collection;
.implements Ljava/util/Set;
# annotations
.annotation system Ldalvik/annotation/Signature;
value = {
"<E:",
"Ljava/lang/Object;",
">",
"Ljava/lang/Object;",
"Ljava/util/Collection",
"<TE;>;",
"Ljava/util/Set",
"<TE;>;"
}
.end annotation
# static fields
.field private static final BASE_SIZE:I = 0x4
.field private static final CACHE_SIZE:I = 0xa
.field private static final DEBUG:Z = false
.field private static final TAG:Ljava/lang/String; = "ArraySet"
.field static mBaseCache:[Ljava/lang/Object;
.field static mBaseCacheSize:I
.field static mTwiceBaseCache:[Ljava/lang/Object;
.field static mTwiceBaseCacheSize:I
# instance fields
.field mArray:[Ljava/lang/Object;
.field mCollections:Lcom/cmcm/support/util/MapCollections;
.annotation system Ldalvik/annotation/Signature;
value = {
"Lcom/cmcm/support/util/MapCollections",
"<TE;TE;>;"
}
.end annotation
.end field
.field mHashes:[I
.field mSize:I
# direct methods
.method public constructor <init>()V
.registers 2
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
sget-object v0, Lcom/cmcm/support/util/ContainerHelpers;->EMPTY_INTS:[I
iput-object v0, p0, Lcom/cmcm/support/util/ArraySet;->mHashes:[I
sget-object v0, Lcom/cmcm/support/util/ContainerHelpers;->EMPTY_OBJECTS:[Ljava/lang/Object;
iput-object v0, p0, Lcom/cmcm/support/util/ArraySet;->mArray:[Ljava/lang/Object;
const/4 v0, 0x0
iput v0, p0, Lcom/cmcm/support/util/ArraySet;->mSize:I
return-void
.end method
.method public constructor <init>(I)V
.registers 3
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
if-nez p1, :cond_11
sget-object v0, Lcom/cmcm/support/util/ContainerHelpers;->EMPTY_INTS:[I
iput-object v0, p0, Lcom/cmcm/support/util/ArraySet;->mHashes:[I
sget-object v0, Lcom/cmcm/support/util/ContainerHelpers;->EMPTY_OBJECTS:[Ljava/lang/Object;
iput-object v0, p0, Lcom/cmcm/support/util/ArraySet;->mArray:[Ljava/lang/Object;
:goto_d
const/4 v0, 0x0
iput v0, p0, Lcom/cmcm/support/util/ArraySet;->mSize:I
return-void
:cond_11
invoke-direct {p0, p1}, Lcom/cmcm/support/util/ArraySet;->allocArrays(I)V
goto :goto_d
.end method
.method public constructor <init>(Lcom/cmcm/support/util/ArraySet;)V
.registers 2
invoke-direct {p0}, Lcom/cmcm/support/util/ArraySet;-><init>()V
if-eqz p1, :cond_8
invoke-virtual {p0, p1}, Lcom/cmcm/support/util/ArraySet;->addAll(Ljava/util/Collection;)Z
:cond_8
return-void
.end method
.method static synthetic access$000(Lcom/cmcm/support/util/ArraySet;)I
.registers 2
invoke-direct {p0}, Lcom/cmcm/support/util/ArraySet;->indexOfNull()I
move-result v0
return v0
.end method
.method static synthetic access$100(Lcom/cmcm/support/util/ArraySet;Ljava/lang/Object;I)I
.registers 4
invoke-direct {p0, p1, p2}, Lcom/cmcm/support/util/ArraySet;->indexOf(Ljava/lang/Object;I)I
move-result v0
return v0
.end method
.method private allocArrays(I)V
.registers 7
const/16 v0, 0x8
if-ne p1, v0, :cond_3d
const-class v1, Lcom/cmcm/support/util/ArraySet;
monitor-enter v1
:try_start_7
sget-object v0, Lcom/cmcm/support/util/ArraySet;->mTwiceBaseCache:[Ljava/lang/Object;
if-eqz v0, :cond_30
sget-object v2, Lcom/cmcm/support/util/ArraySet;->mTwiceBaseCache:[Ljava/lang/Object;
iput-object v2, p0, Lcom/cmcm/support/util/ArraySet;->mArray:[Ljava/lang/Object;
const/4 v0, 0x0
aget-object v0, v2, v0
check-cast v0, [Ljava/lang/Object;
check-cast v0, [Ljava/lang/Object;
sput-object v0, Lcom/cmcm/support/util/ArraySet;->mTwiceBaseCache:[Ljava/lang/Object;
const/4 v0, 0x1
aget-object v0, v2, v0
check-cast v0, [I
check-cast v0, [I
iput-object v0, p0, Lcom/cmcm/support/util/ArraySet;->mHashes:[I
const/4 v0, 0x0
const/4 v3, 0x1
const/4 v4, 0x0
aput-object v4, v2, v3
aput-object v4, v2, v0
sget v0, Lcom/cmcm/support/util/ArraySet;->mTwiceBaseCacheSize:I
add-int/lit8 v0, v0, -0x1
sput v0, Lcom/cmcm/support/util/ArraySet;->mTwiceBaseCacheSize:I
monitor-exit v1
:goto_2f
return-void
:cond_30
monitor-exit v1
:try_end_31
.catchall {:try_start_7 .. :try_end_31} :catchall_3a
:cond_31
:goto_31
new-array v0, p1, [I
iput-object v0, p0, Lcom/cmcm/support/util/ArraySet;->mHashes:[I
new-array v0, p1, [Ljava/lang/Object;
iput-object v0, p0, Lcom/cmcm/support/util/ArraySet;->mArray:[Ljava/lang/Object;
goto :goto_2f
:catchall_3a
move-exception v0
:try_start_3b
monitor-exit v1
:try_end_3c
.catchall {:try_start_3b .. :try_end_3c} :catchall_3a
throw v0
:cond_3d
const/4 v0, 0x4
if-ne p1, v0, :cond_31
const-class v1, Lcom/cmcm/support/util/ArraySet;
monitor-enter v1
:try_start_43
sget-object v0, Lcom/cmcm/support/util/ArraySet;->mBaseCache:[Ljava/lang/Object;
if-eqz v0, :cond_6f
sget-object v2, Lcom/cmcm/support/util/ArraySet;->mBaseCache:[Ljava/lang/Object;
iput-object v2, p0, Lcom/cmcm/support/util/ArraySet;->mArray:[Ljava/lang/Object;
const/4 v0, 0x0
aget-object v0, v2, v0
check-cast v0, [Ljava/lang/Object;
check-cast v0, [Ljava/lang/Object;
sput-object v0, Lcom/cmcm/support/util/ArraySet;->mBaseCache:[Ljava/lang/Object;
const/4 v0, 0x1
aget-object v0, v2, v0
check-cast v0, [I
check-cast v0, [I
iput-object v0, p0, Lcom/cmcm/support/util/ArraySet;->mHashes:[I
const/4 v0, 0x0
const/4 v3, 0x1
const/4 v4, 0x0
aput-object v4, v2, v3
aput-object v4, v2, v0
sget v0, Lcom/cmcm/support/util/ArraySet;->mBaseCacheSize:I
add-int/lit8 v0, v0, -0x1
sput v0, Lcom/cmcm/support/util/ArraySet;->mBaseCacheSize:I
monitor-exit v1
goto :goto_2f
:catchall_6c
move-exception v0
monitor-exit v1
:try_end_6e
.catchall {:try_start_43 .. :try_end_6e} :catchall_6c
throw v0
:cond_6f
:try_start_6f
monitor-exit v1
:try_end_70
.catchall {:try_start_6f .. :try_end_70} :catchall_6c
goto :goto_31
.end method
.method private static freeArrays([I[Ljava/lang/Object;I)V
.registers 7
const/16 v2, 0xa
const/4 v3, 0x2
array-length v0, p0
const/16 v1, 0x8
if-ne v0, v1, :cond_2e
const-class v1, Lcom/cmcm/support/util/ArraySet;
monitor-enter v1
:try_start_b
sget v0, Lcom/cmcm/support/util/ArraySet;->mTwiceBaseCacheSize:I
if-ge v0, v2, :cond_29
const/4 v0, 0x0
sget-object v2, Lcom/cmcm/support/util/ArraySet;->mTwiceBaseCache:[Ljava/lang/Object;
aput-object v2, p1, v0
const/4 v0, 0x1
aput-object p0, p1, v0
add-int/lit8 v0, p2, -0x1
:goto_19
if-lt v0, v3, :cond_21
const/4 v2, 0x0
aput-object v2, p1, v0
add-int/lit8 v0, v0, -0x1
goto :goto_19
:cond_21
sput-object p1, Lcom/cmcm/support/util/ArraySet;->mTwiceBaseCache:[Ljava/lang/Object;
sget v0, Lcom/cmcm/support/util/ArraySet;->mTwiceBaseCacheSize:I
add-int/lit8 v0, v0, 0x1
sput v0, Lcom/cmcm/support/util/ArraySet;->mTwiceBaseCacheSize:I
:cond_29
monitor-exit v1
:cond_2a
:goto_2a
return-void
:catchall_2b
move-exception v0
monitor-exit v1
:try_end_2d
.catchall {:try_start_b .. :try_end_2d} :catchall_2b
throw v0
:cond_2e
array-length v0, p0
const/4 v1, 0x4
if-ne v0, v1, :cond_2a
const-class v1, Lcom/cmcm/support/util/ArraySet;
monitor-enter v1
:try_start_35
sget v0, Lcom/cmcm/support/util/ArraySet;->mBaseCacheSize:I
if-ge v0, v2, :cond_53
const/4 v0, 0x0
sget-object v2, Lcom/cmcm/support/util/ArraySet;->mBaseCache:[Ljava/lang/Object;
aput-object v2, p1, v0
const/4 v0, 0x1
aput-object p0, p1, v0
add-int/lit8 v0, p2, -0x1
:goto_43
if-lt v0, v3, :cond_4b
const/4 v2, 0x0
aput-object v2, p1, v0
add-int/lit8 v0, v0, -0x1
goto :goto_43
:cond_4b
sput-object p1, Lcom/cmcm/support/util/ArraySet;->mBaseCache:[Ljava/lang/Object;
sget v0, Lcom/cmcm/support/util/ArraySet;->mBaseCacheSize:I
add-int/lit8 v0, v0, 0x1
sput v0, Lcom/cmcm/support/util/ArraySet;->mBaseCacheSize:I
:cond_53
monitor-exit v1
goto :goto_2a
:catchall_55
move-exception v0
monitor-exit v1
:try_end_57
.catchall {:try_start_35 .. :try_end_57} :catchall_55
throw v0
.end method
.method private getCollection()Lcom/cmcm/support/util/MapCollections;
.registers 2
.annotation system Ldalvik/annotation/Signature;
value = {
"()",
"Lcom/cmcm/support/util/MapCollections",
"<TE;TE;>;"
}
.end annotation
iget-object v0, p0, Lcom/cmcm/support/util/ArraySet;->mCollections:Lcom/cmcm/support/util/MapCollections;
if-nez v0, :cond_b
new-instance v0, Lcom/cmcm/support/util/ArraySet$1;
invoke-direct {v0, p0}, Lcom/cmcm/support/util/ArraySet$1;-><init>(Lcom/cmcm/support/util/ArraySet;)V
iput-object v0, p0, Lcom/cmcm/support/util/ArraySet;->mCollections:Lcom/cmcm/support/util/MapCollections;
:cond_b
iget-object v0, p0, Lcom/cmcm/support/util/ArraySet;->mCollections:Lcom/cmcm/support/util/MapCollections;
return-object v0
.end method
.method private indexOf(Ljava/lang/Object;I)I
.registers 7
iget v2, p0, Lcom/cmcm/support/util/ArraySet;->mSize:I
if-nez v2, :cond_6
const/4 v0, -0x1
:cond_5
:goto_5
return v0
:cond_6
iget-object v0, p0, Lcom/cmcm/support/util/ArraySet;->mHashes:[I
invoke-static {v0, v2, p2}, Lcom/cmcm/support/util/ContainerHelpers;->binarySearch([III)I
move-result v0
if-ltz v0, :cond_5
iget-object v1, p0, Lcom/cmcm/support/util/ArraySet;->mArray:[Ljava/lang/Object;
aget-object v1, v1, v0
invoke-virtual {p1, v1}, Ljava/lang/Object;->equals(Ljava/lang/Object;)Z
move-result v1
if-nez v1, :cond_5
add-int/lit8 v1, v0, 0x1
:goto_1a
if-ge v1, v2, :cond_31
iget-object v3, p0, Lcom/cmcm/support/util/ArraySet;->mHashes:[I
aget v3, v3, v1
if-ne v3, p2, :cond_31
iget-object v3, p0, Lcom/cmcm/support/util/ArraySet;->mArray:[Ljava/lang/Object;
aget-object v3, v3, v1
invoke-virtual {p1, v3}, Ljava/lang/Object;->equals(Ljava/lang/Object;)Z
move-result v3
if-eqz v3, :cond_2e
move v0, v1
goto :goto_5
:cond_2e
add-int/lit8 v1, v1, 0x1
goto :goto_1a
:cond_31
add-int/lit8 v0, v0, -0x1
:goto_33
if-ltz v0, :cond_48
iget-object v2, p0, Lcom/cmcm/support/util/ArraySet;->mHashes:[I
aget v2, v2, v0
if-ne v2, p2, :cond_48
iget-object v2, p0, Lcom/cmcm/support/util/ArraySet;->mArray:[Ljava/lang/Object;
aget-object v2, v2, v0
invoke-virtual {p1, v2}, Ljava/lang/Object;->equals(Ljava/lang/Object;)Z
move-result v2
if-nez v2, :cond_5
add-int/lit8 v0, v0, -0x1
goto :goto_33
:cond_48
xor-int/lit8 v0, v1, -0x1
goto :goto_5
.end method
.method private indexOfNull()I
.registers 5
iget v2, p0, Lcom/cmcm/support/util/ArraySet;->mSize:I
if-nez v2, :cond_6
const/4 v0, -0x1
:cond_5
:goto_5
return v0
:cond_6
iget-object v0, p0, Lcom/cmcm/support/util/ArraySet;->mHashes:[I
const/4 v1, 0x0
invoke-static {v0, v2, v1}, Lcom/cmcm/support/util/ContainerHelpers;->binarySearch([III)I
move-result v0
if-ltz v0, :cond_5
iget-object v1, p0, Lcom/cmcm/support/util/ArraySet;->mArray:[Ljava/lang/Object;
aget-object v1, v1, v0
if-eqz v1, :cond_5
add-int/lit8 v1, v0, 0x1
:goto_17
if-ge v1, v2, :cond_2a
iget-object v3, p0, Lcom/cmcm/support/util/ArraySet;->mHashes:[I
aget v3, v3, v1
if-nez v3, :cond_2a
iget-object v3, p0, Lcom/cmcm/support/util/ArraySet;->mArray:[Ljava/lang/Object;
aget-object v3, v3, v1
if-nez v3, :cond_27
move v0, v1
goto :goto_5
:cond_27
add-int/lit8 v1, v1, 0x1
goto :goto_17
:cond_2a
add-int/lit8 v0, v0, -0x1
:goto_2c
if-ltz v0, :cond_3d
iget-object v2, p0, Lcom/cmcm/support/util/ArraySet;->mHashes:[I
aget v2, v2, v0
if-nez v2, :cond_3d
iget-object v2, p0, Lcom/cmcm/support/util/ArraySet;->mArray:[Ljava/lang/Object;
aget-object v2, v2, v0
if-eqz v2, :cond_5
add-int/lit8 v0, v0, -0x1
goto :goto_2c
:cond_3d
xor-int/lit8 v0, v1, -0x1
goto :goto_5
.end method
# virtual methods
.method public add(Ljava/lang/Object;)Z
.registers 9
.annotation system Ldalvik/annotation/Signature;
value = {
"(TE;)Z"
}
.end annotation
const/16 v0, 0x8
const/4 v1, 0x4
const/4 v2, 0x0
if-nez p1, :cond_f
invoke-direct {p0}, Lcom/cmcm/support/util/ArraySet;->indexOfNull()I
move-result v3
move v4, v2
:goto_b
if-ltz v3, :cond_18
move v0, v2
:goto_e
return v0
:cond_f
invoke-virtual {p1}, Ljava/lang/Object;->hashCode()I
move-result v4
invoke-direct {p0, p1, v4}, Lcom/cmcm/support/util/ArraySet;->indexOf(Ljava/lang/Object;I)I
move-result v3
goto :goto_b
:cond_18
xor-int/lit8 v3, v3, -0x1
iget v5, p0, Lcom/cmcm/support/util/ArraySet;->mSize:I
iget-object v6, p0, Lcom/cmcm/support/util/ArraySet;->mHashes:[I
array-length v6, v6
if-lt v5, v6, :cond_49
iget v5, p0, Lcom/cmcm/support/util/ArraySet;->mSize:I
if-lt v5, v0, :cond_75
iget v0, p0, Lcom/cmcm/support/util/ArraySet;->mSize:I
iget v1, p0, Lcom/cmcm/support/util/ArraySet;->mSize:I
shr-int/lit8 v1, v1, 0x1
add-int/2addr v0, v1
:cond_2c
:goto_2c
iget-object v1, p0, Lcom/cmcm/support/util/ArraySet;->mHashes:[I
iget-object v5, p0, Lcom/cmcm/support/util/ArraySet;->mArray:[Ljava/lang/Object;
invoke-direct {p0, v0}, Lcom/cmcm/support/util/ArraySet;->allocArrays(I)V
iget-object v0, p0, Lcom/cmcm/support/util/ArraySet;->mHashes:[I
array-length v0, v0
if-lez v0, :cond_44
iget-object v0, p0, Lcom/cmcm/support/util/ArraySet;->mHashes:[I
array-length v6, v1
invoke-static {v1, v2, v0, v2, v6}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
iget-object v0, p0, Lcom/cmcm/support/util/ArraySet;->mArray:[Ljava/lang/Object;
array-length v6, v5
invoke-static {v5, v2, v0, v2, v6}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
:cond_44
iget v0, p0, Lcom/cmcm/support/util/ArraySet;->mSize:I
invoke-static {v1, v5, v0}, Lcom/cmcm/support/util/ArraySet;->freeArrays([I[Ljava/lang/Object;I)V
:cond_49
iget v0, p0, Lcom/cmcm/support/util/ArraySet;->mSize:I
if-ge v3, v0, :cond_65
iget-object v0, p0, Lcom/cmcm/support/util/ArraySet;->mHashes:[I
iget-object v1, p0, Lcom/cmcm/support/util/ArraySet;->mHashes:[I
add-int/lit8 v2, v3, 0x1
iget v5, p0, Lcom/cmcm/support/util/ArraySet;->mSize:I
sub-int/2addr v5, v3
invoke-static {v0, v3, v1, v2, v5}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
iget-object v0, p0, Lcom/cmcm/support/util/ArraySet;->mArray:[Ljava/lang/Object;
iget-object v1, p0, Lcom/cmcm/support/util/ArraySet;->mArray:[Ljava/lang/Object;
add-int/lit8 v2, v3, 0x1
iget v5, p0, Lcom/cmcm/support/util/ArraySet;->mSize:I
sub-int/2addr v5, v3
invoke-static {v0, v3, v1, v2, v5}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
:cond_65
iget-object v0, p0, Lcom/cmcm/support/util/ArraySet;->mHashes:[I
aput v4, v0, v3
iget-object v0, p0, Lcom/cmcm/support/util/ArraySet;->mArray:[Ljava/lang/Object;
aput-object p1, v0, v3
iget v0, p0, Lcom/cmcm/support/util/ArraySet;->mSize:I
add-int/lit8 v0, v0, 0x1
iput v0, p0, Lcom/cmcm/support/util/ArraySet;->mSize:I
const/4 v0, 0x1
goto :goto_e
:cond_75
iget v5, p0, Lcom/cmcm/support/util/ArraySet;->mSize:I
if-ge v5, v1, :cond_2c
move v0, v1
goto :goto_2c
.end method
.method public addAll(Ljava/util/Collection;)Z
.registers 5
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/util/Collection",
"<+TE;>;)Z"
}
.end annotation
iget v0, p0, Lcom/cmcm/support/util/ArraySet;->mSize:I
invoke-interface {p1}, Ljava/util/Collection;->size()I
move-result v1
add-int/2addr v0, v1
invoke-virtual {p0, v0}, Lcom/cmcm/support/util/ArraySet;->ensureCapacity(I)V
const/4 v0, 0x0
invoke-interface {p1}, Ljava/util/Collection;->iterator()Ljava/util/Iterator;
move-result-object v1
:goto_f
invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z
move-result v2
if-eqz v2, :cond_1f
invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v2
invoke-virtual {p0, v2}, Lcom/cmcm/support/util/ArraySet;->add(Ljava/lang/Object;)Z
move-result v2
or-int/2addr v0, v2
goto :goto_f
:cond_1f
return v0
.end method
.method public clear()V
.registers 4
iget v0, p0, Lcom/cmcm/support/util/ArraySet;->mSize:I
if-eqz v0, :cond_18
iget-object v0, p0, Lcom/cmcm/support/util/ArraySet;->mHashes:[I
iget-object v1, p0, Lcom/cmcm/support/util/ArraySet;->mArray:[Ljava/lang/Object;
iget v2, p0, Lcom/cmcm/support/util/ArraySet;->mSize:I
invoke-static {v0, v1, v2}, Lcom/cmcm/support/util/ArraySet;->freeArrays([I[Ljava/lang/Object;I)V
sget-object v0, Lcom/cmcm/support/util/ContainerHelpers;->EMPTY_INTS:[I
iput-object v0, p0, Lcom/cmcm/support/util/ArraySet;->mHashes:[I
sget-object v0, Lcom/cmcm/support/util/ContainerHelpers;->EMPTY_OBJECTS:[Ljava/lang/Object;
iput-object v0, p0, Lcom/cmcm/support/util/ArraySet;->mArray:[Ljava/lang/Object;
const/4 v0, 0x0
iput v0, p0, Lcom/cmcm/support/util/ArraySet;->mSize:I
:cond_18
return-void
.end method
.method public contains(Ljava/lang/Object;)Z
.registers 5
const/4 v0, 0x1
const/4 v1, 0x0
if-nez p1, :cond_d
invoke-direct {p0}, Lcom/cmcm/support/util/ArraySet;->indexOfNull()I
move-result v2
if-ltz v2, :cond_b
:cond_a
:goto_a
return v0
:cond_b
move v0, v1
goto :goto_a
:cond_d
invoke-virtual {p1}, Ljava/lang/Object;->hashCode()I
move-result v2
invoke-direct {p0, p1, v2}, Lcom/cmcm/support/util/ArraySet;->indexOf(Ljava/lang/Object;I)I
move-result v2
if-gez v2, :cond_a
move v0, v1
goto :goto_a
.end method
.method public containsAll(Ljava/util/Collection;)Z
.registers 4
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/util/Collection",
"<*>;)Z"
}
.end annotation
invoke-interface {p1}, Ljava/util/Collection;->iterator()Ljava/util/Iterator;
move-result-object v0
:cond_4
invoke-interface {v0}, Ljava/util/Iterator;->hasNext()Z
move-result v1
if-eqz v1, :cond_16
invoke-interface {v0}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v1
invoke-virtual {p0, v1}, Lcom/cmcm/support/util/ArraySet;->contains(Ljava/lang/Object;)Z
move-result v1
if-nez v1, :cond_4
const/4 v0, 0x0
:goto_15
return v0
:cond_16
const/4 v0, 0x1
goto :goto_15
.end method
.method public ensureCapacity(I)V
.registers 7
const/4 v4, 0x0
iget-object v0, p0, Lcom/cmcm/support/util/ArraySet;->mHashes:[I
array-length v0, v0
if-ge v0, p1, :cond_24
iget-object v0, p0, Lcom/cmcm/support/util/ArraySet;->mHashes:[I
iget-object v1, p0, Lcom/cmcm/support/util/ArraySet;->mArray:[Ljava/lang/Object;
invoke-direct {p0, p1}, Lcom/cmcm/support/util/ArraySet;->allocArrays(I)V
iget v2, p0, Lcom/cmcm/support/util/ArraySet;->mSize:I
if-lez v2, :cond_1f
iget-object v2, p0, Lcom/cmcm/support/util/ArraySet;->mHashes:[I
iget v3, p0, Lcom/cmcm/support/util/ArraySet;->mSize:I
invoke-static {v0, v4, v2, v4, v3}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
iget-object v2, p0, Lcom/cmcm/support/util/ArraySet;->mArray:[Ljava/lang/Object;
iget v3, p0, Lcom/cmcm/support/util/ArraySet;->mSize:I
invoke-static {v1, v4, v2, v4, v3}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
:cond_1f
iget v2, p0, Lcom/cmcm/support/util/ArraySet;->mSize:I
invoke-static {v0, v1, v2}, Lcom/cmcm/support/util/ArraySet;->freeArrays([I[Ljava/lang/Object;I)V
:cond_24
return-void
.end method
.method public equals(Ljava/lang/Object;)Z
.registers 6
const/4 v0, 0x1
const/4 v1, 0x0
if-ne p0, p1, :cond_5
:cond_4
:goto_4
return v0
:cond_5
instance-of v2, p1, Ljava/util/Set;
if-eqz v2, :cond_31
check-cast p1, Ljava/util/Set;
invoke-virtual {p0}, Lcom/cmcm/support/util/ArraySet;->size()I
move-result v2
invoke-interface {p1}, Ljava/util/Set;->size()I
move-result v3
if-eq v2, v3, :cond_17
move v0, v1
goto :goto_4
:cond_17
move v2, v1
:goto_18
:try_start_18
iget v3, p0, Lcom/cmcm/support/util/ArraySet;->mSize:I
if-ge v2, v3, :cond_4
invoke-virtual {p0, v2}, Lcom/cmcm/support/util/ArraySet;->valueAt(I)Ljava/lang/Object;
move-result-object v3
invoke-interface {p1, v3}, Ljava/util/Set;->contains(Ljava/lang/Object;)Z
:try_end_23
.catch Ljava/lang/NullPointerException; {:try_start_18 .. :try_end_23} :catch_2b
.catch Ljava/lang/ClassCastException; {:try_start_18 .. :try_end_23} :catch_2e
move-result v3
if-nez v3, :cond_28
move v0, v1
goto :goto_4
:cond_28
add-int/lit8 v2, v2, 0x1
goto :goto_18
:catch_2b
move-exception v0
move v0, v1
goto :goto_4
:catch_2e
move-exception v0
move v0, v1
goto :goto_4
:cond_31
move v0, v1
goto :goto_4
.end method
.method public hashCode()I
.registers 6
const/4 v0, 0x0
iget-object v2, p0, Lcom/cmcm/support/util/ArraySet;->mHashes:[I
iget v3, p0, Lcom/cmcm/support/util/ArraySet;->mSize:I
move v1, v0
:goto_6
if-ge v0, v3, :cond_e
aget v4, v2, v0
add-int/2addr v1, v4
add-int/lit8 v0, v0, 0x1
goto :goto_6
:cond_e
return v1
.end method
.method public isEmpty()Z
.registers 2
iget v0, p0, Lcom/cmcm/support/util/ArraySet;->mSize:I
if-gtz v0, :cond_6
const/4 v0, 0x1
:goto_5
return v0
:cond_6
const/4 v0, 0x0
goto :goto_5
.end method
.method public iterator()Ljava/util/Iterator;
.registers 2
.annotation system Ldalvik/annotation/Signature;
value = {
"()",
"Ljava/util/Iterator",
"<TE;>;"
}
.end annotation
invoke-direct {p0}, Lcom/cmcm/support/util/ArraySet;->getCollection()Lcom/cmcm/support/util/MapCollections;
move-result-object v0
invoke-virtual {v0}, Lcom/cmcm/support/util/MapCollections;->getKeySet()Ljava/util/Set;
move-result-object v0
invoke-interface {v0}, Ljava/util/Set;->iterator()Ljava/util/Iterator;
move-result-object v0
return-object v0
.end method
.method public putAll(Lcom/cmcm/support/util/ArraySet;)V
.registers 6
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Lcom/cmcm/support/util/ArraySet",
"<+TE;>;)V"
}
.end annotation
const/4 v0, 0x0
iget v1, p1, Lcom/cmcm/support/util/ArraySet;->mSize:I
iget v2, p0, Lcom/cmcm/support/util/ArraySet;->mSize:I
add-int/2addr v2, v1
invoke-virtual {p0, v2}, Lcom/cmcm/support/util/ArraySet;->ensureCapacity(I)V
iget v2, p0, Lcom/cmcm/support/util/ArraySet;->mSize:I
if-nez v2, :cond_20
if-lez v1, :cond_1f
iget-object v2, p1, Lcom/cmcm/support/util/ArraySet;->mHashes:[I
iget-object v3, p0, Lcom/cmcm/support/util/ArraySet;->mHashes:[I
invoke-static {v2, v0, v3, v0, v1}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
iget-object v2, p1, Lcom/cmcm/support/util/ArraySet;->mArray:[Ljava/lang/Object;
iget-object v3, p0, Lcom/cmcm/support/util/ArraySet;->mArray:[Ljava/lang/Object;
invoke-static {v2, v0, v3, v0, v1}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
iput v1, p0, Lcom/cmcm/support/util/ArraySet;->mSize:I
:cond_1f
return-void
:cond_20
:goto_20
if-ge v0, v1, :cond_1f
invoke-virtual {p1, v0}, Lcom/cmcm/support/util/ArraySet;->valueAt(I)Ljava/lang/Object;
move-result-object v2
invoke-virtual {p0, v2}, Lcom/cmcm/support/util/ArraySet;->add(Ljava/lang/Object;)Z
add-int/lit8 v0, v0, 0x1
goto :goto_20
.end method
.method public remove(Ljava/lang/Object;)Z
.registers 3
if-nez p1, :cond_d
invoke-direct {p0}, Lcom/cmcm/support/util/ArraySet;->indexOfNull()I
move-result v0
:goto_6
if-ltz v0, :cond_16
invoke-virtual {p0, v0}, Lcom/cmcm/support/util/ArraySet;->removeAt(I)Ljava/lang/Object;
const/4 v0, 0x1
:goto_c
return v0
:cond_d
invoke-virtual {p1}, Ljava/lang/Object;->hashCode()I
move-result v0
invoke-direct {p0, p1, v0}, Lcom/cmcm/support/util/ArraySet;->indexOf(Ljava/lang/Object;I)I
move-result v0
goto :goto_6
:cond_16
const/4 v0, 0x0
goto :goto_c
.end method
.method public removeAll(Ljava/util/Collection;)Z
.registers 5
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/util/Collection",
"<*>;)Z"
}
.end annotation
const/4 v0, 0x0
invoke-interface {p1}, Ljava/util/Collection;->iterator()Ljava/util/Iterator;
move-result-object v1
:goto_5
invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z
move-result v2
if-eqz v2, :cond_15
invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v2
invoke-virtual {p0, v2}, Lcom/cmcm/support/util/ArraySet;->remove(Ljava/lang/Object;)Z
move-result v2
or-int/2addr v0, v2
goto :goto_5
:cond_15
return v0
.end method
.method public removeAt(I)Ljava/lang/Object;
.registers 8
.annotation system Ldalvik/annotation/Signature;
value = {
"(I)TE;"
}
.end annotation
const/16 v0, 0x8
const/4 v4, 0x0
iget-object v1, p0, Lcom/cmcm/support/util/ArraySet;->mArray:[Ljava/lang/Object;
aget-object v1, v1, p1
iget v2, p0, Lcom/cmcm/support/util/ArraySet;->mSize:I
const/4 v3, 0x1
if-gt v2, v3, :cond_20
iget-object v0, p0, Lcom/cmcm/support/util/ArraySet;->mHashes:[I
iget-object v2, p0, Lcom/cmcm/support/util/ArraySet;->mArray:[Ljava/lang/Object;
iget v3, p0, Lcom/cmcm/support/util/ArraySet;->mSize:I
invoke-static {v0, v2, v3}, Lcom/cmcm/support/util/ArraySet;->freeArrays([I[Ljava/lang/Object;I)V
sget-object v0, Lcom/cmcm/support/util/ContainerHelpers;->EMPTY_INTS:[I
iput-object v0, p0, Lcom/cmcm/support/util/ArraySet;->mHashes:[I
sget-object v0, Lcom/cmcm/support/util/ContainerHelpers;->EMPTY_OBJECTS:[Ljava/lang/Object;
iput-object v0, p0, Lcom/cmcm/support/util/ArraySet;->mArray:[Ljava/lang/Object;
iput v4, p0, Lcom/cmcm/support/util/ArraySet;->mSize:I
:cond_1f
:goto_1f
return-object v1
:cond_20
iget-object v2, p0, Lcom/cmcm/support/util/ArraySet;->mHashes:[I
array-length v2, v2
if-le v2, v0, :cond_6b
iget v2, p0, Lcom/cmcm/support/util/ArraySet;->mSize:I
iget-object v3, p0, Lcom/cmcm/support/util/ArraySet;->mHashes:[I
array-length v3, v3
div-int/lit8 v3, v3, 0x3
if-ge v2, v3, :cond_6b
iget v2, p0, Lcom/cmcm/support/util/ArraySet;->mSize:I
if-le v2, v0, :cond_39
iget v0, p0, Lcom/cmcm/support/util/ArraySet;->mSize:I
iget v2, p0, Lcom/cmcm/support/util/ArraySet;->mSize:I
shr-int/lit8 v2, v2, 0x1
add-int/2addr v0, v2
:cond_39
iget-object v2, p0, Lcom/cmcm/support/util/ArraySet;->mHashes:[I
iget-object v3, p0, Lcom/cmcm/support/util/ArraySet;->mArray:[Ljava/lang/Object;
invoke-direct {p0, v0}, Lcom/cmcm/support/util/ArraySet;->allocArrays(I)V
iget v0, p0, Lcom/cmcm/support/util/ArraySet;->mSize:I
add-int/lit8 v0, v0, -0x1
iput v0, p0, Lcom/cmcm/support/util/ArraySet;->mSize:I
if-lez p1, :cond_52
iget-object v0, p0, Lcom/cmcm/support/util/ArraySet;->mHashes:[I
invoke-static {v2, v4, v0, v4, p1}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
iget-object v0, p0, Lcom/cmcm/support/util/ArraySet;->mArray:[Ljava/lang/Object;
invoke-static {v3, v4, v0, v4, p1}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
:cond_52
iget v0, p0, Lcom/cmcm/support/util/ArraySet;->mSize:I
if-ge p1, v0, :cond_1f
add-int/lit8 v0, p1, 0x1
iget-object v4, p0, Lcom/cmcm/support/util/ArraySet;->mHashes:[I
iget v5, p0, Lcom/cmcm/support/util/ArraySet;->mSize:I
sub-int/2addr v5, p1
invoke-static {v2, v0, v4, p1, v5}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
add-int/lit8 v0, p1, 0x1
iget-object v2, p0, Lcom/cmcm/support/util/ArraySet;->mArray:[Ljava/lang/Object;
iget v4, p0, Lcom/cmcm/support/util/ArraySet;->mSize:I
sub-int/2addr v4, p1
invoke-static {v3, v0, v2, p1, v4}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
goto :goto_1f
:cond_6b
iget v0, p0, Lcom/cmcm/support/util/ArraySet;->mSize:I
add-int/lit8 v0, v0, -0x1
iput v0, p0, Lcom/cmcm/support/util/ArraySet;->mSize:I
iget v0, p0, Lcom/cmcm/support/util/ArraySet;->mSize:I
if-ge p1, v0, :cond_8d
iget-object v0, p0, Lcom/cmcm/support/util/ArraySet;->mHashes:[I
add-int/lit8 v2, p1, 0x1
iget-object v3, p0, Lcom/cmcm/support/util/ArraySet;->mHashes:[I
iget v4, p0, Lcom/cmcm/support/util/ArraySet;->mSize:I
sub-int/2addr v4, p1
invoke-static {v0, v2, v3, p1, v4}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
iget-object v0, p0, Lcom/cmcm/support/util/ArraySet;->mArray:[Ljava/lang/Object;
add-int/lit8 v2, p1, 0x1
iget-object v3, p0, Lcom/cmcm/support/util/ArraySet;->mArray:[Ljava/lang/Object;
iget v4, p0, Lcom/cmcm/support/util/ArraySet;->mSize:I
sub-int/2addr v4, p1
invoke-static {v0, v2, v3, p1, v4}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
:cond_8d
iget-object v0, p0, Lcom/cmcm/support/util/ArraySet;->mArray:[Ljava/lang/Object;
iget v2, p0, Lcom/cmcm/support/util/ArraySet;->mSize:I
const/4 v3, 0x0
aput-object v3, v0, v2
goto :goto_1f
.end method
.method public retainAll(Ljava/util/Collection;)Z
.registers 6
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/util/Collection",
"<*>;)Z"
}
.end annotation
const/4 v1, 0x0
iget v0, p0, Lcom/cmcm/support/util/ArraySet;->mSize:I
add-int/lit8 v0, v0, -0x1
move v3, v0
move v0, v1
move v1, v3
:goto_8
if-ltz v1, :cond_1b
iget-object v2, p0, Lcom/cmcm/support/util/ArraySet;->mArray:[Ljava/lang/Object;
aget-object v2, v2, v1
invoke-interface {p1, v2}, Ljava/util/Collection;->contains(Ljava/lang/Object;)Z
move-result v2
if-nez v2, :cond_18
invoke-virtual {p0, v1}, Lcom/cmcm/support/util/ArraySet;->removeAt(I)Ljava/lang/Object;
const/4 v0, 0x1
:cond_18
add-int/lit8 v1, v1, -0x1
goto :goto_8
:cond_1b
return v0
.end method
.method public size()I
.registers 2
iget v0, p0, Lcom/cmcm/support/util/ArraySet;->mSize:I
return v0
.end method
.method public toArray()[Ljava/lang/Object;
.registers 5
const/4 v3, 0x0
iget v0, p0, Lcom/cmcm/support/util/ArraySet;->mSize:I
new-array v0, v0, [Ljava/lang/Object;
iget-object v1, p0, Lcom/cmcm/support/util/ArraySet;->mArray:[Ljava/lang/Object;
iget v2, p0, Lcom/cmcm/support/util/ArraySet;->mSize:I
invoke-static {v1, v3, v0, v3, v2}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
return-object v0
.end method
.method public toArray([Ljava/lang/Object;)[Ljava/lang/Object;
.registers 6
.annotation system Ldalvik/annotation/Signature;
value = {
"<T:",
"Ljava/lang/Object;",
">([TT;)[TT;"
}
.end annotation
const/4 v3, 0x0
array-length v0, p1
iget v1, p0, Lcom/cmcm/support/util/ArraySet;->mSize:I
if-ge v0, v1, :cond_2a
invoke-virtual {p1}, Ljava/lang/Object;->getClass()Ljava/lang/Class;
move-result-object v0
invoke-virtual {v0}, Ljava/lang/Class;->getComponentType()Ljava/lang/Class;
move-result-object v0
iget v1, p0, Lcom/cmcm/support/util/ArraySet;->mSize:I
invoke-static {v0, v1}, Ljava/lang/reflect/Array;->newInstance(Ljava/lang/Class;I)Ljava/lang/Object;
move-result-object v0
check-cast v0, [Ljava/lang/Object;
check-cast v0, [Ljava/lang/Object;
:goto_18
iget-object v1, p0, Lcom/cmcm/support/util/ArraySet;->mArray:[Ljava/lang/Object;
iget v2, p0, Lcom/cmcm/support/util/ArraySet;->mSize:I
invoke-static {v1, v3, v0, v3, v2}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
array-length v1, v0
iget v2, p0, Lcom/cmcm/support/util/ArraySet;->mSize:I
if-le v1, v2, :cond_29
iget v1, p0, Lcom/cmcm/support/util/ArraySet;->mSize:I
const/4 v2, 0x0
aput-object v2, v0, v1
:cond_29
return-object v0
:cond_2a
move-object v0, p1
goto :goto_18
.end method
.method public toString()Ljava/lang/String;
.registers 4
invoke-virtual {p0}, Lcom/cmcm/support/util/ArraySet;->isEmpty()Z
move-result v0
if-eqz v0, :cond_a
const-string/jumbo v0, "{}"
:goto_9
return-object v0
:cond_a
new-instance v1, Ljava/lang/StringBuilder;
iget v0, p0, Lcom/cmcm/support/util/ArraySet;->mSize:I
mul-int/lit8 v0, v0, 0xe
invoke-direct {v1, v0}, Ljava/lang/StringBuilder;-><init>(I)V
const/16 v0, 0x7b
invoke-virtual {v1, v0}, Ljava/lang/StringBuilder;->append(C)Ljava/lang/StringBuilder;
const/4 v0, 0x0
:goto_19
iget v2, p0, Lcom/cmcm/support/util/ArraySet;->mSize:I
if-ge v0, v2, :cond_38
if-lez v0, :cond_25
const-string/jumbo v2, ", "
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
:cond_25
invoke-virtual {p0, v0}, Lcom/cmcm/support/util/ArraySet;->valueAt(I)Ljava/lang/Object;
move-result-object v2
if-eq v2, p0, :cond_31
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
:goto_2e
add-int/lit8 v0, v0, 0x1
goto :goto_19
:cond_31
const-string/jumbo v2, "(this Set)"
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
goto :goto_2e
:cond_38
const/16 v0, 0x7d
invoke-virtual {v1, v0}, Ljava/lang/StringBuilder;->append(C)Ljava/lang/StringBuilder;
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v0
goto :goto_9
.end method
.method public valueAt(I)Ljava/lang/Object;
.registers 3
.annotation system Ldalvik/annotation/Signature;
value = {
"(I)TE;"
}
.end annotation
iget-object v0, p0, Lcom/cmcm/support/util/ArraySet;->mArray:[Ljava/lang/Object;
aget-object v0, v0, p1
return-object v0
.end method