public final class org.springframework.util.ConcurrentReferenceHashMap$Segment extends java.util.concurrent.locks.ReentrantLock
minor version: 0
major version: 59
flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
this_class: org.springframework.util.ConcurrentReferenceHashMap$Segment
super_class: java.util.concurrent.locks.ReentrantLock
{
private final org.springframework.util.ConcurrentReferenceHashMap<K, V>.ReferenceManager referenceManager;
descriptor: Lorg/springframework/util/ConcurrentReferenceHashMap$ReferenceManager;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
Signature: Lorg/springframework/util/ConcurrentReferenceHashMap<TK;TV;>.ReferenceManager;
private final int initialSize;
descriptor: I
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private volatile org.springframework.util.ConcurrentReferenceHashMap$Reference<K, V>[] references;
descriptor: [Lorg/springframework/util/ConcurrentReferenceHashMap$Reference;
flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE
Signature: [Lorg/springframework/util/ConcurrentReferenceHashMap$Reference<TK;TV;>;
private final java.util.concurrent.atomic.AtomicInteger count;
descriptor: Ljava/util/concurrent/atomic/AtomicInteger;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private int resizeThreshold;
descriptor: I
flags: (0x0002) ACC_PRIVATE
final org.springframework.util.ConcurrentReferenceHashMap this$0;
descriptor: Lorg/springframework/util/ConcurrentReferenceHashMap;
flags: (0x1010) ACC_FINAL, ACC_SYNTHETIC
public void <init>(org.springframework.util.ConcurrentReferenceHashMap, int, int);
descriptor: (Lorg/springframework/util/ConcurrentReferenceHashMap;II)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=4, args_size=4
start local 0 start local 2 start local 3 0: aload 0
aload 1
putfield org.springframework.util.ConcurrentReferenceHashMap$Segment.this$0:Lorg/springframework/util/ConcurrentReferenceHashMap;
aload 0
invokespecial java.util.concurrent.locks.ReentrantLock.<init>:()V
1: aload 0
new java.util.concurrent.atomic.AtomicInteger
dup
invokespecial java.util.concurrent.atomic.AtomicInteger.<init>:()V
putfield org.springframework.util.ConcurrentReferenceHashMap$Segment.count:Ljava/util/concurrent/atomic/AtomicInteger;
2: aload 0
aload 1
invokevirtual org.springframework.util.ConcurrentReferenceHashMap.createReferenceManager:()Lorg/springframework/util/ConcurrentReferenceHashMap$ReferenceManager;
putfield org.springframework.util.ConcurrentReferenceHashMap$Segment.referenceManager:Lorg/springframework/util/ConcurrentReferenceHashMap$ReferenceManager;
3: aload 0
iload 2
putfield org.springframework.util.ConcurrentReferenceHashMap$Segment.initialSize:I
4: aload 0
aload 0
iload 2
invokevirtual org.springframework.util.ConcurrentReferenceHashMap$Segment.createReferenceArray:(I)[Lorg/springframework/util/ConcurrentReferenceHashMap$Reference;
putfield org.springframework.util.ConcurrentReferenceHashMap$Segment.references:[Lorg/springframework/util/ConcurrentReferenceHashMap$Reference;
5: aload 0
iload 3
putfield org.springframework.util.ConcurrentReferenceHashMap$Segment.resizeThreshold:I
6: return
end local 3 end local 2 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 this Lorg/springframework/util/ConcurrentReferenceHashMap$Segment;
0 7 2 initialSize I
0 7 3 resizeThreshold I
MethodParameters:
Name Flags
this$0 final
initialSize
resizeThreshold
public org.springframework.util.ConcurrentReferenceHashMap$Reference<K, V> getReference(, int, org.springframework.util.ConcurrentReferenceHashMap$Restructure);
descriptor: (Ljava/lang/Object;ILorg/springframework/util/ConcurrentReferenceHashMap$Restructure;)Lorg/springframework/util/ConcurrentReferenceHashMap$Reference;
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=7, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 3
getstatic org.springframework.util.ConcurrentReferenceHashMap$Restructure.WHEN_NECESSARY:Lorg/springframework/util/ConcurrentReferenceHashMap$Restructure;
if_acmpne 2
1: aload 0
iconst_0
invokevirtual org.springframework.util.ConcurrentReferenceHashMap$Segment.restructureIfNecessary:(Z)V
2: StackMap locals:
StackMap stack:
aload 0
getfield org.springframework.util.ConcurrentReferenceHashMap$Segment.count:Ljava/util/concurrent/atomic/AtomicInteger;
invokevirtual java.util.concurrent.atomic.AtomicInteger.get:()I
ifne 4
3: aconst_null
areturn
4: StackMap locals:
StackMap stack:
aload 0
getfield org.springframework.util.ConcurrentReferenceHashMap$Segment.references:[Lorg/springframework/util/ConcurrentReferenceHashMap$Reference;
astore 4
start local 4 5: aload 0
iload 2
aload 4
invokevirtual org.springframework.util.ConcurrentReferenceHashMap$Segment.getIndex:(I[Lorg/springframework/util/ConcurrentReferenceHashMap$Reference;)I
istore 5
start local 5 6: aload 4
iload 5
aaload
astore 6
start local 6 7: aload 0
aload 6
aload 1
iload 2
invokevirtual org.springframework.util.ConcurrentReferenceHashMap$Segment.findInChain:(Lorg/springframework/util/ConcurrentReferenceHashMap$Reference;Ljava/lang/Object;I)Lorg/springframework/util/ConcurrentReferenceHashMap$Reference;
areturn
end local 6 end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 this Lorg/springframework/util/ConcurrentReferenceHashMap$Segment;
0 8 1 key Ljava/lang/Object;
0 8 2 hash I
0 8 3 restructure Lorg/springframework/util/ConcurrentReferenceHashMap$Restructure;
5 8 4 references [Lorg/springframework/util/ConcurrentReferenceHashMap$Reference;
6 8 5 index I
7 8 6 head Lorg/springframework/util/ConcurrentReferenceHashMap$Reference<TK;TV;>;
Signature: (Ljava/lang/Object;ILorg/springframework/util/ConcurrentReferenceHashMap$Restructure;)Lorg/springframework/util/ConcurrentReferenceHashMap$Reference<TK;TV;>;
RuntimeVisibleAnnotations:
org.springframework.lang.Nullable()
RuntimeVisibleParameterAnnotations:
0:
org.springframework.lang.Nullable()
1:
2:
MethodParameters:
Name Flags
key
hash
restructure
public <T> T doTask(int, , org.springframework.util.ConcurrentReferenceHashMap<K, V>.Task<T>);
descriptor: (ILjava/lang/Object;Lorg/springframework/util/ConcurrentReferenceHashMap$Task;)Ljava/lang/Object;
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=12, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 3
getstatic org.springframework.util.ConcurrentReferenceHashMap$TaskOption.RESIZE:Lorg/springframework/util/ConcurrentReferenceHashMap$TaskOption;
invokevirtual org.springframework.util.ConcurrentReferenceHashMap$Task.hasOption:(Lorg/springframework/util/ConcurrentReferenceHashMap$TaskOption;)Z
istore 4
start local 4 1: aload 3
getstatic org.springframework.util.ConcurrentReferenceHashMap$TaskOption.RESTRUCTURE_BEFORE:Lorg/springframework/util/ConcurrentReferenceHashMap$TaskOption;
invokevirtual org.springframework.util.ConcurrentReferenceHashMap$Task.hasOption:(Lorg/springframework/util/ConcurrentReferenceHashMap$TaskOption;)Z
ifeq 3
2: aload 0
iload 4
invokevirtual org.springframework.util.ConcurrentReferenceHashMap$Segment.restructureIfNecessary:(Z)V
3: StackMap locals: int
StackMap stack:
aload 3
getstatic org.springframework.util.ConcurrentReferenceHashMap$TaskOption.SKIP_IF_EMPTY:Lorg/springframework/util/ConcurrentReferenceHashMap$TaskOption;
invokevirtual org.springframework.util.ConcurrentReferenceHashMap$Task.hasOption:(Lorg/springframework/util/ConcurrentReferenceHashMap$TaskOption;)Z
ifeq 5
aload 0
getfield org.springframework.util.ConcurrentReferenceHashMap$Segment.count:Ljava/util/concurrent/atomic/AtomicInteger;
invokevirtual java.util.concurrent.atomic.AtomicInteger.get:()I
ifne 5
4: aload 3
aconst_null
aconst_null
aconst_null
invokevirtual org.springframework.util.ConcurrentReferenceHashMap$Task.execute:(Lorg/springframework/util/ConcurrentReferenceHashMap$Reference;Lorg/springframework/util/ConcurrentReferenceHashMap$Entry;Lorg/springframework/util/ConcurrentReferenceHashMap$Entries;)Ljava/lang/Object;
areturn
5: StackMap locals:
StackMap stack:
aload 0
invokevirtual org.springframework.util.ConcurrentReferenceHashMap$Segment.lock:()V
6: aload 0
iload 1
aload 0
getfield org.springframework.util.ConcurrentReferenceHashMap$Segment.references:[Lorg/springframework/util/ConcurrentReferenceHashMap$Reference;
invokevirtual org.springframework.util.ConcurrentReferenceHashMap$Segment.getIndex:(I[Lorg/springframework/util/ConcurrentReferenceHashMap$Reference;)I
istore 5
start local 5 7: aload 0
getfield org.springframework.util.ConcurrentReferenceHashMap$Segment.references:[Lorg/springframework/util/ConcurrentReferenceHashMap$Reference;
iload 5
aaload
astore 6
start local 6 8: aload 0
aload 6
aload 2
iload 1
invokevirtual org.springframework.util.ConcurrentReferenceHashMap$Segment.findInChain:(Lorg/springframework/util/ConcurrentReferenceHashMap$Reference;Ljava/lang/Object;I)Lorg/springframework/util/ConcurrentReferenceHashMap$Reference;
astore 7
start local 7 9: aload 7
ifnull 10
aload 7
invokeinterface org.springframework.util.ConcurrentReferenceHashMap$Reference.get:()Lorg/springframework/util/ConcurrentReferenceHashMap$Entry;
goto 11
StackMap locals: int org.springframework.util.ConcurrentReferenceHashMap$Reference org.springframework.util.ConcurrentReferenceHashMap$Reference
StackMap stack:
10: aconst_null
StackMap locals:
StackMap stack: org.springframework.util.ConcurrentReferenceHashMap$Entry
11: astore 8
start local 8 12: aload 0
aload 2
iload 1
aload 6
iload 5
invokedynamic add(Lorg/springframework/util/ConcurrentReferenceHashMap$Segment;Ljava/lang/Object;ILorg/springframework/util/ConcurrentReferenceHashMap$Reference;I)Lorg/springframework/util/ConcurrentReferenceHashMap$Entries;
Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
Method arguments:
(Ljava/lang/Object;)V
org/springframework/util/ConcurrentReferenceHashMap$Segment.lambda$0(Ljava/lang/Object;ILorg/springframework/util/ConcurrentReferenceHashMap$Reference;ILjava/lang/Object;)V (7)
(Ljava/lang/Object;)V
astore 9
start local 9 13: aload 3
aload 7
aload 8
aload 9
invokevirtual org.springframework.util.ConcurrentReferenceHashMap$Task.execute:(Lorg/springframework/util/ConcurrentReferenceHashMap$Reference;Lorg/springframework/util/ConcurrentReferenceHashMap$Entry;Lorg/springframework/util/ConcurrentReferenceHashMap$Entries;)Ljava/lang/Object;
astore 11
14: aload 0
invokevirtual org.springframework.util.ConcurrentReferenceHashMap$Segment.unlock:()V
15: aload 3
getstatic org.springframework.util.ConcurrentReferenceHashMap$TaskOption.RESTRUCTURE_AFTER:Lorg/springframework/util/ConcurrentReferenceHashMap$TaskOption;
invokevirtual org.springframework.util.ConcurrentReferenceHashMap$Task.hasOption:(Lorg/springframework/util/ConcurrentReferenceHashMap$TaskOption;)Z
ifeq 17
16: aload 0
iload 4
invokevirtual org.springframework.util.ConcurrentReferenceHashMap$Segment.restructureIfNecessary:(Z)V
17: StackMap locals: org.springframework.util.ConcurrentReferenceHashMap$Segment int java.lang.Object org.springframework.util.ConcurrentReferenceHashMap$Task int int org.springframework.util.ConcurrentReferenceHashMap$Reference org.springframework.util.ConcurrentReferenceHashMap$Reference org.springframework.util.ConcurrentReferenceHashMap$Entry org.springframework.util.ConcurrentReferenceHashMap$Entries top java.lang.Object
StackMap stack:
aload 11
areturn
end local 9 end local 8 end local 7 end local 6 end local 5 18: StackMap locals: org.springframework.util.ConcurrentReferenceHashMap$Segment int java.lang.Object org.springframework.util.ConcurrentReferenceHashMap$Task int
StackMap stack: java.lang.Throwable
astore 10
19: aload 0
invokevirtual org.springframework.util.ConcurrentReferenceHashMap$Segment.unlock:()V
20: aload 3
getstatic org.springframework.util.ConcurrentReferenceHashMap$TaskOption.RESTRUCTURE_AFTER:Lorg/springframework/util/ConcurrentReferenceHashMap$TaskOption;
invokevirtual org.springframework.util.ConcurrentReferenceHashMap$Task.hasOption:(Lorg/springframework/util/ConcurrentReferenceHashMap$TaskOption;)Z
ifeq 22
21: aload 0
iload 4
invokevirtual org.springframework.util.ConcurrentReferenceHashMap$Segment.restructureIfNecessary:(Z)V
22: StackMap locals: org.springframework.util.ConcurrentReferenceHashMap$Segment int java.lang.Object org.springframework.util.ConcurrentReferenceHashMap$Task int top top top top top java.lang.Throwable
StackMap stack:
aload 10
athrow
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 23 0 this Lorg/springframework/util/ConcurrentReferenceHashMap$Segment;
0 23 1 hash I
0 23 2 key Ljava/lang/Object;
0 23 3 task Lorg/springframework/util/ConcurrentReferenceHashMap<TK;TV;>.Task<TT;>;
1 23 4 resize Z
7 18 5 index I
8 18 6 head Lorg/springframework/util/ConcurrentReferenceHashMap$Reference<TK;TV;>;
9 18 7 ref Lorg/springframework/util/ConcurrentReferenceHashMap$Reference<TK;TV;>;
12 18 8 entry Lorg/springframework/util/ConcurrentReferenceHashMap$Entry<TK;TV;>;
13 18 9 entries Lorg/springframework/util/ConcurrentReferenceHashMap$Entries<TV;>;
Exception table:
from to target type
6 14 18 any
Signature: <T:Ljava/lang/Object;>(ILjava/lang/Object;Lorg/springframework/util/ConcurrentReferenceHashMap<TK;TV;>.Task<TT;>;)TT;
RuntimeVisibleAnnotations:
org.springframework.lang.Nullable()
RuntimeVisibleParameterAnnotations:
0:
1:
org.springframework.lang.Nullable()
2:
MethodParameters:
Name Flags
hash final
key final
task final
public void clear();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=2, args_size=1
start local 0 0: aload 0
getfield org.springframework.util.ConcurrentReferenceHashMap$Segment.count:Ljava/util/concurrent/atomic/AtomicInteger;
invokevirtual java.util.concurrent.atomic.AtomicInteger.get:()I
ifne 2
1: return
2: StackMap locals:
StackMap stack:
aload 0
invokevirtual org.springframework.util.ConcurrentReferenceHashMap$Segment.lock:()V
3: aload 0
aload 0
aload 0
getfield org.springframework.util.ConcurrentReferenceHashMap$Segment.initialSize:I
invokevirtual org.springframework.util.ConcurrentReferenceHashMap$Segment.createReferenceArray:(I)[Lorg/springframework/util/ConcurrentReferenceHashMap$Reference;
putfield org.springframework.util.ConcurrentReferenceHashMap$Segment.references:[Lorg/springframework/util/ConcurrentReferenceHashMap$Reference;
4: aload 0
aload 0
getfield org.springframework.util.ConcurrentReferenceHashMap$Segment.references:[Lorg/springframework/util/ConcurrentReferenceHashMap$Reference;
arraylength
i2f
aload 0
getfield org.springframework.util.ConcurrentReferenceHashMap$Segment.this$0:Lorg/springframework/util/ConcurrentReferenceHashMap;
invokevirtual org.springframework.util.ConcurrentReferenceHashMap.getLoadFactor:()F
fmul
f2i
putfield org.springframework.util.ConcurrentReferenceHashMap$Segment.resizeThreshold:I
5: aload 0
getfield org.springframework.util.ConcurrentReferenceHashMap$Segment.count:Ljava/util/concurrent/atomic/AtomicInteger;
iconst_0
invokevirtual java.util.concurrent.atomic.AtomicInteger.set:(I)V
6: goto 10
7: StackMap locals:
StackMap stack: java.lang.Throwable
astore 1
8: aload 0
invokevirtual org.springframework.util.ConcurrentReferenceHashMap$Segment.unlock:()V
9: aload 1
athrow
10: StackMap locals:
StackMap stack:
aload 0
invokevirtual org.springframework.util.ConcurrentReferenceHashMap$Segment.unlock:()V
11: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 12 0 this Lorg/springframework/util/ConcurrentReferenceHashMap$Segment;
Exception table:
from to target type
3 7 7 any
protected final void restructureIfNecessary(boolean);
descriptor: (Z)V
flags: (0x0014) ACC_PROTECTED, ACC_FINAL
Code:
stack=3, locals=5, args_size=2
start local 0 start local 1 0: aload 0
getfield org.springframework.util.ConcurrentReferenceHashMap$Segment.count:Ljava/util/concurrent/atomic/AtomicInteger;
invokevirtual java.util.concurrent.atomic.AtomicInteger.get:()I
istore 2
start local 2 1: iload 1
ifeq 2
iload 2
ifle 2
iload 2
aload 0
getfield org.springframework.util.ConcurrentReferenceHashMap$Segment.resizeThreshold:I
if_icmplt 2
iconst_1
goto 3
StackMap locals: int
StackMap stack:
2: iconst_0
StackMap locals:
StackMap stack: int
3: istore 3
start local 3 4: aload 0
getfield org.springframework.util.ConcurrentReferenceHashMap$Segment.referenceManager:Lorg/springframework/util/ConcurrentReferenceHashMap$ReferenceManager;
invokevirtual org.springframework.util.ConcurrentReferenceHashMap$ReferenceManager.pollForPurge:()Lorg/springframework/util/ConcurrentReferenceHashMap$Reference;
astore 4
start local 4 5: aload 4
ifnonnull 6
iload 3
ifeq 7
6: StackMap locals: int org.springframework.util.ConcurrentReferenceHashMap$Reference
StackMap stack:
aload 0
iload 1
aload 4
invokevirtual org.springframework.util.ConcurrentReferenceHashMap$Segment.restructure:(ZLorg/springframework/util/ConcurrentReferenceHashMap$Reference;)V
7: StackMap locals:
StackMap stack:
return
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 this Lorg/springframework/util/ConcurrentReferenceHashMap$Segment;
0 8 1 allowResize Z
1 8 2 currCount I
4 8 3 needsResize Z
5 8 4 ref Lorg/springframework/util/ConcurrentReferenceHashMap$Reference<TK;TV;>;
MethodParameters:
Name Flags
allowResize
private void restructure(boolean, org.springframework.util.ConcurrentReferenceHashMap$Reference<K, V>);
descriptor: (ZLorg/springframework/util/ConcurrentReferenceHashMap$Reference;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=7, locals=13, args_size=3
start local 0 start local 1 start local 2 0: aload 0
invokevirtual org.springframework.util.ConcurrentReferenceHashMap$Segment.lock:()V
1: aload 0
getfield org.springframework.util.ConcurrentReferenceHashMap$Segment.count:Ljava/util/concurrent/atomic/AtomicInteger;
invokevirtual java.util.concurrent.atomic.AtomicInteger.get:()I
istore 4
start local 4 2: invokestatic java.util.Collections.emptySet:()Ljava/util/Set;
astore 5
start local 5 3: aload 2
ifnull 9
4: new java.util.HashSet
dup
invokespecial java.util.HashSet.<init>:()V
astore 5
5: goto 8
6: StackMap locals: org.springframework.util.ConcurrentReferenceHashMap$Segment int org.springframework.util.ConcurrentReferenceHashMap$Reference top int java.util.Set
StackMap stack:
aload 5
aload 2
invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
pop
7: aload 0
getfield org.springframework.util.ConcurrentReferenceHashMap$Segment.referenceManager:Lorg/springframework/util/ConcurrentReferenceHashMap$ReferenceManager;
invokevirtual org.springframework.util.ConcurrentReferenceHashMap$ReferenceManager.pollForPurge:()Lorg/springframework/util/ConcurrentReferenceHashMap$Reference;
astore 2
8: StackMap locals:
StackMap stack:
aload 2
ifnonnull 6
9: StackMap locals:
StackMap stack:
iload 4
aload 5
invokeinterface java.util.Set.size:()I
isub
istore 4
10: iload 4
ifle 11
iload 4
aload 0
getfield org.springframework.util.ConcurrentReferenceHashMap$Segment.resizeThreshold:I
if_icmplt 11
iconst_1
goto 12
StackMap locals:
StackMap stack:
11: iconst_0
StackMap locals:
StackMap stack: int
12: istore 3
start local 3 13: iconst_0
istore 6
start local 6 14: aload 0
getfield org.springframework.util.ConcurrentReferenceHashMap$Segment.references:[Lorg/springframework/util/ConcurrentReferenceHashMap$Reference;
arraylength
istore 7
start local 7 15: iload 1
ifeq 18
iload 3
ifeq 18
iload 7
ldc 1073741824
if_icmpge 18
16: iload 7
iconst_1
ishl
istore 7
17: iconst_1
istore 6
18: StackMap locals: org.springframework.util.ConcurrentReferenceHashMap$Segment int org.springframework.util.ConcurrentReferenceHashMap$Reference int int java.util.Set int int
StackMap stack:
iload 6
ifeq 19
aload 0
iload 7
invokevirtual org.springframework.util.ConcurrentReferenceHashMap$Segment.createReferenceArray:(I)[Lorg/springframework/util/ConcurrentReferenceHashMap$Reference;
goto 20
StackMap locals:
StackMap stack:
19: aload 0
getfield org.springframework.util.ConcurrentReferenceHashMap$Segment.references:[Lorg/springframework/util/ConcurrentReferenceHashMap$Reference;
20: StackMap locals:
StackMap stack: org.springframework.util.ConcurrentReferenceHashMap$Reference[]
astore 8
start local 8 21: iconst_0
istore 9
start local 9 22: goto 37
23: StackMap locals: org.springframework.util.ConcurrentReferenceHashMap$Reference[] int
StackMap stack:
aload 0
getfield org.springframework.util.ConcurrentReferenceHashMap$Segment.references:[Lorg/springframework/util/ConcurrentReferenceHashMap$Reference;
iload 9
aaload
astore 2
24: iload 6
ifne 35
25: aload 8
iload 9
aconst_null
aastore
26: goto 35
27: StackMap locals:
StackMap stack:
aload 5
aload 2
invokeinterface java.util.Set.contains:(Ljava/lang/Object;)Z
ifne 34
28: aload 2
invokeinterface org.springframework.util.ConcurrentReferenceHashMap$Reference.get:()Lorg/springframework/util/ConcurrentReferenceHashMap$Entry;
astore 10
start local 10 29: aload 10
ifnull 34
30: aload 0
aload 2
invokeinterface org.springframework.util.ConcurrentReferenceHashMap$Reference.getHash:()I
aload 8
invokevirtual org.springframework.util.ConcurrentReferenceHashMap$Segment.getIndex:(I[Lorg/springframework/util/ConcurrentReferenceHashMap$Reference;)I
istore 11
start local 11 31: aload 8
iload 11
aload 0
getfield org.springframework.util.ConcurrentReferenceHashMap$Segment.referenceManager:Lorg/springframework/util/ConcurrentReferenceHashMap$ReferenceManager;
32: aload 10
aload 2
invokeinterface org.springframework.util.ConcurrentReferenceHashMap$Reference.getHash:()I
aload 8
iload 11
aaload
33: invokevirtual org.springframework.util.ConcurrentReferenceHashMap$ReferenceManager.createReference:(Lorg/springframework/util/ConcurrentReferenceHashMap$Entry;ILorg/springframework/util/ConcurrentReferenceHashMap$Reference;)Lorg/springframework/util/ConcurrentReferenceHashMap$Reference;
aastore
end local 11 end local 10 34: StackMap locals:
StackMap stack:
aload 2
invokeinterface org.springframework.util.ConcurrentReferenceHashMap$Reference.getNext:()Lorg/springframework/util/ConcurrentReferenceHashMap$Reference;
astore 2
35: StackMap locals:
StackMap stack:
aload 2
ifnonnull 27
36: iinc 9 1
StackMap locals:
StackMap stack:
37: iload 9
aload 0
getfield org.springframework.util.ConcurrentReferenceHashMap$Segment.references:[Lorg/springframework/util/ConcurrentReferenceHashMap$Reference;
arraylength
if_icmplt 23
end local 9 38: iload 6
ifeq 41
39: aload 0
aload 8
putfield org.springframework.util.ConcurrentReferenceHashMap$Segment.references:[Lorg/springframework/util/ConcurrentReferenceHashMap$Reference;
40: aload 0
aload 0
getfield org.springframework.util.ConcurrentReferenceHashMap$Segment.references:[Lorg/springframework/util/ConcurrentReferenceHashMap$Reference;
arraylength
i2f
aload 0
getfield org.springframework.util.ConcurrentReferenceHashMap$Segment.this$0:Lorg/springframework/util/ConcurrentReferenceHashMap;
invokevirtual org.springframework.util.ConcurrentReferenceHashMap.getLoadFactor:()F
fmul
f2i
putfield org.springframework.util.ConcurrentReferenceHashMap$Segment.resizeThreshold:I
41: StackMap locals:
StackMap stack:
aload 0
getfield org.springframework.util.ConcurrentReferenceHashMap$Segment.count:Ljava/util/concurrent/atomic/AtomicInteger;
iload 4
iconst_0
invokestatic java.lang.Math.max:(II)I
invokevirtual java.util.concurrent.atomic.AtomicInteger.set:(I)V
end local 8 end local 7 end local 6 end local 5 end local 4 42: goto 46
end local 3 43: StackMap locals: org.springframework.util.ConcurrentReferenceHashMap$Segment int org.springframework.util.ConcurrentReferenceHashMap$Reference
StackMap stack: java.lang.Throwable
astore 12
44: aload 0
invokevirtual org.springframework.util.ConcurrentReferenceHashMap$Segment.unlock:()V
45: aload 12
athrow
start local 3 46: StackMap locals: int
StackMap stack:
aload 0
invokevirtual org.springframework.util.ConcurrentReferenceHashMap$Segment.unlock:()V
47: return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 48 0 this Lorg/springframework/util/ConcurrentReferenceHashMap$Segment;
0 48 1 allowResize Z
0 48 2 ref Lorg/springframework/util/ConcurrentReferenceHashMap$Reference<TK;TV;>;
13 43 3 needsResize Z
46 48 3 needsResize Z
2 42 4 countAfterRestructure I
3 42 5 toPurge Ljava/util/Set<Lorg/springframework/util/ConcurrentReferenceHashMap$Reference<TK;TV;>;>;
14 42 6 resizing Z
15 42 7 restructureSize I
21 42 8 restructured [Lorg/springframework/util/ConcurrentReferenceHashMap$Reference;
22 38 9 i I
29 34 10 entry Lorg/springframework/util/ConcurrentReferenceHashMap$Entry<TK;TV;>;
31 34 11 index I
Exception table:
from to target type
1 43 43 any
Signature: (ZLorg/springframework/util/ConcurrentReferenceHashMap$Reference<TK;TV;>;)V
RuntimeVisibleParameterAnnotations:
0:
1:
org.springframework.lang.Nullable()
MethodParameters:
Name Flags
allowResize
ref
private org.springframework.util.ConcurrentReferenceHashMap$Reference<K, V> findInChain(org.springframework.util.ConcurrentReferenceHashMap$Reference<K, V>, , int);
descriptor: (Lorg/springframework/util/ConcurrentReferenceHashMap$Reference;Ljava/lang/Object;I)Lorg/springframework/util/ConcurrentReferenceHashMap$Reference;
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=7, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 1
astore 4
start local 4 1: goto 9
2: StackMap locals: org.springframework.util.ConcurrentReferenceHashMap$Reference
StackMap stack:
aload 4
invokeinterface org.springframework.util.ConcurrentReferenceHashMap$Reference.getHash:()I
iload 3
if_icmpne 8
3: aload 4
invokeinterface org.springframework.util.ConcurrentReferenceHashMap$Reference.get:()Lorg/springframework/util/ConcurrentReferenceHashMap$Entry;
astore 5
start local 5 4: aload 5
ifnull 8
5: aload 5
invokevirtual org.springframework.util.ConcurrentReferenceHashMap$Entry.getKey:()Ljava/lang/Object;
astore 6
start local 6 6: aload 6
aload 2
invokestatic org.springframework.util.ObjectUtils.nullSafeEquals:(Ljava/lang/Object;Ljava/lang/Object;)Z
ifeq 8
7: aload 4
areturn
end local 6 end local 5 8: StackMap locals:
StackMap stack:
aload 4
invokeinterface org.springframework.util.ConcurrentReferenceHashMap$Reference.getNext:()Lorg/springframework/util/ConcurrentReferenceHashMap$Reference;
astore 4
9: StackMap locals:
StackMap stack:
aload 4
ifnonnull 2
10: aconst_null
areturn
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 11 0 this Lorg/springframework/util/ConcurrentReferenceHashMap$Segment;
0 11 1 ref Lorg/springframework/util/ConcurrentReferenceHashMap$Reference<TK;TV;>;
0 11 2 key Ljava/lang/Object;
0 11 3 hash I
1 11 4 currRef Lorg/springframework/util/ConcurrentReferenceHashMap$Reference<TK;TV;>;
4 8 5 entry Lorg/springframework/util/ConcurrentReferenceHashMap$Entry<TK;TV;>;
6 8 6 entryKey TK;
Signature: (Lorg/springframework/util/ConcurrentReferenceHashMap$Reference<TK;TV;>;Ljava/lang/Object;I)Lorg/springframework/util/ConcurrentReferenceHashMap$Reference<TK;TV;>;
RuntimeVisibleAnnotations:
org.springframework.lang.Nullable()
RuntimeVisibleParameterAnnotations:
0:
1:
org.springframework.lang.Nullable()
2:
MethodParameters:
Name Flags
ref
key
hash
private org.springframework.util.ConcurrentReferenceHashMap$Reference<K, V>[] createReferenceArray(int);
descriptor: (I)[Lorg/springframework/util/ConcurrentReferenceHashMap$Reference;
flags: (0x0002) ACC_PRIVATE
Code:
stack=1, locals=2, args_size=2
start local 0 start local 1 0: iload 1
anewarray org.springframework.util.ConcurrentReferenceHashMap$Reference
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/springframework/util/ConcurrentReferenceHashMap$Segment;
0 1 1 size I
Signature: (I)[Lorg/springframework/util/ConcurrentReferenceHashMap$Reference<TK;TV;>;
MethodParameters:
Name Flags
size
private int getIndex(int, org.springframework.util.ConcurrentReferenceHashMap$Reference<K, V>[]);
descriptor: (I[Lorg/springframework/util/ConcurrentReferenceHashMap$Reference;)I
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=3, args_size=3
start local 0 start local 1 start local 2 0: iload 1
aload 2
arraylength
iconst_1
isub
iand
ireturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/springframework/util/ConcurrentReferenceHashMap$Segment;
0 1 1 hash I
0 1 2 references [Lorg/springframework/util/ConcurrentReferenceHashMap$Reference;
Signature: (I[Lorg/springframework/util/ConcurrentReferenceHashMap$Reference<TK;TV;>;)I
MethodParameters:
Name Flags
hash
references
public final int getSize();
descriptor: ()I
flags: (0x0011) ACC_PUBLIC, ACC_FINAL
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield org.springframework.util.ConcurrentReferenceHashMap$Segment.references:[Lorg/springframework/util/ConcurrentReferenceHashMap$Reference;
arraylength
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/springframework/util/ConcurrentReferenceHashMap$Segment;
public final int getCount();
descriptor: ()I
flags: (0x0011) ACC_PUBLIC, ACC_FINAL
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield org.springframework.util.ConcurrentReferenceHashMap$Segment.count:Ljava/util/concurrent/atomic/AtomicInteger;
invokevirtual java.util.concurrent.atomic.AtomicInteger.get:()I
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/springframework/util/ConcurrentReferenceHashMap$Segment;
private void lambda$0(java.lang.Object, int, org.springframework.util.ConcurrentReferenceHashMap$Reference, int, java.lang.Object);
descriptor: (Ljava/lang/Object;ILorg/springframework/util/ConcurrentReferenceHashMap$Reference;ILjava/lang/Object;)V
flags: (0x1002) ACC_PRIVATE, ACC_SYNTHETIC
Code:
stack=4, locals=8, args_size=6
start local 0 start local 5 0: new org.springframework.util.ConcurrentReferenceHashMap$Entry
dup
aload 1
aload 5
invokespecial org.springframework.util.ConcurrentReferenceHashMap$Entry.<init>:(Ljava/lang/Object;Ljava/lang/Object;)V
astore 6
start local 6 1: aload 0
getfield org.springframework.util.ConcurrentReferenceHashMap$Segment.referenceManager:Lorg/springframework/util/ConcurrentReferenceHashMap$ReferenceManager;
aload 6
iload 2
aload 3
invokevirtual org.springframework.util.ConcurrentReferenceHashMap$ReferenceManager.createReference:(Lorg/springframework/util/ConcurrentReferenceHashMap$Entry;ILorg/springframework/util/ConcurrentReferenceHashMap$Reference;)Lorg/springframework/util/ConcurrentReferenceHashMap$Reference;
astore 7
start local 7 2: aload 0
getfield org.springframework.util.ConcurrentReferenceHashMap$Segment.references:[Lorg/springframework/util/ConcurrentReferenceHashMap$Reference;
iload 4
aload 7
aastore
3: aload 0
getfield org.springframework.util.ConcurrentReferenceHashMap$Segment.count:Ljava/util/concurrent/atomic/AtomicInteger;
invokevirtual java.util.concurrent.atomic.AtomicInteger.incrementAndGet:()I
pop
end local 7 end local 6 4: return
end local 5 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lorg/springframework/util/ConcurrentReferenceHashMap$Segment;
0 5 5 value TV;
1 4 6 newEntry Lorg/springframework/util/ConcurrentReferenceHashMap$Entry<TK;TV;>;
2 4 7 newReference Lorg/springframework/util/ConcurrentReferenceHashMap$Reference<TK;TV;>;
}
SourceFile: "ConcurrentReferenceHashMap.java"
NestHost: org.springframework.util.ConcurrentReferenceHashMap
InnerClasses:
public final Lookup = java.lang.invoke.MethodHandles$Lookup of java.lang.invoke.MethodHandles
private abstract Entries = org.springframework.util.ConcurrentReferenceHashMap$Entries of org.springframework.util.ConcurrentReferenceHashMap
protected final Entry = org.springframework.util.ConcurrentReferenceHashMap$Entry of org.springframework.util.ConcurrentReferenceHashMap
protected abstract Reference = org.springframework.util.ConcurrentReferenceHashMap$Reference of org.springframework.util.ConcurrentReferenceHashMap
protected ReferenceManager = org.springframework.util.ConcurrentReferenceHashMap$ReferenceManager of org.springframework.util.ConcurrentReferenceHashMap
protected final Restructure = org.springframework.util.ConcurrentReferenceHashMap$Restructure of org.springframework.util.ConcurrentReferenceHashMap
protected final Segment = org.springframework.util.ConcurrentReferenceHashMap$Segment of org.springframework.util.ConcurrentReferenceHashMap
private abstract Task = org.springframework.util.ConcurrentReferenceHashMap$Task of org.springframework.util.ConcurrentReferenceHashMap
private final TaskOption = org.springframework.util.ConcurrentReferenceHashMap$TaskOption of org.springframework.util.ConcurrentReferenceHashMap