abstract class com.google.common.cache.LocalCache$HashIterator<T> implements java.util.Iterator<T>
minor version: 0
major version: 59
flags: flags: (0x0420) ACC_SUPER, ACC_ABSTRACT
this_class: com.google.common.cache.LocalCache$HashIterator
super_class: java.lang.Object
{
int nextSegmentIndex;
descriptor: I
flags: (0x0000)
int nextTableIndex;
descriptor: I
flags: (0x0000)
com.google.common.cache.LocalCache$Segment<K, V> currentSegment;
descriptor: Lcom/google/common/cache/LocalCache$Segment;
flags: (0x0000)
Signature: Lcom/google/common/cache/LocalCache$Segment<TK;TV;>;
RuntimeVisibleTypeAnnotations:
FIELD
org.checkerframework.checker.nullness.qual.MonotonicNonNull()
java.util.concurrent.atomic.AtomicReferenceArray<com.google.common.cache.ReferenceEntry<K, V>> currentTable;
descriptor: Ljava/util/concurrent/atomic/AtomicReferenceArray;
flags: (0x0000)
Signature: Ljava/util/concurrent/atomic/AtomicReferenceArray<Lcom/google/common/cache/ReferenceEntry<TK;TV;>;>;
RuntimeVisibleTypeAnnotations:
FIELD
org.checkerframework.checker.nullness.qual.MonotonicNonNull()
com.google.common.cache.ReferenceEntry<K, V> nextEntry;
descriptor: Lcom/google/common/cache/ReferenceEntry;
flags: (0x0000)
Signature: Lcom/google/common/cache/ReferenceEntry<TK;TV;>;
RuntimeVisibleTypeAnnotations:
FIELD
org.checkerframework.checker.nullness.qual.Nullable()
com.google.common.cache.LocalCache<K, V>.WriteThroughEntry nextExternal;
descriptor: Lcom/google/common/cache/LocalCache$WriteThroughEntry;
flags: (0x0000)
Signature: Lcom/google/common/cache/LocalCache<TK;TV;>.WriteThroughEntry;
RuntimeVisibleTypeAnnotations:
FIELD, location=[INNER_TYPE]
org.checkerframework.checker.nullness.qual.Nullable()
com.google.common.cache.LocalCache<K, V>.WriteThroughEntry lastReturned;
descriptor: Lcom/google/common/cache/LocalCache$WriteThroughEntry;
flags: (0x0000)
Signature: Lcom/google/common/cache/LocalCache<TK;TV;>.WriteThroughEntry;
RuntimeVisibleTypeAnnotations:
FIELD, location=[INNER_TYPE]
org.checkerframework.checker.nullness.qual.Nullable()
final com.google.common.cache.LocalCache this$0;
descriptor: Lcom/google/common/cache/LocalCache;
flags: (0x1010) ACC_FINAL, ACC_SYNTHETIC
void <init>(com.google.common.cache.LocalCache);
descriptor: (Lcom/google/common/cache/LocalCache;)V
flags: (0x0000)
Code:
stack=3, locals=2, args_size=2
start local 0 0: aload 0
aload 1
putfield com.google.common.cache.LocalCache$HashIterator.this$0:Lcom/google/common/cache/LocalCache;
aload 0
invokespecial java.lang.Object.<init>:()V
1: aload 0
aload 1
getfield com.google.common.cache.LocalCache.segments:[Lcom/google/common/cache/LocalCache$Segment;
arraylength
iconst_1
isub
putfield com.google.common.cache.LocalCache$HashIterator.nextSegmentIndex:I
2: aload 0
iconst_m1
putfield com.google.common.cache.LocalCache$HashIterator.nextTableIndex:I
3: aload 0
invokevirtual com.google.common.cache.LocalCache$HashIterator.advance:()V
4: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lcom/google/common/cache/LocalCache<TK;TV;>.HashIterator<TT;>;
MethodParameters:
Name Flags
this$0 final
public abstract T next();
descriptor: ()Ljava/lang/Object;
flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
Signature: ()TT;
final void advance();
descriptor: ()V
flags: (0x0010) ACC_FINAL
Code:
stack=6, locals=1, args_size=1
start local 0 0: aload 0
aconst_null
putfield com.google.common.cache.LocalCache$HashIterator.nextExternal:Lcom/google/common/cache/LocalCache$WriteThroughEntry;
1: aload 0
invokevirtual com.google.common.cache.LocalCache$HashIterator.nextInChain:()Z
ifeq 3
2: return
3: StackMap locals:
StackMap stack:
aload 0
invokevirtual com.google.common.cache.LocalCache$HashIterator.nextInTable:()Z
ifeq 11
4: return
5: StackMap locals:
StackMap stack:
aload 0
aload 0
getfield com.google.common.cache.LocalCache$HashIterator.this$0:Lcom/google/common/cache/LocalCache;
getfield com.google.common.cache.LocalCache.segments:[Lcom/google/common/cache/LocalCache$Segment;
aload 0
dup
getfield com.google.common.cache.LocalCache$HashIterator.nextSegmentIndex:I
dup_x1
iconst_1
isub
putfield com.google.common.cache.LocalCache$HashIterator.nextSegmentIndex:I
aaload
putfield com.google.common.cache.LocalCache$HashIterator.currentSegment:Lcom/google/common/cache/LocalCache$Segment;
6: aload 0
getfield com.google.common.cache.LocalCache$HashIterator.currentSegment:Lcom/google/common/cache/LocalCache$Segment;
getfield com.google.common.cache.LocalCache$Segment.count:I
ifeq 11
7: aload 0
aload 0
getfield com.google.common.cache.LocalCache$HashIterator.currentSegment:Lcom/google/common/cache/LocalCache$Segment;
getfield com.google.common.cache.LocalCache$Segment.table:Ljava/util/concurrent/atomic/AtomicReferenceArray;
putfield com.google.common.cache.LocalCache$HashIterator.currentTable:Ljava/util/concurrent/atomic/AtomicReferenceArray;
8: aload 0
aload 0
getfield com.google.common.cache.LocalCache$HashIterator.currentTable:Ljava/util/concurrent/atomic/AtomicReferenceArray;
invokevirtual java.util.concurrent.atomic.AtomicReferenceArray.length:()I
iconst_1
isub
putfield com.google.common.cache.LocalCache$HashIterator.nextTableIndex:I
9: aload 0
invokevirtual com.google.common.cache.LocalCache$HashIterator.nextInTable:()Z
ifeq 11
10: return
11: StackMap locals:
StackMap stack:
aload 0
getfield com.google.common.cache.LocalCache$HashIterator.nextSegmentIndex:I
ifge 5
12: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 13 0 this Lcom/google/common/cache/LocalCache<TK;TV;>.HashIterator<TT;>;
boolean nextInChain();
descriptor: ()Z
flags: (0x0000)
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
getfield com.google.common.cache.LocalCache$HashIterator.nextEntry:Lcom/google/common/cache/ReferenceEntry;
ifnull 6
1: aload 0
aload 0
getfield com.google.common.cache.LocalCache$HashIterator.nextEntry:Lcom/google/common/cache/ReferenceEntry;
invokeinterface com.google.common.cache.ReferenceEntry.getNext:()Lcom/google/common/cache/ReferenceEntry;
putfield com.google.common.cache.LocalCache$HashIterator.nextEntry:Lcom/google/common/cache/ReferenceEntry;
goto 5
2: StackMap locals:
StackMap stack:
aload 0
aload 0
getfield com.google.common.cache.LocalCache$HashIterator.nextEntry:Lcom/google/common/cache/ReferenceEntry;
invokevirtual com.google.common.cache.LocalCache$HashIterator.advanceTo:(Lcom/google/common/cache/ReferenceEntry;)Z
ifeq 4
3: iconst_1
ireturn
4: StackMap locals:
StackMap stack:
aload 0
aload 0
getfield com.google.common.cache.LocalCache$HashIterator.nextEntry:Lcom/google/common/cache/ReferenceEntry;
invokeinterface com.google.common.cache.ReferenceEntry.getNext:()Lcom/google/common/cache/ReferenceEntry;
putfield com.google.common.cache.LocalCache$HashIterator.nextEntry:Lcom/google/common/cache/ReferenceEntry;
StackMap locals:
StackMap stack:
5: aload 0
getfield com.google.common.cache.LocalCache$HashIterator.nextEntry:Lcom/google/common/cache/ReferenceEntry;
ifnonnull 2
6: StackMap locals:
StackMap stack:
iconst_0
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 this Lcom/google/common/cache/LocalCache<TK;TV;>.HashIterator<TT;>;
boolean nextInTable();
descriptor: ()Z
flags: (0x0000)
Code:
stack=6, locals=1, args_size=1
start local 0 0: goto 4
1: StackMap locals:
StackMap stack:
aload 0
aload 0
getfield com.google.common.cache.LocalCache$HashIterator.currentTable:Ljava/util/concurrent/atomic/AtomicReferenceArray;
aload 0
dup
getfield com.google.common.cache.LocalCache$HashIterator.nextTableIndex:I
dup_x1
iconst_1
isub
putfield com.google.common.cache.LocalCache$HashIterator.nextTableIndex:I
invokevirtual java.util.concurrent.atomic.AtomicReferenceArray.get:(I)Ljava/lang/Object;
checkcast com.google.common.cache.ReferenceEntry
dup_x1
putfield com.google.common.cache.LocalCache$HashIterator.nextEntry:Lcom/google/common/cache/ReferenceEntry;
ifnull 4
2: aload 0
aload 0
getfield com.google.common.cache.LocalCache$HashIterator.nextEntry:Lcom/google/common/cache/ReferenceEntry;
invokevirtual com.google.common.cache.LocalCache$HashIterator.advanceTo:(Lcom/google/common/cache/ReferenceEntry;)Z
ifne 3
aload 0
invokevirtual com.google.common.cache.LocalCache$HashIterator.nextInChain:()Z
ifeq 4
3: StackMap locals:
StackMap stack:
iconst_1
ireturn
4: StackMap locals:
StackMap stack:
aload 0
getfield com.google.common.cache.LocalCache$HashIterator.nextTableIndex:I
ifge 1
5: iconst_0
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Lcom/google/common/cache/LocalCache<TK;TV;>.HashIterator<TT;>;
boolean advanceTo(com.google.common.cache.ReferenceEntry<K, V>);
descriptor: (Lcom/google/common/cache/ReferenceEntry;)Z
flags: (0x0000)
Code:
stack=6, locals=7, args_size=2
start local 0 start local 1 0: aload 0
getfield com.google.common.cache.LocalCache$HashIterator.this$0:Lcom/google/common/cache/LocalCache;
getfield com.google.common.cache.LocalCache.ticker:Lcom/google/common/base/Ticker;
invokevirtual com.google.common.base.Ticker.read:()J
lstore 2
start local 2 1: aload 1
invokeinterface com.google.common.cache.ReferenceEntry.getKey:()Ljava/lang/Object;
astore 4
start local 4 2: aload 0
getfield com.google.common.cache.LocalCache$HashIterator.this$0:Lcom/google/common/cache/LocalCache;
aload 1
lload 2
invokevirtual com.google.common.cache.LocalCache.getLiveValue:(Lcom/google/common/cache/ReferenceEntry;J)Ljava/lang/Object;
astore 5
start local 5 3: aload 5
ifnull 7
4: aload 0
new com.google.common.cache.LocalCache$WriteThroughEntry
dup
aload 0
getfield com.google.common.cache.LocalCache$HashIterator.this$0:Lcom/google/common/cache/LocalCache;
aload 4
aload 5
invokespecial com.google.common.cache.LocalCache$WriteThroughEntry.<init>:(Lcom/google/common/cache/LocalCache;Ljava/lang/Object;Ljava/lang/Object;)V
putfield com.google.common.cache.LocalCache$HashIterator.nextExternal:Lcom/google/common/cache/LocalCache$WriteThroughEntry;
5: aload 0
getfield com.google.common.cache.LocalCache$HashIterator.currentSegment:Lcom/google/common/cache/LocalCache$Segment;
invokevirtual com.google.common.cache.LocalCache$Segment.postReadCleanup:()V
6: iconst_1
ireturn
7: StackMap locals: long java.lang.Object java.lang.Object
StackMap stack:
aload 0
getfield com.google.common.cache.LocalCache$HashIterator.currentSegment:Lcom/google/common/cache/LocalCache$Segment;
invokevirtual com.google.common.cache.LocalCache$Segment.postReadCleanup:()V
8: iconst_0
ireturn
end local 5 end local 4 end local 2 9: StackMap locals: com.google.common.cache.LocalCache$HashIterator com.google.common.cache.ReferenceEntry
StackMap stack: java.lang.Throwable
astore 6
10: aload 0
getfield com.google.common.cache.LocalCache$HashIterator.currentSegment:Lcom/google/common/cache/LocalCache$Segment;
invokevirtual com.google.common.cache.LocalCache$Segment.postReadCleanup:()V
11: aload 6
athrow
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 12 0 this Lcom/google/common/cache/LocalCache<TK;TV;>.HashIterator<TT;>;
0 12 1 entry Lcom/google/common/cache/ReferenceEntry<TK;TV;>;
1 9 2 now J
2 9 4 key TK;
3 9 5 value TV;
Exception table:
from to target type
0 5 9 any
Signature: (Lcom/google/common/cache/ReferenceEntry<TK;TV;>;)Z
MethodParameters:
Name Flags
entry
public boolean hasNext();
descriptor: ()Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield com.google.common.cache.LocalCache$HashIterator.nextExternal:Lcom/google/common/cache/LocalCache$WriteThroughEntry;
ifnull 1
iconst_1
ireturn
StackMap locals:
StackMap stack:
1: iconst_0
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lcom/google/common/cache/LocalCache<TK;TV;>.HashIterator<TT;>;
com.google.common.cache.LocalCache<K, V>.WriteThroughEntry nextEntry();
descriptor: ()Lcom/google/common/cache/LocalCache$WriteThroughEntry;
flags: (0x0000)
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
getfield com.google.common.cache.LocalCache$HashIterator.nextExternal:Lcom/google/common/cache/LocalCache$WriteThroughEntry;
ifnonnull 2
1: new java.util.NoSuchElementException
dup
invokespecial java.util.NoSuchElementException.<init>:()V
athrow
2: StackMap locals:
StackMap stack:
aload 0
aload 0
getfield com.google.common.cache.LocalCache$HashIterator.nextExternal:Lcom/google/common/cache/LocalCache$WriteThroughEntry;
putfield com.google.common.cache.LocalCache$HashIterator.lastReturned:Lcom/google/common/cache/LocalCache$WriteThroughEntry;
3: aload 0
invokevirtual com.google.common.cache.LocalCache$HashIterator.advance:()V
4: aload 0
getfield com.google.common.cache.LocalCache$HashIterator.lastReturned:Lcom/google/common/cache/LocalCache$WriteThroughEntry;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lcom/google/common/cache/LocalCache<TK;TV;>.HashIterator<TT;>;
Signature: ()Lcom/google/common/cache/LocalCache<TK;TV;>.WriteThroughEntry;
public void remove();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
getfield com.google.common.cache.LocalCache$HashIterator.lastReturned:Lcom/google/common/cache/LocalCache$WriteThroughEntry;
ifnull 1
iconst_1
goto 2
StackMap locals:
StackMap stack:
1: iconst_0
StackMap locals:
StackMap stack: int
2: invokestatic com.google.common.base.Preconditions.checkState:(Z)V
3: aload 0
getfield com.google.common.cache.LocalCache$HashIterator.this$0:Lcom/google/common/cache/LocalCache;
aload 0
getfield com.google.common.cache.LocalCache$HashIterator.lastReturned:Lcom/google/common/cache/LocalCache$WriteThroughEntry;
invokevirtual com.google.common.cache.LocalCache$WriteThroughEntry.getKey:()Ljava/lang/Object;
invokevirtual com.google.common.cache.LocalCache.remove:(Ljava/lang/Object;)Ljava/lang/Object;
pop
4: aload 0
aconst_null
putfield com.google.common.cache.LocalCache$HashIterator.lastReturned:Lcom/google/common/cache/LocalCache$WriteThroughEntry;
5: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Lcom/google/common/cache/LocalCache<TK;TV;>.HashIterator<TT;>;
}
Signature: <T:Ljava/lang/Object;>Ljava/lang/Object;Ljava/util/Iterator<TT;>;
SourceFile: "LocalCache.java"
NestHost: com.google.common.cache.LocalCache
InnerClasses:
abstract HashIterator = com.google.common.cache.LocalCache$HashIterator of com.google.common.cache.LocalCache
Segment = com.google.common.cache.LocalCache$Segment of com.google.common.cache.LocalCache
final WriteThroughEntry = com.google.common.cache.LocalCache$WriteThroughEntry of com.google.common.cache.LocalCache