ArraySet.smali
.class public final Lcom/cmcm/support/util/ArraySet;
.super Ljava/lang/Object;
.source "ArraySet.java"
# 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
.prologue
.line 242
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 243
sget-object v0, Lcom/cmcm/support/util/ContainerHelpers;->EMPTY_INTS:[I
iput-object v0, p0, Lcom/cmcm/support/util/ArraySet;->mHashes:[I
.line 244
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;
.line 245
const/4 v0, 0x0
iput v0, p0, Lcom/cmcm/support/util/ArraySet;->mSize:I
.line 246
return-void
.end method
.method public constructor <init>(I)V
.registers 3
.prologue
.line 251
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 252
if-nez p1, :cond_11
.line 253
sget-object v0, Lcom/cmcm/support/util/ContainerHelpers;->EMPTY_INTS:[I
iput-object v0, p0, Lcom/cmcm/support/util/ArraySet;->mHashes:[I
.line 254
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;
.line 258
:goto_d
const/4 v0, 0x0
iput v0, p0, Lcom/cmcm/support/util/ArraySet;->mSize:I
.line 259
return-void
.line 256
: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
.prologue
.line 266
invoke-direct {p0}, Lcom/cmcm/support/util/ArraySet;-><init>()V
.line 267
if-eqz p1, :cond_8
.line 268
invoke-virtual {p0, p1}, Lcom/cmcm/support/util/ArraySet;->addAll(Ljava/util/Collection;)Z
.line 270
:cond_8
return-void
.end method
.method static synthetic access$000(Lcom/cmcm/support/util/ArraySet;)I
.registers 2
.prologue
.line 54
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
.prologue
.line 54
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
.prologue
.line 166
const/16 v0, 0x8
if-ne p1, v0, :cond_3d
.line 167
const-class v1, Lcom/cmcm/support/util/ArraySet;
monitor-enter v1
.line 168
:try_start_7
sget-object v0, Lcom/cmcm/support/util/ArraySet;->mTwiceBaseCache:[Ljava/lang/Object;
if-eqz v0, :cond_30
.line 169
sget-object v2, Lcom/cmcm/support/util/ArraySet;->mTwiceBaseCache:[Ljava/lang/Object;
.line 170
iput-object v2, p0, Lcom/cmcm/support/util/ArraySet;->mArray:[Ljava/lang/Object;
.line 171
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;
.line 172
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
.line 173
const/4 v0, 0x0
const/4 v3, 0x1
const/4 v4, 0x0
aput-object v4, v2, v3
aput-object v4, v2, v0
.line 174
sget v0, Lcom/cmcm/support/util/ArraySet;->mTwiceBaseCacheSize:I
add-int/lit8 v0, v0, -0x1
sput v0, Lcom/cmcm/support/util/ArraySet;->mTwiceBaseCacheSize:I
.line 179
monitor-exit v1
.line 201
:goto_2f
return-void
.line 181
:cond_30
monitor-exit v1
:try_end_31
.catchall {:try_start_7 .. :try_end_31} :catchall_3a
.line 199
:cond_31
:goto_31
new-array v0, p1, [I
iput-object v0, p0, Lcom/cmcm/support/util/ArraySet;->mHashes:[I
.line 200
new-array v0, p1, [Ljava/lang/Object;
iput-object v0, p0, Lcom/cmcm/support/util/ArraySet;->mArray:[Ljava/lang/Object;
goto :goto_2f
.line 181
: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
.line 182
:cond_3d
const/4 v0, 0x4
if-ne p1, v0, :cond_31
.line 183
const-class v1, Lcom/cmcm/support/util/ArraySet;
monitor-enter v1
.line 184
:try_start_43
sget-object v0, Lcom/cmcm/support/util/ArraySet;->mBaseCache:[Ljava/lang/Object;
if-eqz v0, :cond_6f
.line 185
sget-object v2, Lcom/cmcm/support/util/ArraySet;->mBaseCache:[Ljava/lang/Object;
.line 186
iput-object v2, p0, Lcom/cmcm/support/util/ArraySet;->mArray:[Ljava/lang/Object;
.line 187
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;
.line 188
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
.line 189
const/4 v0, 0x0
const/4 v3, 0x1
const/4 v4, 0x0
aput-object v4, v2, v3
aput-object v4, v2, v0
.line 190
sget v0, Lcom/cmcm/support/util/ArraySet;->mBaseCacheSize:I
add-int/lit8 v0, v0, -0x1
sput v0, Lcom/cmcm/support/util/ArraySet;->mBaseCacheSize:I
.line 194
monitor-exit v1
goto :goto_2f
.line 196
: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
.prologue
const/16 v2, 0xa
const/4 v3, 0x2
.line 205
array-length v0, p0
const/16 v1, 0x8
if-ne v0, v1, :cond_2e
.line 206
const-class v1, Lcom/cmcm/support/util/ArraySet;
monitor-enter v1
.line 207
:try_start_b
sget v0, Lcom/cmcm/support/util/ArraySet;->mTwiceBaseCacheSize:I
if-ge v0, v2, :cond_29
.line 208
const/4 v0, 0x0
sget-object v2, Lcom/cmcm/support/util/ArraySet;->mTwiceBaseCache:[Ljava/lang/Object;
aput-object v2, p1, v0
.line 209
const/4 v0, 0x1
aput-object p0, p1, v0
.line 210
add-int/lit8 v0, p2, -0x1
:goto_19
if-lt v0, v3, :cond_21
.line 211
const/4 v2, 0x0
aput-object v2, p1, v0
.line 210
add-int/lit8 v0, v0, -0x1
goto :goto_19
.line 213
:cond_21
sput-object p1, Lcom/cmcm/support/util/ArraySet;->mTwiceBaseCache:[Ljava/lang/Object;
.line 214
sget v0, Lcom/cmcm/support/util/ArraySet;->mTwiceBaseCacheSize:I
add-int/lit8 v0, v0, 0x1
sput v0, Lcom/cmcm/support/util/ArraySet;->mTwiceBaseCacheSize:I
.line 219
:cond_29
monitor-exit v1
.line 236
:cond_2a
:goto_2a
return-void
.line 219
:catchall_2b
move-exception v0
monitor-exit v1
:try_end_2d
.catchall {:try_start_b .. :try_end_2d} :catchall_2b
throw v0
.line 220
:cond_2e
array-length v0, p0
const/4 v1, 0x4
if-ne v0, v1, :cond_2a
.line 221
const-class v1, Lcom/cmcm/support/util/ArraySet;
monitor-enter v1
.line 222
:try_start_35
sget v0, Lcom/cmcm/support/util/ArraySet;->mBaseCacheSize:I
if-ge v0, v2, :cond_53
.line 223
const/4 v0, 0x0
sget-object v2, Lcom/cmcm/support/util/ArraySet;->mBaseCache:[Ljava/lang/Object;
aput-object v2, p1, v0
.line 224
const/4 v0, 0x1
aput-object p0, p1, v0
.line 225
add-int/lit8 v0, p2, -0x1
:goto_43
if-lt v0, v3, :cond_4b
.line 226
const/4 v2, 0x0
aput-object v2, p1, v0
.line 225
add-int/lit8 v0, v0, -0x1
goto :goto_43
.line 228
:cond_4b
sput-object p1, Lcom/cmcm/support/util/ArraySet;->mBaseCache:[Ljava/lang/Object;
.line 229
sget v0, Lcom/cmcm/support/util/ArraySet;->mBaseCacheSize:I
add-int/lit8 v0, v0, 0x1
sput v0, Lcom/cmcm/support/util/ArraySet;->mBaseCacheSize:I
.line 234
: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
.prologue
.line 619
iget-object v0, p0, Lcom/cmcm/support/util/ArraySet;->mCollections:Lcom/cmcm/support/util/MapCollections;
if-nez v0, :cond_b
.line 620
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;
.line 669
: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
.prologue
.line 86
iget v2, p0, Lcom/cmcm/support/util/ArraySet;->mSize:I
.line 89
if-nez v2, :cond_6
.line 90
const/4 v0, -0x1
.line 122
:cond_5
:goto_5
return v0
.line 93
: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
.line 96
if-ltz v0, :cond_5
.line 101
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
.line 107
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
.line 108
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
.line 109
goto :goto_5
.line 107
:cond_2e
add-int/lit8 v1, v1, 0x1
goto :goto_1a
.line 113
: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
.line 114
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
.line 113
add-int/lit8 v0, v0, -0x1
goto :goto_33
.line 122
:cond_48
xor-int/lit8 v0, v1, -0x1
goto :goto_5
.end method
.method private indexOfNull()I
.registers 5
.prologue
.line 126
iget v2, p0, Lcom/cmcm/support/util/ArraySet;->mSize:I
.line 129
if-nez v2, :cond_6
.line 130
const/4 v0, -0x1
.line 162
:cond_5
:goto_5
return v0
.line 133
: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
.line 136
if-ltz v0, :cond_5
.line 141
iget-object v1, p0, Lcom/cmcm/support/util/ArraySet;->mArray:[Ljava/lang/Object;
aget-object v1, v1, v0
if-eqz v1, :cond_5
.line 147
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
.line 148
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
.line 149
goto :goto_5
.line 147
:cond_27
add-int/lit8 v1, v1, 0x1
goto :goto_17
.line 153
: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
.line 154
iget-object v2, p0, Lcom/cmcm/support/util/ArraySet;->mArray:[Ljava/lang/Object;
aget-object v2, v2, v0
if-eqz v2, :cond_5
.line 153
add-int/lit8 v0, v0, -0x1
goto :goto_2c
.line 162
: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
.prologue
const/16 v0, 0x8
const/4 v1, 0x4
const/4 v2, 0x0
.line 348
if-nez p1, :cond_f
.line 350
invoke-direct {p0}, Lcom/cmcm/support/util/ArraySet;->indexOfNull()I
move-result v3
move v4, v2
.line 355
:goto_b
if-ltz v3, :cond_18
move v0, v2
.line 392
:goto_e
return v0
.line 352
:cond_f
invoke-virtual {p1}, Ljava/lang/Object;->hashCode()I
move-result v4
.line 353
invoke-direct {p0, p1, v4}, Lcom/cmcm/support/util/ArraySet;->indexOf(Ljava/lang/Object;I)I
move-result v3
goto :goto_b
.line 359
:cond_18
xor-int/lit8 v3, v3, -0x1
.line 360
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
.line 361
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
.line 367
:cond_2c
:goto_2c
iget-object v1, p0, Lcom/cmcm/support/util/ArraySet;->mHashes:[I
.line 368
iget-object v5, p0, Lcom/cmcm/support/util/ArraySet;->mArray:[Ljava/lang/Object;
.line 369
invoke-direct {p0, v0}, Lcom/cmcm/support/util/ArraySet;->allocArrays(I)V
.line 371
iget-object v0, p0, Lcom/cmcm/support/util/ArraySet;->mHashes:[I
array-length v0, v0
if-lez v0, :cond_44
.line 374
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
.line 375
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
.line 378
: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
.line 381
:cond_49
iget v0, p0, Lcom/cmcm/support/util/ArraySet;->mSize:I
if-ge v3, v0, :cond_65
.line 385
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
.line 386
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
.line 389
:cond_65
iget-object v0, p0, Lcom/cmcm/support/util/ArraySet;->mHashes:[I
aput v4, v0, v3
.line 390
iget-object v0, p0, Lcom/cmcm/support/util/ArraySet;->mArray:[Ljava/lang/Object;
aput-object p1, v0, v3
.line 391
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
.line 392
const/4 v0, 0x1
goto :goto_e
.line 361
: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
.prologue
.line 690
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
.line 691
const/4 v0, 0x0
.line 692
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
.line 693
invoke-virtual {p0, v2}, Lcom/cmcm/support/util/ArraySet;->add(Ljava/lang/Object;)Z
move-result v2
or-int/2addr v0, v2
.line 694
goto :goto_f
.line 695
:cond_1f
return v0
.end method
.method public clear()V
.registers 4
.prologue
.line 277
iget v0, p0, Lcom/cmcm/support/util/ArraySet;->mSize:I
if-eqz v0, :cond_18
.line 278
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
.line 279
sget-object v0, Lcom/cmcm/support/util/ContainerHelpers;->EMPTY_INTS:[I
iput-object v0, p0, Lcom/cmcm/support/util/ArraySet;->mHashes:[I
.line 280
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;
.line 281
const/4 v0, 0x0
iput v0, p0, Lcom/cmcm/support/util/ArraySet;->mSize:I
.line 283
:cond_18
return-void
.end method
.method public contains(Ljava/lang/Object;)Z
.registers 5
.prologue
const/4 v0, 0x1
const/4 v1, 0x0
.line 310
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
.line 311
:cond_d
invoke-virtual {p1}, Ljava/lang/Object;->hashCode()I
move-result v2
.line 310
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
.prologue
.line 679
invoke-interface {p1}, Ljava/util/Collection;->iterator()Ljava/util/Iterator;
move-result-object v0
.line 680
:cond_4
invoke-interface {v0}, Ljava/util/Iterator;->hasNext()Z
move-result v1
if-eqz v1, :cond_16
.line 681
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
.line 682
const/4 v0, 0x0
.line 685
:goto_15
return v0
:cond_16
const/4 v0, 0x1
goto :goto_15
.end method
.method public ensureCapacity(I)V
.registers 7
.prologue
const/4 v4, 0x0
.line 289
iget-object v0, p0, Lcom/cmcm/support/util/ArraySet;->mHashes:[I
array-length v0, v0
if-ge v0, p1, :cond_24
.line 290
iget-object v0, p0, Lcom/cmcm/support/util/ArraySet;->mHashes:[I
.line 291
iget-object v1, p0, Lcom/cmcm/support/util/ArraySet;->mArray:[Ljava/lang/Object;
.line 292
invoke-direct {p0, p1}, Lcom/cmcm/support/util/ArraySet;->allocArrays(I)V
.line 293
iget v2, p0, Lcom/cmcm/support/util/ArraySet;->mSize:I
if-lez v2, :cond_1f
.line 294
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
.line 295
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
.line 297
: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
.line 299
:cond_24
return-void
.end method
.method public equals(Ljava/lang/Object;)Z
.registers 6
.prologue
const/4 v0, 0x1
const/4 v1, 0x0
.line 543
if-ne p0, p1, :cond_5
.line 566
:cond_4
:goto_4
return v0
.line 546
:cond_5
instance-of v2, p1, Ljava/util/Set;
if-eqz v2, :cond_31
.line 547
check-cast p1, Ljava/util/Set;
.line 548
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
.line 549
goto :goto_4
:cond_17
move v2, v1
.line 553
:goto_18
:try_start_18
iget v3, p0, Lcom/cmcm/support/util/ArraySet;->mSize:I
if-ge v2, v3, :cond_4
.line 554
invoke-virtual {p0, v2}, Lcom/cmcm/support/util/ArraySet;->valueAt(I)Ljava/lang/Object;
move-result-object v3
.line 555
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
.line 556
goto :goto_4
.line 553
:cond_28
add-int/lit8 v2, v2, 0x1
goto :goto_18
.line 559
:catch_2b
move-exception v0
move v0, v1
.line 560
goto :goto_4
.line 561
:catch_2e
move-exception v0
move v0, v1
.line 562
goto :goto_4
:cond_31
move v0, v1
.line 566
goto :goto_4
.end method
.method public hashCode()I
.registers 6
.prologue
const/4 v0, 0x0
.line 574
iget-object v2, p0, Lcom/cmcm/support/util/ArraySet;->mHashes:[I
.line 576
iget v3, p0, Lcom/cmcm/support/util/ArraySet;->mSize:I
move v1, v0
:goto_6
if-ge v0, v3, :cond_e
.line 577
aget v4, v2, v0
add-int/2addr v1, v4
.line 576
add-int/lit8 v0, v0, 0x1
goto :goto_6
.line 579
:cond_e
return v1
.end method
.method public isEmpty()Z
.registers 2
.prologue
.line 331
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
.prologue
.line 674
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
.prologue
const/4 v0, 0x0
.line 402
iget v1, p1, Lcom/cmcm/support/util/ArraySet;->mSize:I
.line 403
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
.line 404
iget v2, p0, Lcom/cmcm/support/util/ArraySet;->mSize:I
if-nez v2, :cond_20
.line 405
if-lez v1, :cond_1f
.line 406
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
.line 407
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
.line 408
iput v1, p0, Lcom/cmcm/support/util/ArraySet;->mSize:I
.line 415
:cond_1f
return-void
.line 411
:cond_20
:goto_20
if-ge v0, v1, :cond_1f
.line 412
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
.line 411
add-int/lit8 v0, v0, 0x1
goto :goto_20
.end method
.method public remove(Ljava/lang/Object;)Z
.registers 3
.prologue
.line 426
if-nez p1, :cond_d
invoke-direct {p0}, Lcom/cmcm/support/util/ArraySet;->indexOfNull()I
move-result v0
.line 428
:goto_6
if-ltz v0, :cond_16
.line 429
invoke-virtual {p0, v0}, Lcom/cmcm/support/util/ArraySet;->removeAt(I)Ljava/lang/Object;
.line 430
const/4 v0, 0x1
.line 432
:goto_c
return v0
.line 427
:cond_d
invoke-virtual {p1}, Ljava/lang/Object;->hashCode()I
move-result v0
.line 426
invoke-direct {p0, p1, v0}, Lcom/cmcm/support/util/ArraySet;->indexOf(Ljava/lang/Object;I)I
move-result v0
goto :goto_6
.line 432
: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
.prologue
.line 700
const/4 v0, 0x0
.line 701
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
.line 702
invoke-virtual {p0, v2}, Lcom/cmcm/support/util/ArraySet;->remove(Ljava/lang/Object;)Z
move-result v2
or-int/2addr v0, v2
.line 703
goto :goto_5
.line 704
: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
.prologue
const/16 v0, 0x8
const/4 v4, 0x0
.line 444
iget-object v1, p0, Lcom/cmcm/support/util/ArraySet;->mArray:[Ljava/lang/Object;
aget-object v1, v1, p1
.line 445
iget v2, p0, Lcom/cmcm/support/util/ArraySet;->mSize:I
const/4 v3, 0x1
if-gt v2, v3, :cond_20
.line 449
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
.line 450
sget-object v0, Lcom/cmcm/support/util/ContainerHelpers;->EMPTY_INTS:[I
iput-object v0, p0, Lcom/cmcm/support/util/ArraySet;->mHashes:[I
.line 451
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;
.line 452
iput v4, p0, Lcom/cmcm/support/util/ArraySet;->mSize:I
.line 499
:cond_1f
:goto_1f
return-object v1
.line 454
: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
.line 458
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
.line 465
:cond_39
iget-object v2, p0, Lcom/cmcm/support/util/ArraySet;->mHashes:[I
.line 466
iget-object v3, p0, Lcom/cmcm/support/util/ArraySet;->mArray:[Ljava/lang/Object;
.line 467
invoke-direct {p0, v0}, Lcom/cmcm/support/util/ArraySet;->allocArrays(I)V
.line 469
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
.line 470
if-lez p1, :cond_52
.line 473
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
.line 474
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
.line 476
:cond_52
iget v0, p0, Lcom/cmcm/support/util/ArraySet;->mSize:I
if-ge p1, v0, :cond_1f
.line 480
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
.line 482
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
.line 486
: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
.line 487
iget v0, p0, Lcom/cmcm/support/util/ArraySet;->mSize:I
if-ge p1, v0, :cond_8d
.line 491
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
.line 493
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
.line 496
: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
.prologue
.line 709
const/4 v1, 0x0
.line 710
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
.line 711
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
.line 712
invoke-virtual {p0, v1}, Lcom/cmcm/support/util/ArraySet;->removeAt(I)Ljava/lang/Object;
.line 713
const/4 v0, 0x1
.line 710
:cond_18
add-int/lit8 v1, v1, -0x1
goto :goto_8
.line 716
:cond_1b
return v0
.end method
.method public size()I
.registers 2
.prologue
.line 507
iget v0, p0, Lcom/cmcm/support/util/ArraySet;->mSize:I
return v0
.end method
.method public toArray()[Ljava/lang/Object;
.registers 5
.prologue
const/4 v3, 0x0
.line 512
iget v0, p0, Lcom/cmcm/support/util/ArraySet;->mSize:I
new-array v0, v0, [Ljava/lang/Object;
.line 513
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
.line 514
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
.prologue
const/4 v3, 0x0
.line 519
array-length v0, p1
iget v1, p0, Lcom/cmcm/support/util/ArraySet;->mSize:I
if-ge v0, v1, :cond_2a
.line 521
invoke-virtual {p1}, Ljava/lang/Object;->getClass()Ljava/lang/Class;
move-result-object v0
.line 522
invoke-virtual {v0}, Ljava/lang/Class;->getComponentType()Ljava/lang/Class;
move-result-object v0
iget v1, p0, Lcom/cmcm/support/util/ArraySet;->mSize:I
.line 521
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;
.line 525
: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
.line 526
array-length v1, v0
iget v2, p0, Lcom/cmcm/support/util/ArraySet;->mSize:I
if-le v1, v2, :cond_29
.line 527
iget v1, p0, Lcom/cmcm/support/util/ArraySet;->mSize:I
const/4 v2, 0x0
aput-object v2, v0, v1
.line 529
:cond_29
return-object v0
:cond_2a
move-object v0, p1
goto :goto_18
.end method
.method public toString()Ljava/lang/String;
.registers 4
.prologue
.line 592
invoke-virtual {p0}, Lcom/cmcm/support/util/ArraySet;->isEmpty()Z
move-result v0
if-eqz v0, :cond_9
.line 593
const-string v0, "{}"
.line 610
:goto_8
return-object v0
.line 596
:cond_9
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
.line 597
const/16 v0, 0x7b
invoke-virtual {v1, v0}, Ljava/lang/StringBuilder;->append(C)Ljava/lang/StringBuilder;
.line 598
const/4 v0, 0x0
:goto_18
iget v2, p0, Lcom/cmcm/support/util/ArraySet;->mSize:I
if-ge v0, v2, :cond_35
.line 599
if-lez v0, :cond_23
.line 600
const-string v2, ", "
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
.line 602
:cond_23
invoke-virtual {p0, v0}, Lcom/cmcm/support/util/ArraySet;->valueAt(I)Ljava/lang/Object;
move-result-object v2
.line 603
if-eq v2, p0, :cond_2f
.line 604
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
.line 598
:goto_2c
add-int/lit8 v0, v0, 0x1
goto :goto_18
.line 606
:cond_2f
const-string v2, "(this Set)"
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
goto :goto_2c
.line 609
:cond_35
const/16 v0, 0x7d
invoke-virtual {v1, v0}, Ljava/lang/StringBuilder;->append(C)Ljava/lang/StringBuilder;
.line 610
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v0
goto :goto_8
.end method
.method public valueAt(I)Ljava/lang/Object;
.registers 3
.annotation system Ldalvik/annotation/Signature;
value = {
"(I)TE;"
}
.end annotation
.prologue
.line 323
iget-object v0, p0, Lcom/cmcm/support/util/ArraySet;->mArray:[Ljava/lang/Object;
aget-object v0, v0, p1
return-object v0
.end method