今奥全景相机
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

2247 lines
60 KiB

.class Lcom/google/common/collect/MapMakerInternalMap;
.super Ljava/util/AbstractMap;
.source "MapMakerInternalMap.java"
# interfaces
.implements Ljava/io/Serializable;
.implements Ljava/util/concurrent/ConcurrentMap;
# annotations
.annotation system Ldalvik/annotation/MemberClasses;
value = {
Lcom/google/common/collect/MapMakerInternalMap$SerializationProxy;,
Lcom/google/common/collect/MapMakerInternalMap$AbstractSerializationProxy;,
Lcom/google/common/collect/MapMakerInternalMap$EntrySet;,
Lcom/google/common/collect/MapMakerInternalMap$Values;,
Lcom/google/common/collect/MapMakerInternalMap$KeySet;,
Lcom/google/common/collect/MapMakerInternalMap$EntryIterator;,
Lcom/google/common/collect/MapMakerInternalMap$WriteThroughEntry;,
Lcom/google/common/collect/MapMakerInternalMap$ValueIterator;,
Lcom/google/common/collect/MapMakerInternalMap$KeyIterator;,
Lcom/google/common/collect/MapMakerInternalMap$HashIterator;,
Lcom/google/common/collect/MapMakerInternalMap$CleanupMapTask;,
Lcom/google/common/collect/MapMakerInternalMap$ExpirationQueue;,
Lcom/google/common/collect/MapMakerInternalMap$EvictionQueue;,
Lcom/google/common/collect/MapMakerInternalMap$Segment;,
Lcom/google/common/collect/MapMakerInternalMap$StrongValueReference;,
Lcom/google/common/collect/MapMakerInternalMap$SoftValueReference;,
Lcom/google/common/collect/MapMakerInternalMap$WeakValueReference;,
Lcom/google/common/collect/MapMakerInternalMap$WeakExpirableEvictableEntry;,
Lcom/google/common/collect/MapMakerInternalMap$WeakEvictableEntry;,
Lcom/google/common/collect/MapMakerInternalMap$WeakExpirableEntry;,
Lcom/google/common/collect/MapMakerInternalMap$WeakEntry;,
Lcom/google/common/collect/MapMakerInternalMap$SoftExpirableEvictableEntry;,
Lcom/google/common/collect/MapMakerInternalMap$SoftEvictableEntry;,
Lcom/google/common/collect/MapMakerInternalMap$SoftExpirableEntry;,
Lcom/google/common/collect/MapMakerInternalMap$SoftEntry;,
Lcom/google/common/collect/MapMakerInternalMap$StrongExpirableEvictableEntry;,
Lcom/google/common/collect/MapMakerInternalMap$StrongEvictableEntry;,
Lcom/google/common/collect/MapMakerInternalMap$StrongExpirableEntry;,
Lcom/google/common/collect/MapMakerInternalMap$StrongEntry;,
Lcom/google/common/collect/MapMakerInternalMap$AbstractReferenceEntry;,
Lcom/google/common/collect/MapMakerInternalMap$NullEntry;,
Lcom/google/common/collect/MapMakerInternalMap$ReferenceEntry;,
Lcom/google/common/collect/MapMakerInternalMap$ValueReference;,
Lcom/google/common/collect/MapMakerInternalMap$EntryFactory;,
Lcom/google/common/collect/MapMakerInternalMap$Strength;
}
.end annotation
.annotation system Ldalvik/annotation/Signature;
value = {
"<K:",
"Ljava/lang/Object;",
"V:",
"Ljava/lang/Object;",
">",
"Ljava/util/AbstractMap",
"<TK;TV;>;",
"Ljava/io/Serializable;",
"Ljava/util/concurrent/ConcurrentMap",
"<TK;TV;>;"
}
.end annotation
# static fields
.field static final CLEANUP_EXECUTOR_DELAY_SECS:J = 0x3cL
.field static final CONTAINS_VALUE_RETRIES:I = 0x3
.field static final DISCARDING_QUEUE:Ljava/util/Queue;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/Queue",
"<+",
"Ljava/lang/Object;",
">;"
}
.end annotation
.end field
.field static final DRAIN_MAX:I = 0x10
.field static final DRAIN_THRESHOLD:I = 0x3f
.field static final MAXIMUM_CAPACITY:I = 0x40000000
.field static final MAX_SEGMENTS:I = 0x10000
.field static final UNSET:Lcom/google/common/collect/MapMakerInternalMap$ValueReference;
.annotation system Ldalvik/annotation/Signature;
value = {
"Lcom/google/common/collect/MapMakerInternalMap$ValueReference",
"<",
"Ljava/lang/Object;",
"Ljava/lang/Object;",
">;"
}
.end annotation
.end field
.field private static final logger:Ljava/util/logging/Logger;
.field private static final serialVersionUID:J = 0x5L
# instance fields
.field final concurrencyLevel:I
.field final transient entryFactory:Lcom/google/common/collect/MapMakerInternalMap$EntryFactory;
.field transient entrySet:Ljava/util/Set;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/Set",
"<",
"Ljava/util/Map$Entry",
"<TK;TV;>;>;"
}
.end annotation
.end field
.field final expireAfterAccessNanos:J
.field final expireAfterWriteNanos:J
.field final keyEquivalence:Lcom/google/common/base/Equivalence;
.annotation system Ldalvik/annotation/Signature;
value = {
"Lcom/google/common/base/Equivalence",
"<",
"Ljava/lang/Object;",
">;"
}
.end annotation
.end field
.field transient keySet:Ljava/util/Set;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/Set",
"<TK;>;"
}
.end annotation
.end field
.field final keyStrength:Lcom/google/common/collect/MapMakerInternalMap$Strength;
.field final maximumSize:I
.field final removalListener:Lcom/google/common/collect/MapMaker$RemovalListener;
.annotation system Ldalvik/annotation/Signature;
value = {
"Lcom/google/common/collect/MapMaker$RemovalListener",
"<TK;TV;>;"
}
.end annotation
.end field
.field final removalNotificationQueue:Ljava/util/Queue;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/Queue",
"<",
"Lcom/google/common/collect/MapMaker$RemovalNotification",
"<TK;TV;>;>;"
}
.end annotation
.end field
.field final transient segmentMask:I
.field final transient segmentShift:I
.field final transient segments:[Lcom/google/common/collect/MapMakerInternalMap$Segment;
.annotation system Ldalvik/annotation/Signature;
value = {
"[",
"Lcom/google/common/collect/MapMakerInternalMap$Segment",
"<TK;TV;>;"
}
.end annotation
.end field
.field final ticker:Lcom/google/common/base/Ticker;
.field final valueEquivalence:Lcom/google/common/base/Equivalence;
.annotation system Ldalvik/annotation/Signature;
value = {
"Lcom/google/common/base/Equivalence",
"<",
"Ljava/lang/Object;",
">;"
}
.end annotation
.end field
.field final valueStrength:Lcom/google/common/collect/MapMakerInternalMap$Strength;
.field transient values:Ljava/util/Collection;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/Collection",
"<TV;>;"
}
.end annotation
.end field
# direct methods
.method static constructor <clinit>()V
.locals 1
.prologue
.line 135
const-class v0, Lcom/google/common/collect/MapMakerInternalMap;
invoke-virtual {v0}, Ljava/lang/Class;->getName()Ljava/lang/String;
move-result-object v0
invoke-static {v0}, Ljava/util/logging/Logger;->getLogger(Ljava/lang/String;)Ljava/util/logging/Logger;
move-result-object v0
sput-object v0, Lcom/google/common/collect/MapMakerInternalMap;->logger:Ljava/util/logging/Logger;
.line 578
new-instance v0, Lcom/google/common/collect/MapMakerInternalMap$1;
invoke-direct {v0}, Lcom/google/common/collect/MapMakerInternalMap$1;-><init>()V
sput-object v0, Lcom/google/common/collect/MapMakerInternalMap;->UNSET:Lcom/google/common/collect/MapMakerInternalMap$ValueReference;
.line 868
new-instance v0, Lcom/google/common/collect/MapMakerInternalMap$2;
invoke-direct {v0}, Lcom/google/common/collect/MapMakerInternalMap$2;-><init>()V
sput-object v0, Lcom/google/common/collect/MapMakerInternalMap;->DISCARDING_QUEUE:Ljava/util/Queue;
return-void
.end method
.method constructor <init>(Lcom/google/common/collect/MapMaker;)V
.locals 7
.prologue
const/4 v2, 0x1
const/4 v4, 0x0
.line 195
invoke-direct {p0}, Ljava/util/AbstractMap;-><init>()V
.line 196
invoke-virtual {p1}, Lcom/google/common/collect/MapMaker;->getConcurrencyLevel()I
move-result v0
const/high16 v1, 0x10000
invoke-static {v0, v1}, Ljava/lang/Math;->min(II)I
move-result v0
iput v0, p0, Lcom/google/common/collect/MapMakerInternalMap;->concurrencyLevel:I
.line 198
invoke-virtual {p1}, Lcom/google/common/collect/MapMaker;->getKeyStrength()Lcom/google/common/collect/MapMakerInternalMap$Strength;
move-result-object v0
iput-object v0, p0, Lcom/google/common/collect/MapMakerInternalMap;->keyStrength:Lcom/google/common/collect/MapMakerInternalMap$Strength;
.line 199
invoke-virtual {p1}, Lcom/google/common/collect/MapMaker;->getValueStrength()Lcom/google/common/collect/MapMakerInternalMap$Strength;
move-result-object v0
iput-object v0, p0, Lcom/google/common/collect/MapMakerInternalMap;->valueStrength:Lcom/google/common/collect/MapMakerInternalMap$Strength;
.line 201
invoke-virtual {p1}, Lcom/google/common/collect/MapMaker;->getKeyEquivalence()Lcom/google/common/base/Equivalence;
move-result-object v0
iput-object v0, p0, Lcom/google/common/collect/MapMakerInternalMap;->keyEquivalence:Lcom/google/common/base/Equivalence;
.line 202
iget-object v0, p0, Lcom/google/common/collect/MapMakerInternalMap;->valueStrength:Lcom/google/common/collect/MapMakerInternalMap$Strength;
invoke-virtual {v0}, Lcom/google/common/collect/MapMakerInternalMap$Strength;->defaultEquivalence()Lcom/google/common/base/Equivalence;
move-result-object v0
iput-object v0, p0, Lcom/google/common/collect/MapMakerInternalMap;->valueEquivalence:Lcom/google/common/base/Equivalence;
.line 204
iget v0, p1, Lcom/google/common/collect/MapMaker;->maximumSize:I
iput v0, p0, Lcom/google/common/collect/MapMakerInternalMap;->maximumSize:I
.line 205
invoke-virtual {p1}, Lcom/google/common/collect/MapMaker;->getExpireAfterAccessNanos()J
move-result-wide v0
iput-wide v0, p0, Lcom/google/common/collect/MapMakerInternalMap;->expireAfterAccessNanos:J
.line 206
invoke-virtual {p1}, Lcom/google/common/collect/MapMaker;->getExpireAfterWriteNanos()J
move-result-wide v0
iput-wide v0, p0, Lcom/google/common/collect/MapMakerInternalMap;->expireAfterWriteNanos:J
.line 208
iget-object v0, p0, Lcom/google/common/collect/MapMakerInternalMap;->keyStrength:Lcom/google/common/collect/MapMakerInternalMap$Strength;
invoke-virtual {p0}, Lcom/google/common/collect/MapMakerInternalMap;->expires()Z
move-result v1
invoke-virtual {p0}, Lcom/google/common/collect/MapMakerInternalMap;->evictsBySize()Z
move-result v3
invoke-static {v0, v1, v3}, Lcom/google/common/collect/MapMakerInternalMap$EntryFactory;->getFactory(Lcom/google/common/collect/MapMakerInternalMap$Strength;ZZ)Lcom/google/common/collect/MapMakerInternalMap$EntryFactory;
move-result-object v0
iput-object v0, p0, Lcom/google/common/collect/MapMakerInternalMap;->entryFactory:Lcom/google/common/collect/MapMakerInternalMap$EntryFactory;
.line 209
invoke-virtual {p1}, Lcom/google/common/collect/MapMaker;->getTicker()Lcom/google/common/base/Ticker;
move-result-object v0
iput-object v0, p0, Lcom/google/common/collect/MapMakerInternalMap;->ticker:Lcom/google/common/base/Ticker;
.line 211
invoke-virtual {p1}, Lcom/google/common/collect/MapMaker;->getRemovalListener()Lcom/google/common/collect/MapMaker$RemovalListener;
move-result-object v0
iput-object v0, p0, Lcom/google/common/collect/MapMakerInternalMap;->removalListener:Lcom/google/common/collect/MapMaker$RemovalListener;
.line 212
iget-object v0, p0, Lcom/google/common/collect/MapMakerInternalMap;->removalListener:Lcom/google/common/collect/MapMaker$RemovalListener;
sget-object v1, Lcom/google/common/collect/GenericMapMaker$NullListener;->INSTANCE:Lcom/google/common/collect/GenericMapMaker$NullListener;
if-ne v0, v1, :cond_2
invoke-static {}, Lcom/google/common/collect/MapMakerInternalMap;->discardingQueue()Ljava/util/Queue;
move-result-object v0
:goto_0
iput-object v0, p0, Lcom/google/common/collect/MapMakerInternalMap;->removalNotificationQueue:Ljava/util/Queue;
.line 216
invoke-virtual {p1}, Lcom/google/common/collect/MapMaker;->getInitialCapacity()I
move-result v0
const/high16 v1, 0x40000000 # 2.0f
invoke-static {v0, v1}, Ljava/lang/Math;->min(II)I
move-result v0
.line 217
invoke-virtual {p0}, Lcom/google/common/collect/MapMakerInternalMap;->evictsBySize()Z
move-result v1
if-eqz v1, :cond_0
.line 218
iget v1, p0, Lcom/google/common/collect/MapMakerInternalMap;->maximumSize:I
invoke-static {v0, v1}, Ljava/lang/Math;->min(II)I
move-result v0
:cond_0
move v1, v2
move v3, v4
.line 227
:goto_1
iget v5, p0, Lcom/google/common/collect/MapMakerInternalMap;->concurrencyLevel:I
if-ge v1, v5, :cond_3
invoke-virtual {p0}, Lcom/google/common/collect/MapMakerInternalMap;->evictsBySize()Z
move-result v5
if-eqz v5, :cond_1
mul-int/lit8 v5, v1, 0x2
iget v6, p0, Lcom/google/common/collect/MapMakerInternalMap;->maximumSize:I
if-gt v5, v6, :cond_3
.line 228
:cond_1
add-int/lit8 v3, v3, 0x1
.line 229
shl-int/lit8 v1, v1, 0x1
goto :goto_1
.line 212
:cond_2
new-instance v0, Ljava/util/concurrent/ConcurrentLinkedQueue;
invoke-direct {v0}, Ljava/util/concurrent/ConcurrentLinkedQueue;-><init>()V
goto :goto_0
.line 231
:cond_3
rsub-int/lit8 v3, v3, 0x20
iput v3, p0, Lcom/google/common/collect/MapMakerInternalMap;->segmentShift:I
.line 232
add-int/lit8 v3, v1, -0x1
iput v3, p0, Lcom/google/common/collect/MapMakerInternalMap;->segmentMask:I
.line 234
invoke-virtual {p0, v1}, Lcom/google/common/collect/MapMakerInternalMap;->newSegmentArray(I)[Lcom/google/common/collect/MapMakerInternalMap$Segment;
move-result-object v3
iput-object v3, p0, Lcom/google/common/collect/MapMakerInternalMap;->segments:[Lcom/google/common/collect/MapMakerInternalMap$Segment;
.line 236
div-int v3, v0, v1
.line 237
mul-int v5, v3, v1
if-ge v5, v0, :cond_8
.line 238
add-int/lit8 v0, v3, 0x1
.line 242
:goto_2
if-ge v2, v0, :cond_4
.line 243
shl-int/lit8 v2, v2, 0x1
goto :goto_2
.line 246
:cond_4
invoke-virtual {p0}, Lcom/google/common/collect/MapMakerInternalMap;->evictsBySize()Z
move-result v0
if-eqz v0, :cond_6
.line 248
iget v0, p0, Lcom/google/common/collect/MapMakerInternalMap;->maximumSize:I
div-int/2addr v0, v1
add-int/lit8 v0, v0, 0x1
.line 249
iget v3, p0, Lcom/google/common/collect/MapMakerInternalMap;->maximumSize:I
rem-int v1, v3, v1
.line 250
:goto_3
iget-object v3, p0, Lcom/google/common/collect/MapMakerInternalMap;->segments:[Lcom/google/common/collect/MapMakerInternalMap$Segment;
array-length v3, v3
if-ge v4, v3, :cond_7
.line 251
if-ne v4, v1, :cond_5
.line 252
add-int/lit8 v0, v0, -0x1
.line 254
:cond_5
iget-object v3, p0, Lcom/google/common/collect/MapMakerInternalMap;->segments:[Lcom/google/common/collect/MapMakerInternalMap$Segment;
invoke-virtual {p0, v2, v0}, Lcom/google/common/collect/MapMakerInternalMap;->createSegment(II)Lcom/google/common/collect/MapMakerInternalMap$Segment;
move-result-object v5
aput-object v5, v3, v4
.line 250
add-int/lit8 v4, v4, 0x1
goto :goto_3
.line 258
:cond_6
:goto_4
iget-object v0, p0, Lcom/google/common/collect/MapMakerInternalMap;->segments:[Lcom/google/common/collect/MapMakerInternalMap$Segment;
array-length v0, v0
if-ge v4, v0, :cond_7
.line 259
iget-object v0, p0, Lcom/google/common/collect/MapMakerInternalMap;->segments:[Lcom/google/common/collect/MapMakerInternalMap$Segment;
const/4 v1, -0x1
invoke-virtual {p0, v2, v1}, Lcom/google/common/collect/MapMakerInternalMap;->createSegment(II)Lcom/google/common/collect/MapMakerInternalMap$Segment;
move-result-object v1
aput-object v1, v0, v4
.line 258
add-int/lit8 v4, v4, 0x1
goto :goto_4
.line 263
:cond_7
return-void
:cond_8
move v0, v3
goto :goto_2
.end method
.method static connectEvictables(Lcom/google/common/collect/MapMakerInternalMap$ReferenceEntry;Lcom/google/common/collect/MapMakerInternalMap$ReferenceEntry;)V
.locals 0
.annotation system Ldalvik/annotation/Signature;
value = {
"<K:",
"Ljava/lang/Object;",
"V:",
"Ljava/lang/Object;",
">(",
"Lcom/google/common/collect/MapMakerInternalMap$ReferenceEntry",
"<TK;TV;>;",
"Lcom/google/common/collect/MapMakerInternalMap$ReferenceEntry",
"<TK;TV;>;)V"
}
.end annotation
.annotation build Ljavax/annotation/concurrent/GuardedBy;
value = "Segment.this"
.end annotation
.prologue
.line 1961
invoke-interface {p0, p1}, Lcom/google/common/collect/MapMakerInternalMap$ReferenceEntry;->setNextEvictable(Lcom/google/common/collect/MapMakerInternalMap$ReferenceEntry;)V
.line 1962
invoke-interface {p1, p0}, Lcom/google/common/collect/MapMakerInternalMap$ReferenceEntry;->setPreviousEvictable(Lcom/google/common/collect/MapMakerInternalMap$ReferenceEntry;)V
.line 1963
return-void
.end method
.method static connectExpirables(Lcom/google/common/collect/MapMakerInternalMap$ReferenceEntry;Lcom/google/common/collect/MapMakerInternalMap$ReferenceEntry;)V
.locals 0
.annotation system Ldalvik/annotation/Signature;
value = {
"<K:",
"Ljava/lang/Object;",
"V:",
"Ljava/lang/Object;",
">(",
"Lcom/google/common/collect/MapMakerInternalMap$ReferenceEntry",
"<TK;TV;>;",
"Lcom/google/common/collect/MapMakerInternalMap$ReferenceEntry",
"<TK;TV;>;)V"
}
.end annotation
.annotation build Ljavax/annotation/concurrent/GuardedBy;
value = "Segment.this"
.end annotation
.prologue
.line 1929
invoke-interface {p0, p1}, Lcom/google/common/collect/MapMakerInternalMap$ReferenceEntry;->setNextExpirable(Lcom/google/common/collect/MapMakerInternalMap$ReferenceEntry;)V
.line 1930
invoke-interface {p1, p0}, Lcom/google/common/collect/MapMakerInternalMap$ReferenceEntry;->setPreviousExpirable(Lcom/google/common/collect/MapMakerInternalMap$ReferenceEntry;)V
.line 1931
return-void
.end method
.method static discardingQueue()Ljava/util/Queue;
.locals 1
.annotation system Ldalvik/annotation/Signature;
value = {
"<E:",
"Ljava/lang/Object;",
">()",
"Ljava/util/Queue",
"<TE;>;"
}
.end annotation
.prologue
.line 900
sget-object v0, Lcom/google/common/collect/MapMakerInternalMap;->DISCARDING_QUEUE:Ljava/util/Queue;
return-object v0
.end method
.method static nullEntry()Lcom/google/common/collect/MapMakerInternalMap$ReferenceEntry;
.locals 1
.annotation system Ldalvik/annotation/Signature;
value = {
"<K:",
"Ljava/lang/Object;",
"V:",
"Ljava/lang/Object;",
">()",
"Lcom/google/common/collect/MapMakerInternalMap$ReferenceEntry",
"<TK;TV;>;"
}
.end annotation
.prologue
.line 865
sget-object v0, Lcom/google/common/collect/MapMakerInternalMap$NullEntry;->INSTANCE:Lcom/google/common/collect/MapMakerInternalMap$NullEntry;
return-object v0
.end method
.method static nullifyEvictable(Lcom/google/common/collect/MapMakerInternalMap$ReferenceEntry;)V
.locals 1
.annotation system Ldalvik/annotation/Signature;
value = {
"<K:",
"Ljava/lang/Object;",
"V:",
"Ljava/lang/Object;",
">(",
"Lcom/google/common/collect/MapMakerInternalMap$ReferenceEntry",
"<TK;TV;>;)V"
}
.end annotation
.annotation build Ljavax/annotation/concurrent/GuardedBy;
value = "Segment.this"
.end annotation
.prologue
.line 1967
invoke-static {}, Lcom/google/common/collect/MapMakerInternalMap;->nullEntry()Lcom/google/common/collect/MapMakerInternalMap$ReferenceEntry;
move-result-object v0
.line 1968
invoke-interface {p0, v0}, Lcom/google/common/collect/MapMakerInternalMap$ReferenceEntry;->setNextEvictable(Lcom/google/common/collect/MapMakerInternalMap$ReferenceEntry;)V
.line 1969
invoke-interface {p0, v0}, Lcom/google/common/collect/MapMakerInternalMap$ReferenceEntry;->setPreviousEvictable(Lcom/google/common/collect/MapMakerInternalMap$ReferenceEntry;)V
.line 1970
return-void
.end method
.method static nullifyExpirable(Lcom/google/common/collect/MapMakerInternalMap$ReferenceEntry;)V
.locals 1
.annotation system Ldalvik/annotation/Signature;
value = {
"<K:",
"Ljava/lang/Object;",
"V:",
"Ljava/lang/Object;",
">(",
"Lcom/google/common/collect/MapMakerInternalMap$ReferenceEntry",
"<TK;TV;>;)V"
}
.end annotation
.annotation build Ljavax/annotation/concurrent/GuardedBy;
value = "Segment.this"
.end annotation
.prologue
.line 1935
invoke-static {}, Lcom/google/common/collect/MapMakerInternalMap;->nullEntry()Lcom/google/common/collect/MapMakerInternalMap$ReferenceEntry;
move-result-object v0
.line 1936
invoke-interface {p0, v0}, Lcom/google/common/collect/MapMakerInternalMap$ReferenceEntry;->setNextExpirable(Lcom/google/common/collect/MapMakerInternalMap$ReferenceEntry;)V
.line 1937
invoke-interface {p0, v0}, Lcom/google/common/collect/MapMakerInternalMap$ReferenceEntry;->setPreviousExpirable(Lcom/google/common/collect/MapMakerInternalMap$ReferenceEntry;)V
.line 1938
return-void
.end method
.method static rehash(I)I
.locals 3
.prologue
.line 1813
shl-int/lit8 v0, p0, 0xf
xor-int/lit16 v0, v0, -0x3283
add-int/2addr v0, p0
.line 1814
ushr-int/lit8 v1, v0, 0xa
xor-int/2addr v0, v1
.line 1815
shl-int/lit8 v1, v0, 0x3
add-int/2addr v0, v1
.line 1816
ushr-int/lit8 v1, v0, 0x6
xor-int/2addr v0, v1
.line 1817
shl-int/lit8 v1, v0, 0x2
shl-int/lit8 v2, v0, 0xe
add-int/2addr v1, v2
add-int/2addr v0, v1
.line 1818
ushr-int/lit8 v1, v0, 0x10
xor-int/2addr v0, v1
return v0
.end method
.method static unset()Lcom/google/common/collect/MapMakerInternalMap$ValueReference;
.locals 1
.annotation system Ldalvik/annotation/Signature;
value = {
"<K:",
"Ljava/lang/Object;",
"V:",
"Ljava/lang/Object;",
">()",
"Lcom/google/common/collect/MapMakerInternalMap$ValueReference",
"<TK;TV;>;"
}
.end annotation
.prologue
.line 614
sget-object v0, Lcom/google/common/collect/MapMakerInternalMap;->UNSET:Lcom/google/common/collect/MapMakerInternalMap$ValueReference;
return-object v0
.end method
# virtual methods
.method public clear()V
.locals 4
.prologue
.line 3559
iget-object v1, p0, Lcom/google/common/collect/MapMakerInternalMap;->segments:[Lcom/google/common/collect/MapMakerInternalMap$Segment;
array-length v2, v1
const/4 v0, 0x0
:goto_0
if-ge v0, v2, :cond_0
aget-object v3, v1, v0
.line 3560
invoke-virtual {v3}, Lcom/google/common/collect/MapMakerInternalMap$Segment;->clear()V
.line 3559
add-int/lit8 v0, v0, 0x1
goto :goto_0
.line 3562
:cond_0
return-void
.end method
.method public containsKey(Ljava/lang/Object;)Z
.locals 2
.param p1 # Ljava/lang/Object;
.annotation runtime Ljavax/annotation/Nullable;
.end annotation
.end param
.prologue
.line 3451
if-nez p1, :cond_0
.line 3452
const/4 v0, 0x0
.line 3455
:goto_0
return v0
.line 3454
:cond_0
invoke-virtual {p0, p1}, Lcom/google/common/collect/MapMakerInternalMap;->hash(Ljava/lang/Object;)I
move-result v0
.line 3455
invoke-virtual {p0, v0}, Lcom/google/common/collect/MapMakerInternalMap;->segmentFor(I)Lcom/google/common/collect/MapMakerInternalMap$Segment;
move-result-object v1
invoke-virtual {v1, p1, v0}, Lcom/google/common/collect/MapMakerInternalMap$Segment;->containsKey(Ljava/lang/Object;I)Z
move-result v0
goto :goto_0
.end method
.method public containsValue(Ljava/lang/Object;)Z
.locals 14
.param p1 # Ljava/lang/Object;
.annotation runtime Ljavax/annotation/Nullable;
.end annotation
.end param
.prologue
.line 3460
if-nez p1, :cond_0
.line 3461
const/4 v0, 0x0
.line 3494
:goto_0
return v0
.line 3469
:cond_0
iget-object v7, p0, Lcom/google/common/collect/MapMakerInternalMap;->segments:[Lcom/google/common/collect/MapMakerInternalMap$Segment;
.line 3470
const-wide/16 v4, -0x1
.line 3471
const/4 v0, 0x0
move v6, v0
move-wide v8, v4
:goto_1
const/4 v0, 0x3
if-ge v6, v0, :cond_5
.line 3472
const-wide/16 v2, 0x0
.line 3473
array-length v10, v7
const/4 v0, 0x0
move-wide v4, v2
move v2, v0
:goto_2
if-ge v2, v10, :cond_4
aget-object v3, v7, v2
.line 3476
iget v0, v3, Lcom/google/common/collect/MapMakerInternalMap$Segment;->count:I
.line 3478
iget-object v11, v3, Lcom/google/common/collect/MapMakerInternalMap$Segment;->table:Ljava/util/concurrent/atomic/AtomicReferenceArray;
.line 3479
const/4 v0, 0x0
move v1, v0
:goto_3
invoke-virtual {v11}, Ljava/util/concurrent/atomic/AtomicReferenceArray;->length()I
move-result v0
if-ge v1, v0, :cond_3
.line 3480
invoke-virtual {v11, v1}, Ljava/util/concurrent/atomic/AtomicReferenceArray;->get(I)Ljava/lang/Object;
move-result-object v0
check-cast v0, Lcom/google/common/collect/MapMakerInternalMap$ReferenceEntry;
:goto_4
if-eqz v0, :cond_2
.line 3481
invoke-virtual {v3, v0}, Lcom/google/common/collect/MapMakerInternalMap$Segment;->getLiveValue(Lcom/google/common/collect/MapMakerInternalMap$ReferenceEntry;)Ljava/lang/Object;
move-result-object v12
.line 3482
if-eqz v12, :cond_1
iget-object v13, p0, Lcom/google/common/collect/MapMakerInternalMap;->valueEquivalence:Lcom/google/common/base/Equivalence;
invoke-virtual {v13, p1, v12}, Lcom/google/common/base/Equivalence;->equivalent(Ljava/lang/Object;Ljava/lang/Object;)Z
move-result v12
if-eqz v12, :cond_1
.line 3483
const/4 v0, 0x1
goto :goto_0
.line 3480
:cond_1
invoke-interface {v0}, Lcom/google/common/collect/MapMakerInternalMap$ReferenceEntry;->getNext()Lcom/google/common/collect/MapMakerInternalMap$ReferenceEntry;
move-result-object v0
goto :goto_4
.line 3479
:cond_2
add-int/lit8 v0, v1, 0x1
move v1, v0
goto :goto_3
.line 3487
:cond_3
iget v0, v3, Lcom/google/common/collect/MapMakerInternalMap$Segment;->modCount:I
int-to-long v0, v0
add-long/2addr v4, v0
.line 3473
add-int/lit8 v0, v2, 0x1
move v2, v0
goto :goto_2
.line 3489
:cond_4
cmp-long v0, v4, v8
if-nez v0, :cond_6
.line 3494
:cond_5
const/4 v0, 0x0
goto :goto_0
.line 3471
:cond_6
add-int/lit8 v0, v6, 0x1
move v6, v0
move-wide v8, v4
goto :goto_1
.end method
.method copyEntry(Lcom/google/common/collect/MapMakerInternalMap$ReferenceEntry;Lcom/google/common/collect/MapMakerInternalMap$ReferenceEntry;)Lcom/google/common/collect/MapMakerInternalMap$ReferenceEntry;
.locals 1
.annotation build Lcom/google/common/annotations/VisibleForTesting;
.end annotation
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Lcom/google/common/collect/MapMakerInternalMap$ReferenceEntry",
"<TK;TV;>;",
"Lcom/google/common/collect/MapMakerInternalMap$ReferenceEntry",
"<TK;TV;>;)",
"Lcom/google/common/collect/MapMakerInternalMap$ReferenceEntry",
"<TK;TV;>;"
}
.end annotation
.annotation build Ljavax/annotation/concurrent/GuardedBy;
value = "Segment.this"
.end annotation
.prologue
.line 1836
invoke-interface {p1}, Lcom/google/common/collect/MapMakerInternalMap$ReferenceEntry;->getHash()I
move-result v0
.line 1837
invoke-virtual {p0, v0}, Lcom/google/common/collect/MapMakerInternalMap;->segmentFor(I)Lcom/google/common/collect/MapMakerInternalMap$Segment;
move-result-object v0
invoke-virtual {v0, p1, p2}, Lcom/google/common/collect/MapMakerInternalMap$Segment;->copyEntry(Lcom/google/common/collect/MapMakerInternalMap$ReferenceEntry;Lcom/google/common/collect/MapMakerInternalMap$ReferenceEntry;)Lcom/google/common/collect/MapMakerInternalMap$ReferenceEntry;
move-result-object v0
return-object v0
.end method
.method createSegment(II)Lcom/google/common/collect/MapMakerInternalMap$Segment;
.locals 1
.annotation system Ldalvik/annotation/Signature;
value = {
"(II)",
"Lcom/google/common/collect/MapMakerInternalMap$Segment",
"<TK;TV;>;"
}
.end annotation
.prologue
.line 1887
new-instance v0, Lcom/google/common/collect/MapMakerInternalMap$Segment;
invoke-direct {v0, p0, p1, p2}, Lcom/google/common/collect/MapMakerInternalMap$Segment;-><init>(Lcom/google/common/collect/MapMakerInternalMap;II)V
return-object v0
.end method
.method public entrySet()Ljava/util/Set;
.locals 1
.annotation system Ldalvik/annotation/Signature;
value = {
"()",
"Ljava/util/Set",
"<",
"Ljava/util/Map$Entry",
"<TK;TV;>;>;"
}
.end annotation
.prologue
.line 3584
iget-object v0, p0, Lcom/google/common/collect/MapMakerInternalMap;->entrySet:Ljava/util/Set;
.line 3585
if-eqz v0, :cond_0
:goto_0
return-object v0
:cond_0
new-instance v0, Lcom/google/common/collect/MapMakerInternalMap$EntrySet;
invoke-direct {v0, p0}, Lcom/google/common/collect/MapMakerInternalMap$EntrySet;-><init>(Lcom/google/common/collect/MapMakerInternalMap;)V
iput-object v0, p0, Lcom/google/common/collect/MapMakerInternalMap;->entrySet:Ljava/util/Set;
goto :goto_0
.end method
.method evictsBySize()Z
.locals 2
.prologue
.line 266
iget v0, p0, Lcom/google/common/collect/MapMakerInternalMap;->maximumSize:I
const/4 v1, -0x1
if-eq v0, v1, :cond_0
const/4 v0, 0x1
:goto_0
return v0
:cond_0
const/4 v0, 0x0
goto :goto_0
.end method
.method expires()Z
.locals 1
.prologue
.line 270
invoke-virtual {p0}, Lcom/google/common/collect/MapMakerInternalMap;->expiresAfterWrite()Z
move-result v0
if-nez v0, :cond_0
invoke-virtual {p0}, Lcom/google/common/collect/MapMakerInternalMap;->expiresAfterAccess()Z
move-result v0
if-eqz v0, :cond_1
:cond_0
const/4 v0, 0x1
:goto_0
return v0
:cond_1
const/4 v0, 0x0
goto :goto_0
.end method
.method expiresAfterAccess()Z
.locals 4
.prologue
.line 278
iget-wide v0, p0, Lcom/google/common/collect/MapMakerInternalMap;->expireAfterAccessNanos:J
const-wide/16 v2, 0x0
cmp-long v0, v0, v2
if-lez v0, :cond_0
const/4 v0, 0x1
:goto_0
return v0
:cond_0
const/4 v0, 0x0
goto :goto_0
.end method
.method expiresAfterWrite()Z
.locals 4
.prologue
.line 274
iget-wide v0, p0, Lcom/google/common/collect/MapMakerInternalMap;->expireAfterWriteNanos:J
const-wide/16 v2, 0x0
cmp-long v0, v0, v2
if-lez v0, :cond_0
const/4 v0, 0x1
:goto_0
return v0
:cond_0
const/4 v0, 0x0
goto :goto_0
.end method
.method public get(Ljava/lang/Object;)Ljava/lang/Object;
.locals 2
.param p1 # Ljava/lang/Object;
.annotation runtime Ljavax/annotation/Nullable;
.end annotation
.end param
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/lang/Object;",
")TV;"
}
.end annotation
.prologue
.line 3430
if-nez p1, :cond_0
.line 3431
const/4 v0, 0x0
.line 3434
:goto_0
return-object v0
.line 3433
:cond_0
invoke-virtual {p0, p1}, Lcom/google/common/collect/MapMakerInternalMap;->hash(Ljava/lang/Object;)I
move-result v0
.line 3434
invoke-virtual {p0, v0}, Lcom/google/common/collect/MapMakerInternalMap;->segmentFor(I)Lcom/google/common/collect/MapMakerInternalMap$Segment;
move-result-object v1
invoke-virtual {v1, p1, v0}, Lcom/google/common/collect/MapMakerInternalMap$Segment;->get(Ljava/lang/Object;I)Ljava/lang/Object;
move-result-object v0
goto :goto_0
.end method
.method getEntry(Ljava/lang/Object;)Lcom/google/common/collect/MapMakerInternalMap$ReferenceEntry;
.locals 2
.param p1 # Ljava/lang/Object;
.annotation runtime Ljavax/annotation/Nullable;
.end annotation
.end param
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/lang/Object;",
")",
"Lcom/google/common/collect/MapMakerInternalMap$ReferenceEntry",
"<TK;TV;>;"
}
.end annotation
.prologue
.line 3442
if-nez p1, :cond_0
.line 3443
const/4 v0, 0x0
.line 3446
:goto_0
return-object v0
.line 3445
:cond_0
invoke-virtual {p0, p1}, Lcom/google/common/collect/MapMakerInternalMap;->hash(Ljava/lang/Object;)I
move-result v0
.line 3446
invoke-virtual {p0, v0}, Lcom/google/common/collect/MapMakerInternalMap;->segmentFor(I)Lcom/google/common/collect/MapMakerInternalMap$Segment;
move-result-object v1
invoke-virtual {v1, p1, v0}, Lcom/google/common/collect/MapMakerInternalMap$Segment;->getEntry(Ljava/lang/Object;I)Lcom/google/common/collect/MapMakerInternalMap$ReferenceEntry;
move-result-object v0
goto :goto_0
.end method
.method getLiveValue(Lcom/google/common/collect/MapMakerInternalMap$ReferenceEntry;)Ljava/lang/Object;
.locals 3
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Lcom/google/common/collect/MapMakerInternalMap$ReferenceEntry",
"<TK;TV;>;)TV;"
}
.end annotation
.prologue
const/4 v0, 0x0
.line 1896
invoke-interface {p1}, Lcom/google/common/collect/MapMakerInternalMap$ReferenceEntry;->getKey()Ljava/lang/Object;
move-result-object v1
if-nez v1, :cond_1
.line 1907
:cond_0
:goto_0
return-object v0
.line 1899
:cond_1
invoke-interface {p1}, Lcom/google/common/collect/MapMakerInternalMap$ReferenceEntry;->getValueReference()Lcom/google/common/collect/MapMakerInternalMap$ValueReference;
move-result-object v1
invoke-interface {v1}, Lcom/google/common/collect/MapMakerInternalMap$ValueReference;->get()Ljava/lang/Object;
move-result-object v1
.line 1900
if-eqz v1, :cond_0
.line 1904
invoke-virtual {p0}, Lcom/google/common/collect/MapMakerInternalMap;->expires()Z
move-result v2
if-eqz v2, :cond_2
invoke-virtual {p0, p1}, Lcom/google/common/collect/MapMakerInternalMap;->isExpired(Lcom/google/common/collect/MapMakerInternalMap$ReferenceEntry;)Z
move-result v2
if-nez v2, :cond_0
:cond_2
move-object v0, v1
.line 1907
goto :goto_0
.end method
.method hash(Ljava/lang/Object;)I
.locals 1
.prologue
.line 1851
iget-object v0, p0, Lcom/google/common/collect/MapMakerInternalMap;->keyEquivalence:Lcom/google/common/base/Equivalence;
invoke-virtual {v0, p1}, Lcom/google/common/base/Equivalence;->hash(Ljava/lang/Object;)I
move-result v0
.line 1852
invoke-static {v0}, Lcom/google/common/collect/MapMakerInternalMap;->rehash(I)I
move-result v0
return v0
.end method
.method public isEmpty()Z
.locals 10
.prologue
const-wide/16 v4, 0x0
const/4 v1, 0x0
.line 3395
.line 3396
iget-object v6, p0, Lcom/google/common/collect/MapMakerInternalMap;->segments:[Lcom/google/common/collect/MapMakerInternalMap$Segment;
move v0, v1
move-wide v2, v4
.line 3397
:goto_0
array-length v7, v6
if-ge v0, v7, :cond_2
.line 3398
aget-object v7, v6, v0
iget v7, v7, Lcom/google/common/collect/MapMakerInternalMap$Segment;->count:I
if-eqz v7, :cond_1
.line 3415
:cond_0
:goto_1
return v1
.line 3401
:cond_1
aget-object v7, v6, v0
iget v7, v7, Lcom/google/common/collect/MapMakerInternalMap$Segment;->modCount:I
int-to-long v8, v7
add-long/2addr v2, v8
.line 3397
add-int/lit8 v0, v0, 0x1
goto :goto_0
.line 3404
:cond_2
cmp-long v0, v2, v4
if-eqz v0, :cond_4
move v0, v1
.line 3405
:goto_2
array-length v7, v6
if-ge v0, v7, :cond_3
.line 3406
aget-object v7, v6, v0
iget v7, v7, Lcom/google/common/collect/MapMakerInternalMap$Segment;->count:I
if-nez v7, :cond_0
.line 3409
aget-object v7, v6, v0
iget v7, v7, Lcom/google/common/collect/MapMakerInternalMap$Segment;->modCount:I
int-to-long v8, v7
sub-long/2addr v2, v8
.line 3405
add-int/lit8 v0, v0, 0x1
goto :goto_2
.line 3411
:cond_3
cmp-long v0, v2, v4
if-nez v0, :cond_0
.line 3415
:cond_4
const/4 v1, 0x1
goto :goto_1
.end method
.method isExpired(Lcom/google/common/collect/MapMakerInternalMap$ReferenceEntry;)Z
.locals 2
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Lcom/google/common/collect/MapMakerInternalMap$ReferenceEntry",
"<TK;TV;>;)Z"
}
.end annotation
.prologue
.line 1916
iget-object v0, p0, Lcom/google/common/collect/MapMakerInternalMap;->ticker:Lcom/google/common/base/Ticker;
invoke-virtual {v0}, Lcom/google/common/base/Ticker;->read()J
move-result-wide v0
invoke-virtual {p0, p1, v0, v1}, Lcom/google/common/collect/MapMakerInternalMap;->isExpired(Lcom/google/common/collect/MapMakerInternalMap$ReferenceEntry;J)Z
move-result v0
return v0
.end method
.method isExpired(Lcom/google/common/collect/MapMakerInternalMap$ReferenceEntry;J)Z
.locals 4
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Lcom/google/common/collect/MapMakerInternalMap$ReferenceEntry",
"<TK;TV;>;J)Z"
}
.end annotation
.prologue
.line 1924
invoke-interface {p1}, Lcom/google/common/collect/MapMakerInternalMap$ReferenceEntry;->getExpirationTime()J
move-result-wide v0
sub-long v0, p2, v0
const-wide/16 v2, 0x0
cmp-long v0, v0, v2
if-lez v0, :cond_0
const/4 v0, 0x1
:goto_0
return v0
:cond_0
const/4 v0, 0x0
goto :goto_0
.end method
.method isLive(Lcom/google/common/collect/MapMakerInternalMap$ReferenceEntry;)Z
.locals 1
.annotation build Lcom/google/common/annotations/VisibleForTesting;
.end annotation
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Lcom/google/common/collect/MapMakerInternalMap$ReferenceEntry",
"<TK;TV;>;)Z"
}
.end annotation
.prologue
.line 1872
invoke-interface {p1}, Lcom/google/common/collect/MapMakerInternalMap$ReferenceEntry;->getHash()I
move-result v0
invoke-virtual {p0, v0}, Lcom/google/common/collect/MapMakerInternalMap;->segmentFor(I)Lcom/google/common/collect/MapMakerInternalMap$Segment;
move-result-object v0
invoke-virtual {v0, p1}, Lcom/google/common/collect/MapMakerInternalMap$Segment;->getLiveValue(Lcom/google/common/collect/MapMakerInternalMap$ReferenceEntry;)Ljava/lang/Object;
move-result-object v0
if-eqz v0, :cond_0
const/4 v0, 0x1
:goto_0
return v0
:cond_0
const/4 v0, 0x0
goto :goto_0
.end method
.method public keySet()Ljava/util/Set;
.locals 1
.annotation system Ldalvik/annotation/Signature;
value = {
"()",
"Ljava/util/Set",
"<TK;>;"
}
.end annotation
.prologue
.line 3568
iget-object v0, p0, Lcom/google/common/collect/MapMakerInternalMap;->keySet:Ljava/util/Set;
.line 3569
if-eqz v0, :cond_0
:goto_0
return-object v0
:cond_0
new-instance v0, Lcom/google/common/collect/MapMakerInternalMap$KeySet;
invoke-direct {v0, p0}, Lcom/google/common/collect/MapMakerInternalMap$KeySet;-><init>(Lcom/google/common/collect/MapMakerInternalMap;)V
iput-object v0, p0, Lcom/google/common/collect/MapMakerInternalMap;->keySet:Ljava/util/Set;
goto :goto_0
.end method
.method newEntry(Ljava/lang/Object;ILcom/google/common/collect/MapMakerInternalMap$ReferenceEntry;)Lcom/google/common/collect/MapMakerInternalMap$ReferenceEntry;
.locals 1
.param p3 # Lcom/google/common/collect/MapMakerInternalMap$ReferenceEntry;
.annotation runtime Ljavax/annotation/Nullable;
.end annotation
.end param
.annotation build Lcom/google/common/annotations/VisibleForTesting;
.end annotation
.annotation system Ldalvik/annotation/Signature;
value = {
"(TK;I",
"Lcom/google/common/collect/MapMakerInternalMap$ReferenceEntry",
"<TK;TV;>;)",
"Lcom/google/common/collect/MapMakerInternalMap$ReferenceEntry",
"<TK;TV;>;"
}
.end annotation
.annotation build Ljavax/annotation/concurrent/GuardedBy;
value = "Segment.this"
.end annotation
.prologue
.line 1827
invoke-virtual {p0, p2}, Lcom/google/common/collect/MapMakerInternalMap;->segmentFor(I)Lcom/google/common/collect/MapMakerInternalMap$Segment;
move-result-object v0
invoke-virtual {v0, p1, p2, p3}, Lcom/google/common/collect/MapMakerInternalMap$Segment;->newEntry(Ljava/lang/Object;ILcom/google/common/collect/MapMakerInternalMap$ReferenceEntry;)Lcom/google/common/collect/MapMakerInternalMap$ReferenceEntry;
move-result-object v0
return-object v0
.end method
.method final newSegmentArray(I)[Lcom/google/common/collect/MapMakerInternalMap$Segment;
.locals 1
.annotation system Ldalvik/annotation/Signature;
value = {
"(I)[",
"Lcom/google/common/collect/MapMakerInternalMap$Segment",
"<TK;TV;>;"
}
.end annotation
.prologue
.line 1974
new-array v0, p1, [Lcom/google/common/collect/MapMakerInternalMap$Segment;
return-object v0
.end method
.method newValueReference(Lcom/google/common/collect/MapMakerInternalMap$ReferenceEntry;Ljava/lang/Object;)Lcom/google/common/collect/MapMakerInternalMap$ValueReference;
.locals 2
.annotation build Lcom/google/common/annotations/VisibleForTesting;
.end annotation
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Lcom/google/common/collect/MapMakerInternalMap$ReferenceEntry",
"<TK;TV;>;TV;)",
"Lcom/google/common/collect/MapMakerInternalMap$ValueReference",
"<TK;TV;>;"
}
.end annotation
.annotation build Ljavax/annotation/concurrent/GuardedBy;
value = "Segment.this"
.end annotation
.prologue
.line 1846
invoke-interface {p1}, Lcom/google/common/collect/MapMakerInternalMap$ReferenceEntry;->getHash()I
move-result v0
.line 1847
iget-object v1, p0, Lcom/google/common/collect/MapMakerInternalMap;->valueStrength:Lcom/google/common/collect/MapMakerInternalMap$Strength;
invoke-virtual {p0, v0}, Lcom/google/common/collect/MapMakerInternalMap;->segmentFor(I)Lcom/google/common/collect/MapMakerInternalMap$Segment;
move-result-object v0
invoke-virtual {v1, v0, p1, p2}, Lcom/google/common/collect/MapMakerInternalMap$Strength;->referenceValue(Lcom/google/common/collect/MapMakerInternalMap$Segment;Lcom/google/common/collect/MapMakerInternalMap$ReferenceEntry;Ljava/lang/Object;)Lcom/google/common/collect/MapMakerInternalMap$ValueReference;
move-result-object v0
return-object v0
.end method
.method processPendingNotifications()V
.locals 4
.prologue
.line 1949
:goto_0
iget-object v0, p0, Lcom/google/common/collect/MapMakerInternalMap;->removalNotificationQueue:Ljava/util/Queue;
invoke-interface {v0}, Ljava/util/Queue;->poll()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lcom/google/common/collect/MapMaker$RemovalNotification;
if-eqz v0, :cond_0
.line 1951
:try_start_0
iget-object v1, p0, Lcom/google/common/collect/MapMakerInternalMap;->removalListener:Lcom/google/common/collect/MapMaker$RemovalListener;
invoke-interface {v1, v0}, Lcom/google/common/collect/MapMaker$RemovalListener;->onRemoval(Lcom/google/common/collect/MapMaker$RemovalNotification;)V
:try_end_0
.catch Ljava/lang/Exception; {:try_start_0 .. :try_end_0} :catch_0
goto :goto_0
.line 1952
:catch_0
move-exception v0
.line 1953
sget-object v1, Lcom/google/common/collect/MapMakerInternalMap;->logger:Ljava/util/logging/Logger;
sget-object v2, Ljava/util/logging/Level;->WARNING:Ljava/util/logging/Level;
const-string v3, "Exception thrown by removal listener"
invoke-virtual {v1, v2, v3, v0}, Ljava/util/logging/Logger;->log(Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/Throwable;)V
goto :goto_0
.line 1956
:cond_0
return-void
.end method
.method public put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
.locals 3
.annotation system Ldalvik/annotation/Signature;
value = {
"(TK;TV;)TV;"
}
.end annotation
.prologue
.line 3499
invoke-static {p1}, Lcom/google/common/base/Preconditions;->checkNotNull(Ljava/lang/Object;)Ljava/lang/Object;
.line 3500
invoke-static {p2}, Lcom/google/common/base/Preconditions;->checkNotNull(Ljava/lang/Object;)Ljava/lang/Object;
.line 3501
invoke-virtual {p0, p1}, Lcom/google/common/collect/MapMakerInternalMap;->hash(Ljava/lang/Object;)I
move-result v0
.line 3502
invoke-virtual {p0, v0}, Lcom/google/common/collect/MapMakerInternalMap;->segmentFor(I)Lcom/google/common/collect/MapMakerInternalMap$Segment;
move-result-object v1
const/4 v2, 0x0
invoke-virtual {v1, p1, v0, p2, v2}, Lcom/google/common/collect/MapMakerInternalMap$Segment;->put(Ljava/lang/Object;ILjava/lang/Object;Z)Ljava/lang/Object;
move-result-object v0
return-object v0
.end method
.method public putAll(Ljava/util/Map;)V
.locals 3
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/util/Map",
"<+TK;+TV;>;)V"
}
.end annotation
.prologue
.line 3515
invoke-interface {p1}, Ljava/util/Map;->entrySet()Ljava/util/Set;
move-result-object v0
invoke-interface {v0}, Ljava/util/Set;->iterator()Ljava/util/Iterator;
move-result-object v1
:goto_0
invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_0
invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Ljava/util/Map$Entry;
.line 3516
invoke-interface {v0}, Ljava/util/Map$Entry;->getKey()Ljava/lang/Object;
move-result-object v2
invoke-interface {v0}, Ljava/util/Map$Entry;->getValue()Ljava/lang/Object;
move-result-object v0
invoke-virtual {p0, v2, v0}, Lcom/google/common/collect/MapMakerInternalMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
goto :goto_0
.line 3518
:cond_0
return-void
.end method
.method public putIfAbsent(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
.locals 3
.annotation system Ldalvik/annotation/Signature;
value = {
"(TK;TV;)TV;"
}
.end annotation
.prologue
.line 3507
invoke-static {p1}, Lcom/google/common/base/Preconditions;->checkNotNull(Ljava/lang/Object;)Ljava/lang/Object;
.line 3508
invoke-static {p2}, Lcom/google/common/base/Preconditions;->checkNotNull(Ljava/lang/Object;)Ljava/lang/Object;
.line 3509
invoke-virtual {p0, p1}, Lcom/google/common/collect/MapMakerInternalMap;->hash(Ljava/lang/Object;)I
move-result v0
.line 3510
invoke-virtual {p0, v0}, Lcom/google/common/collect/MapMakerInternalMap;->segmentFor(I)Lcom/google/common/collect/MapMakerInternalMap$Segment;
move-result-object v1
const/4 v2, 0x1
invoke-virtual {v1, p1, v0, p2, v2}, Lcom/google/common/collect/MapMakerInternalMap$Segment;->put(Ljava/lang/Object;ILjava/lang/Object;Z)Ljava/lang/Object;
move-result-object v0
return-object v0
.end method
.method reclaimKey(Lcom/google/common/collect/MapMakerInternalMap$ReferenceEntry;)V
.locals 2
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Lcom/google/common/collect/MapMakerInternalMap$ReferenceEntry",
"<TK;TV;>;)V"
}
.end annotation
.prologue
.line 1862
invoke-interface {p1}, Lcom/google/common/collect/MapMakerInternalMap$ReferenceEntry;->getHash()I
move-result v0
.line 1863
invoke-virtual {p0, v0}, Lcom/google/common/collect/MapMakerInternalMap;->segmentFor(I)Lcom/google/common/collect/MapMakerInternalMap$Segment;
move-result-object v1
invoke-virtual {v1, p1, v0}, Lcom/google/common/collect/MapMakerInternalMap$Segment;->reclaimKey(Lcom/google/common/collect/MapMakerInternalMap$ReferenceEntry;I)Z
.line 1864
return-void
.end method
.method reclaimValue(Lcom/google/common/collect/MapMakerInternalMap$ValueReference;)V
.locals 3
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Lcom/google/common/collect/MapMakerInternalMap$ValueReference",
"<TK;TV;>;)V"
}
.end annotation
.prologue
.line 1856
invoke-interface {p1}, Lcom/google/common/collect/MapMakerInternalMap$ValueReference;->getEntry()Lcom/google/common/collect/MapMakerInternalMap$ReferenceEntry;
move-result-object v0
.line 1857
invoke-interface {v0}, Lcom/google/common/collect/MapMakerInternalMap$ReferenceEntry;->getHash()I
move-result v1
.line 1858
invoke-virtual {p0, v1}, Lcom/google/common/collect/MapMakerInternalMap;->segmentFor(I)Lcom/google/common/collect/MapMakerInternalMap$Segment;
move-result-object v2
invoke-interface {v0}, Lcom/google/common/collect/MapMakerInternalMap$ReferenceEntry;->getKey()Ljava/lang/Object;
move-result-object v0
invoke-virtual {v2, v0, v1, p1}, Lcom/google/common/collect/MapMakerInternalMap$Segment;->reclaimValue(Ljava/lang/Object;ILcom/google/common/collect/MapMakerInternalMap$ValueReference;)Z
.line 1859
return-void
.end method
.method public remove(Ljava/lang/Object;)Ljava/lang/Object;
.locals 2
.param p1 # Ljava/lang/Object;
.annotation runtime Ljavax/annotation/Nullable;
.end annotation
.end param
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/lang/Object;",
")TV;"
}
.end annotation
.prologue
.line 3522
if-nez p1, :cond_0
.line 3523
const/4 v0, 0x0
.line 3526
:goto_0
return-object v0
.line 3525
:cond_0
invoke-virtual {p0, p1}, Lcom/google/common/collect/MapMakerInternalMap;->hash(Ljava/lang/Object;)I
move-result v0
.line 3526
invoke-virtual {p0, v0}, Lcom/google/common/collect/MapMakerInternalMap;->segmentFor(I)Lcom/google/common/collect/MapMakerInternalMap$Segment;
move-result-object v1
invoke-virtual {v1, p1, v0}, Lcom/google/common/collect/MapMakerInternalMap$Segment;->remove(Ljava/lang/Object;I)Ljava/lang/Object;
move-result-object v0
goto :goto_0
.end method
.method public remove(Ljava/lang/Object;Ljava/lang/Object;)Z
.locals 2
.param p1 # Ljava/lang/Object;
.annotation runtime Ljavax/annotation/Nullable;
.end annotation
.end param
.param p2 # Ljava/lang/Object;
.annotation runtime Ljavax/annotation/Nullable;
.end annotation
.end param
.prologue
.line 3531
if-eqz p1, :cond_0
if-nez p2, :cond_1
.line 3532
:cond_0
const/4 v0, 0x0
.line 3535
:goto_0
return v0
.line 3534
:cond_1
invoke-virtual {p0, p1}, Lcom/google/common/collect/MapMakerInternalMap;->hash(Ljava/lang/Object;)I
move-result v0
.line 3535
invoke-virtual {p0, v0}, Lcom/google/common/collect/MapMakerInternalMap;->segmentFor(I)Lcom/google/common/collect/MapMakerInternalMap$Segment;
move-result-object v1
invoke-virtual {v1, p1, v0, p2}, Lcom/google/common/collect/MapMakerInternalMap$Segment;->remove(Ljava/lang/Object;ILjava/lang/Object;)Z
move-result v0
goto :goto_0
.end method
.method public replace(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
.locals 2
.annotation system Ldalvik/annotation/Signature;
value = {
"(TK;TV;)TV;"
}
.end annotation
.prologue
.line 3551
invoke-static {p1}, Lcom/google/common/base/Preconditions;->checkNotNull(Ljava/lang/Object;)Ljava/lang/Object;
.line 3552
invoke-static {p2}, Lcom/google/common/base/Preconditions;->checkNotNull(Ljava/lang/Object;)Ljava/lang/Object;
.line 3553
invoke-virtual {p0, p1}, Lcom/google/common/collect/MapMakerInternalMap;->hash(Ljava/lang/Object;)I
move-result v0
.line 3554
invoke-virtual {p0, v0}, Lcom/google/common/collect/MapMakerInternalMap;->segmentFor(I)Lcom/google/common/collect/MapMakerInternalMap$Segment;
move-result-object v1
invoke-virtual {v1, p1, v0, p2}, Lcom/google/common/collect/MapMakerInternalMap$Segment;->replace(Ljava/lang/Object;ILjava/lang/Object;)Ljava/lang/Object;
move-result-object v0
return-object v0
.end method
.method public replace(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Z
.locals 2
.param p2 # Ljava/lang/Object;
.annotation runtime Ljavax/annotation/Nullable;
.end annotation
.end param
.annotation system Ldalvik/annotation/Signature;
value = {
"(TK;TV;TV;)Z"
}
.end annotation
.prologue
.line 3540
invoke-static {p1}, Lcom/google/common/base/Preconditions;->checkNotNull(Ljava/lang/Object;)Ljava/lang/Object;
.line 3541
invoke-static {p3}, Lcom/google/common/base/Preconditions;->checkNotNull(Ljava/lang/Object;)Ljava/lang/Object;
.line 3542
if-nez p2, :cond_0
.line 3543
const/4 v0, 0x0
.line 3546
:goto_0
return v0
.line 3545
:cond_0
invoke-virtual {p0, p1}, Lcom/google/common/collect/MapMakerInternalMap;->hash(Ljava/lang/Object;)I
move-result v0
.line 3546
invoke-virtual {p0, v0}, Lcom/google/common/collect/MapMakerInternalMap;->segmentFor(I)Lcom/google/common/collect/MapMakerInternalMap$Segment;
move-result-object v1
invoke-virtual {v1, p1, v0, p2, p3}, Lcom/google/common/collect/MapMakerInternalMap$Segment;->replace(Ljava/lang/Object;ILjava/lang/Object;Ljava/lang/Object;)Z
move-result v0
goto :goto_0
.end method
.method segmentFor(I)Lcom/google/common/collect/MapMakerInternalMap$Segment;
.locals 3
.annotation system Ldalvik/annotation/Signature;
value = {
"(I)",
"Lcom/google/common/collect/MapMakerInternalMap$Segment",
"<TK;TV;>;"
}
.end annotation
.prologue
.line 1883
iget-object v0, p0, Lcom/google/common/collect/MapMakerInternalMap;->segments:[Lcom/google/common/collect/MapMakerInternalMap$Segment;
iget v1, p0, Lcom/google/common/collect/MapMakerInternalMap;->segmentShift:I
ushr-int v1, p1, v1
iget v2, p0, Lcom/google/common/collect/MapMakerInternalMap;->segmentMask:I
and-int/2addr v1, v2
aget-object v0, v0, v1
return-object v0
.end method
.method public size()I
.locals 6
.prologue
.line 3420
iget-object v1, p0, Lcom/google/common/collect/MapMakerInternalMap;->segments:[Lcom/google/common/collect/MapMakerInternalMap$Segment;
.line 3421
const-wide/16 v2, 0x0
.line 3422
const/4 v0, 0x0
:goto_0
array-length v4, v1
if-ge v0, v4, :cond_0
.line 3423
aget-object v4, v1, v0
iget v4, v4, Lcom/google/common/collect/MapMakerInternalMap$Segment;->count:I
int-to-long v4, v4
add-long/2addr v2, v4
.line 3422
add-int/lit8 v0, v0, 0x1
goto :goto_0
.line 3425
:cond_0
invoke-static {v2, v3}, Lcom/google/common/primitives/Ints;->saturatedCast(J)I
move-result v0
return v0
.end method
.method usesKeyReferences()Z
.locals 2
.prologue
.line 282
iget-object v0, p0, Lcom/google/common/collect/MapMakerInternalMap;->keyStrength:Lcom/google/common/collect/MapMakerInternalMap$Strength;
sget-object v1, Lcom/google/common/collect/MapMakerInternalMap$Strength;->STRONG:Lcom/google/common/collect/MapMakerInternalMap$Strength;
if-eq v0, v1, :cond_0
const/4 v0, 0x1
:goto_0
return v0
:cond_0
const/4 v0, 0x0
goto :goto_0
.end method
.method usesValueReferences()Z
.locals 2
.prologue
.line 286
iget-object v0, p0, Lcom/google/common/collect/MapMakerInternalMap;->valueStrength:Lcom/google/common/collect/MapMakerInternalMap$Strength;
sget-object v1, Lcom/google/common/collect/MapMakerInternalMap$Strength;->STRONG:Lcom/google/common/collect/MapMakerInternalMap$Strength;
if-eq v0, v1, :cond_0
const/4 v0, 0x1
:goto_0
return v0
:cond_0
const/4 v0, 0x0
goto :goto_0
.end method
.method public values()Ljava/util/Collection;
.locals 1
.annotation system Ldalvik/annotation/Signature;
value = {
"()",
"Ljava/util/Collection",
"<TV;>;"
}
.end annotation
.prologue
.line 3576
iget-object v0, p0, Lcom/google/common/collect/MapMakerInternalMap;->values:Ljava/util/Collection;
.line 3577
if-eqz v0, :cond_0
:goto_0
return-object v0
:cond_0
new-instance v0, Lcom/google/common/collect/MapMakerInternalMap$Values;
invoke-direct {v0, p0}, Lcom/google/common/collect/MapMakerInternalMap$Values;-><init>(Lcom/google/common/collect/MapMakerInternalMap;)V
iput-object v0, p0, Lcom/google/common/collect/MapMakerInternalMap;->values:Ljava/util/Collection;
goto :goto_0
.end method
.method writeReplace()Ljava/lang/Object;
.locals 14
.prologue
.line 3887
new-instance v1, Lcom/google/common/collect/MapMakerInternalMap$SerializationProxy;
iget-object v2, p0, Lcom/google/common/collect/MapMakerInternalMap;->keyStrength:Lcom/google/common/collect/MapMakerInternalMap$Strength;
iget-object v3, p0, Lcom/google/common/collect/MapMakerInternalMap;->valueStrength:Lcom/google/common/collect/MapMakerInternalMap$Strength;
iget-object v4, p0, Lcom/google/common/collect/MapMakerInternalMap;->keyEquivalence:Lcom/google/common/base/Equivalence;
iget-object v5, p0, Lcom/google/common/collect/MapMakerInternalMap;->valueEquivalence:Lcom/google/common/base/Equivalence;
iget-wide v6, p0, Lcom/google/common/collect/MapMakerInternalMap;->expireAfterWriteNanos:J
iget-wide v8, p0, Lcom/google/common/collect/MapMakerInternalMap;->expireAfterAccessNanos:J
iget v10, p0, Lcom/google/common/collect/MapMakerInternalMap;->maximumSize:I
iget v11, p0, Lcom/google/common/collect/MapMakerInternalMap;->concurrencyLevel:I
iget-object v12, p0, Lcom/google/common/collect/MapMakerInternalMap;->removalListener:Lcom/google/common/collect/MapMaker$RemovalListener;
move-object v13, p0
invoke-direct/range {v1 .. v13}, Lcom/google/common/collect/MapMakerInternalMap$SerializationProxy;-><init>(Lcom/google/common/collect/MapMakerInternalMap$Strength;Lcom/google/common/collect/MapMakerInternalMap$Strength;Lcom/google/common/base/Equivalence;Lcom/google/common/base/Equivalence;JJIILcom/google/common/collect/MapMaker$RemovalListener;Ljava/util/concurrent/ConcurrentMap;)V
return-object v1
.end method