final class java.util.concurrent.ConcurrentHashMap$Segment<K, V> extends java.util.concurrent.locks.ReentrantLock implements java.io.Serializable
minor version: 0
major version: 59
flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
this_class: java.util.concurrent.ConcurrentHashMap$Segment
super_class: java.util.concurrent.locks.ReentrantLock
{
private static final long serialVersionUID;
descriptor: J
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 2249069246763182397
static final int MAX_SCAN_RETRIES;
descriptor: I
flags: (0x0018) ACC_STATIC, ACC_FINAL
volatile transient java.util.concurrent.ConcurrentHashMap$HashEntry<K, V>[] table;
descriptor: [Ljava/util/concurrent/ConcurrentHashMap$HashEntry;
flags: (0x00c0) ACC_VOLATILE, ACC_TRANSIENT
Signature: [Ljava/util/concurrent/ConcurrentHashMap$HashEntry<TK;TV;>;
transient int count;
descriptor: I
flags: (0x0080) ACC_TRANSIENT
transient int modCount;
descriptor: I
flags: (0x0080) ACC_TRANSIENT
transient int threshold;
descriptor: I
flags: (0x0080) ACC_TRANSIENT
final float loadFactor;
descriptor: F
flags: (0x0010) ACC_FINAL
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=2, locals=0, args_size=0
0: invokestatic java.lang.Runtime.getRuntime:()Ljava/lang/Runtime;
invokevirtual java.lang.Runtime.availableProcessors:()I
iconst_1
if_icmple 1
bipush 64
goto 2
StackMap locals:
StackMap stack:
1: iconst_1
2: StackMap locals:
StackMap stack: int
putstatic java.util.concurrent.ConcurrentHashMap$Segment.MAX_SCAN_RETRIES:I
3: return
LocalVariableTable:
Start End Slot Name Signature
void <init>(float, int, java.util.concurrent.ConcurrentHashMap$HashEntry<K, V>[]);
descriptor: (FI[Ljava/util/concurrent/ConcurrentHashMap$HashEntry;)V
flags: (0x0000)
Code:
stack=2, locals=4, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 0
invokespecial java.util.concurrent.locks.ReentrantLock.<init>:()V
1: aload 0
fload 1
putfield java.util.concurrent.ConcurrentHashMap$Segment.loadFactor:F
2: aload 0
iload 2
putfield java.util.concurrent.ConcurrentHashMap$Segment.threshold:I
3: aload 0
aload 3
putfield java.util.concurrent.ConcurrentHashMap$Segment.table:[Ljava/util/concurrent/ConcurrentHashMap$HashEntry;
4: return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Ljava/util/concurrent/ConcurrentHashMap$Segment<TK;TV;>;
0 5 1 lf F
0 5 2 threshold I
0 5 3 tab [Ljava/util/concurrent/ConcurrentHashMap$HashEntry;
Signature: (FI[Ljava/util/concurrent/ConcurrentHashMap$HashEntry<TK;TV;>;)V
MethodParameters:
Name Flags
lf
threshold
tab
final V put(K, int, V, );
descriptor: (Ljava/lang/Object;ILjava/lang/Object;Z)Ljava/lang/Object;
flags: (0x0010) ACC_FINAL
Code:
stack=6, locals=13, args_size=5
start local 0 start local 1 start local 2 start local 3 start local 4 0: aload 0
invokevirtual java.util.concurrent.ConcurrentHashMap$Segment.tryLock:()Z
ifeq 1
aconst_null
goto 2
1: StackMap locals:
StackMap stack:
aload 0
aload 1
iload 2
aload 3
invokevirtual java.util.concurrent.ConcurrentHashMap$Segment.scanAndLockForPut:(Ljava/lang/Object;ILjava/lang/Object;)Ljava/util/concurrent/ConcurrentHashMap$HashEntry;
2: StackMap locals:
StackMap stack: java.util.concurrent.ConcurrentHashMap$HashEntry
astore 5
start local 5 3: aload 0
getfield java.util.concurrent.ConcurrentHashMap$Segment.table:[Ljava/util/concurrent/ConcurrentHashMap$HashEntry;
astore 7
start local 7 4: aload 7
arraylength
iconst_1
isub
iload 2
iand
istore 8
start local 8 5: aload 7
iload 8
invokestatic java.util.concurrent.ConcurrentHashMap.entryAt:([Ljava/util/concurrent/ConcurrentHashMap$HashEntry;I)Ljava/util/concurrent/ConcurrentHashMap$HashEntry;
astore 9
start local 9 6: aload 9
astore 10
start local 10 7: StackMap locals: java.util.concurrent.ConcurrentHashMap$Segment java.lang.Object int java.lang.Object int java.util.concurrent.ConcurrentHashMap$HashEntry top java.util.concurrent.ConcurrentHashMap$HashEntry[] int java.util.concurrent.ConcurrentHashMap$HashEntry java.util.concurrent.ConcurrentHashMap$HashEntry
StackMap stack:
aload 10
ifnull 18
8: aload 10
getfield java.util.concurrent.ConcurrentHashMap$HashEntry.key:Ljava/lang/Object;
dup
astore 11
start local 11 9: aload 1
if_acmpeq 11
10: aload 10
getfield java.util.concurrent.ConcurrentHashMap$HashEntry.hash:I
iload 2
if_icmpne 16
aload 1
aload 11
invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
ifeq 16
11: StackMap locals: java.lang.Object
StackMap stack:
aload 10
getfield java.util.concurrent.ConcurrentHashMap$HashEntry.value:Ljava/lang/Object;
astore 6
start local 6 12: iload 4
ifne 32
13: aload 10
aload 3
putfield java.util.concurrent.ConcurrentHashMap$HashEntry.value:Ljava/lang/Object;
14: aload 0
dup
getfield java.util.concurrent.ConcurrentHashMap$Segment.modCount:I
iconst_1
iadd
putfield java.util.concurrent.ConcurrentHashMap$Segment.modCount:I
15: goto 32
end local 6 16: StackMap locals:
StackMap stack:
aload 10
getfield java.util.concurrent.ConcurrentHashMap$HashEntry.next:Ljava/util/concurrent/ConcurrentHashMap$HashEntry;
astore 10
end local 11 17: goto 7
18: StackMap locals:
StackMap stack:
aload 5
ifnull 20
19: aload 5
aload 9
invokevirtual java.util.concurrent.ConcurrentHashMap$HashEntry.setNext:(Ljava/util/concurrent/ConcurrentHashMap$HashEntry;)V
goto 21
20: StackMap locals:
StackMap stack:
new java.util.concurrent.ConcurrentHashMap$HashEntry
dup
iload 2
aload 1
aload 3
aload 9
invokespecial java.util.concurrent.ConcurrentHashMap$HashEntry.<init>:(ILjava/lang/Object;Ljava/lang/Object;Ljava/util/concurrent/ConcurrentHashMap$HashEntry;)V
astore 5
21: StackMap locals:
StackMap stack:
aload 0
getfield java.util.concurrent.ConcurrentHashMap$Segment.count:I
iconst_1
iadd
istore 11
start local 11 22: iload 11
aload 0
getfield java.util.concurrent.ConcurrentHashMap$Segment.threshold:I
if_icmple 24
aload 7
arraylength
ldc 1073741824
if_icmpge 24
23: aload 0
aload 5
invokevirtual java.util.concurrent.ConcurrentHashMap$Segment.rehash:(Ljava/util/concurrent/ConcurrentHashMap$HashEntry;)V
goto 25
24: StackMap locals: int
StackMap stack:
aload 7
iload 8
aload 5
invokestatic java.util.concurrent.ConcurrentHashMap.setEntryAt:([Ljava/util/concurrent/ConcurrentHashMap$HashEntry;ILjava/util/concurrent/ConcurrentHashMap$HashEntry;)V
25: StackMap locals:
StackMap stack:
aload 0
dup
getfield java.util.concurrent.ConcurrentHashMap$Segment.modCount:I
iconst_1
iadd
putfield java.util.concurrent.ConcurrentHashMap$Segment.modCount:I
26: aload 0
iload 11
putfield java.util.concurrent.ConcurrentHashMap$Segment.count:I
27: aconst_null
astore 6
end local 11 end local 10 end local 9 end local 8 end local 7 start local 6 28: goto 32
end local 6 StackMap locals: java.util.concurrent.ConcurrentHashMap$Segment java.lang.Object int java.lang.Object int java.util.concurrent.ConcurrentHashMap$HashEntry
StackMap stack: java.lang.Throwable
29: astore 12
30: aload 0
invokevirtual java.util.concurrent.ConcurrentHashMap$Segment.unlock:()V
31: aload 12
athrow
start local 6 32: StackMap locals: java.lang.Object
StackMap stack:
aload 0
invokevirtual java.util.concurrent.ConcurrentHashMap$Segment.unlock:()V
33: aload 6
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 34 0 this Ljava/util/concurrent/ConcurrentHashMap$Segment<TK;TV;>;
0 34 1 key TK;
0 34 2 hash I
0 34 3 value TV;
0 34 4 onlyIfAbsent Z
3 34 5 node Ljava/util/concurrent/ConcurrentHashMap$HashEntry<TK;TV;>;
12 16 6 oldValue TV;
28 29 6 oldValue TV;
32 34 6 oldValue TV;
4 28 7 tab [Ljava/util/concurrent/ConcurrentHashMap$HashEntry;
5 28 8 index I
6 28 9 first Ljava/util/concurrent/ConcurrentHashMap$HashEntry<TK;TV;>;
7 28 10 e Ljava/util/concurrent/ConcurrentHashMap$HashEntry<TK;TV;>;
9 17 11 k TK;
22 28 11 c I
Exception table:
from to target type
3 29 29 any
Signature: (TK;ITV;Z)TV;
MethodParameters:
Name Flags
key
hash
value
onlyIfAbsent
private void rehash(java.util.concurrent.ConcurrentHashMap$HashEntry<K, V>);
descriptor: (Ljava/util/concurrent/ConcurrentHashMap$HashEntry;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=8, locals=18, args_size=2
start local 0 start local 1 0: aload 0
getfield java.util.concurrent.ConcurrentHashMap$Segment.table:[Ljava/util/concurrent/ConcurrentHashMap$HashEntry;
astore 2
start local 2 1: aload 2
arraylength
istore 3
start local 3 2: iload 3
iconst_1
ishl
istore 4
start local 4 3: aload 0
iload 4
i2f
aload 0
getfield java.util.concurrent.ConcurrentHashMap$Segment.loadFactor:F
fmul
f2i
putfield java.util.concurrent.ConcurrentHashMap$Segment.threshold:I
4: iload 4
anewarray java.util.concurrent.ConcurrentHashMap$HashEntry
5: astore 5
start local 5 6: iload 4
iconst_1
isub
istore 6
start local 6 7: iconst_0
istore 7
start local 7 8: goto 36
9: StackMap locals: java.util.concurrent.ConcurrentHashMap$Segment java.util.concurrent.ConcurrentHashMap$HashEntry java.util.concurrent.ConcurrentHashMap$HashEntry[] int int java.util.concurrent.ConcurrentHashMap$HashEntry[] int int
StackMap stack:
aload 2
iload 7
aaload
astore 8
start local 8 10: aload 8
ifnull 35
11: aload 8
getfield java.util.concurrent.ConcurrentHashMap$HashEntry.next:Ljava/util/concurrent/ConcurrentHashMap$HashEntry;
astore 9
start local 9 12: aload 8
getfield java.util.concurrent.ConcurrentHashMap$HashEntry.hash:I
iload 6
iand
istore 10
start local 10 13: aload 9
ifnonnull 15
14: aload 5
iload 10
aload 8
aastore
goto 35
15: StackMap locals: java.util.concurrent.ConcurrentHashMap$HashEntry java.util.concurrent.ConcurrentHashMap$HashEntry int
StackMap stack:
aload 8
astore 11
start local 11 16: iload 10
istore 12
start local 12 17: aload 9
astore 13
start local 13 18: goto 24
19: StackMap locals: java.util.concurrent.ConcurrentHashMap$HashEntry int java.util.concurrent.ConcurrentHashMap$HashEntry
StackMap stack:
aload 13
getfield java.util.concurrent.ConcurrentHashMap$HashEntry.hash:I
iload 6
iand
istore 14
start local 14 20: iload 14
iload 12
if_icmpeq 23
21: iload 14
istore 12
22: aload 13
astore 11
end local 14 23: StackMap locals:
StackMap stack:
aload 13
getfield java.util.concurrent.ConcurrentHashMap$HashEntry.next:Ljava/util/concurrent/ConcurrentHashMap$HashEntry;
astore 13
24: StackMap locals:
StackMap stack:
aload 13
ifnonnull 19
end local 13 25: aload 5
iload 12
aload 11
aastore
26: aload 8
astore 13
start local 13 27: goto 34
28: StackMap locals:
StackMap stack:
aload 13
getfield java.util.concurrent.ConcurrentHashMap$HashEntry.value:Ljava/lang/Object;
astore 14
start local 14 29: aload 13
getfield java.util.concurrent.ConcurrentHashMap$HashEntry.hash:I
istore 15
start local 15 30: iload 15
iload 6
iand
istore 16
start local 16 31: aload 5
iload 16
aaload
astore 17
start local 17 32: aload 5
iload 16
new java.util.concurrent.ConcurrentHashMap$HashEntry
dup
iload 15
aload 13
getfield java.util.concurrent.ConcurrentHashMap$HashEntry.key:Ljava/lang/Object;
aload 14
aload 17
invokespecial java.util.concurrent.ConcurrentHashMap$HashEntry.<init>:(ILjava/lang/Object;Ljava/lang/Object;Ljava/util/concurrent/ConcurrentHashMap$HashEntry;)V
aastore
end local 17 end local 16 end local 15 end local 14 33: aload 13
getfield java.util.concurrent.ConcurrentHashMap$HashEntry.next:Ljava/util/concurrent/ConcurrentHashMap$HashEntry;
astore 13
StackMap locals:
StackMap stack:
34: aload 13
aload 11
if_acmpne 28
end local 13 end local 12 end local 11 end local 10 end local 9 end local 8 35: StackMap locals: java.util.concurrent.ConcurrentHashMap$Segment java.util.concurrent.ConcurrentHashMap$HashEntry java.util.concurrent.ConcurrentHashMap$HashEntry[] int int java.util.concurrent.ConcurrentHashMap$HashEntry[] int int
StackMap stack:
iinc 7 1
StackMap locals:
StackMap stack:
36: iload 7
iload 3
if_icmplt 9
end local 7 37: aload 1
getfield java.util.concurrent.ConcurrentHashMap$HashEntry.hash:I
iload 6
iand
istore 7
start local 7 38: aload 1
aload 5
iload 7
aaload
invokevirtual java.util.concurrent.ConcurrentHashMap$HashEntry.setNext:(Ljava/util/concurrent/ConcurrentHashMap$HashEntry;)V
39: aload 5
iload 7
aload 1
aastore
40: aload 0
aload 5
putfield java.util.concurrent.ConcurrentHashMap$Segment.table:[Ljava/util/concurrent/ConcurrentHashMap$HashEntry;
41: return
end local 7 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 42 0 this Ljava/util/concurrent/ConcurrentHashMap$Segment<TK;TV;>;
0 42 1 node Ljava/util/concurrent/ConcurrentHashMap$HashEntry<TK;TV;>;
1 42 2 oldTable [Ljava/util/concurrent/ConcurrentHashMap$HashEntry;
2 42 3 oldCapacity I
3 42 4 newCapacity I
6 42 5 newTable [Ljava/util/concurrent/ConcurrentHashMap$HashEntry;
7 42 6 sizeMask I
8 37 7 i I
10 35 8 e Ljava/util/concurrent/ConcurrentHashMap$HashEntry<TK;TV;>;
12 35 9 next Ljava/util/concurrent/ConcurrentHashMap$HashEntry<TK;TV;>;
13 35 10 idx I
16 35 11 lastRun Ljava/util/concurrent/ConcurrentHashMap$HashEntry<TK;TV;>;
17 35 12 lastIdx I
18 25 13 last Ljava/util/concurrent/ConcurrentHashMap$HashEntry<TK;TV;>;
20 23 14 k I
27 35 13 p Ljava/util/concurrent/ConcurrentHashMap$HashEntry<TK;TV;>;
29 33 14 v TV;
30 33 15 h I
31 33 16 k I
32 33 17 n Ljava/util/concurrent/ConcurrentHashMap$HashEntry<TK;TV;>;
38 42 7 nodeIndex I
Signature: (Ljava/util/concurrent/ConcurrentHashMap$HashEntry<TK;TV;>;)V
MethodParameters:
Name Flags
node
private java.util.concurrent.ConcurrentHashMap$HashEntry<K, V> scanAndLockForPut(K, int, V);
descriptor: (Ljava/lang/Object;ILjava/lang/Object;)Ljava/util/concurrent/ConcurrentHashMap$HashEntry;
flags: (0x0002) ACC_PRIVATE
Code:
stack=6, locals=9, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 0
iload 2
invokestatic java.util.concurrent.ConcurrentHashMap.entryForHash:(Ljava/util/concurrent/ConcurrentHashMap$Segment;I)Ljava/util/concurrent/ConcurrentHashMap$HashEntry;
astore 4
start local 4 1: aload 4
astore 5
start local 5 2: aconst_null
astore 6
start local 6 3: iconst_m1
istore 7
start local 7 4: goto 23
5: StackMap locals: java.util.concurrent.ConcurrentHashMap$Segment java.lang.Object int java.lang.Object java.util.concurrent.ConcurrentHashMap$HashEntry java.util.concurrent.ConcurrentHashMap$HashEntry java.util.concurrent.ConcurrentHashMap$HashEntry int
StackMap stack:
iload 7
ifge 15
6: aload 5
ifnonnull 11
7: aload 6
ifnonnull 9
8: new java.util.concurrent.ConcurrentHashMap$HashEntry
dup
iload 2
aload 1
aload 3
aconst_null
invokespecial java.util.concurrent.ConcurrentHashMap$HashEntry.<init>:(ILjava/lang/Object;Ljava/lang/Object;Ljava/util/concurrent/ConcurrentHashMap$HashEntry;)V
astore 6
9: StackMap locals:
StackMap stack:
iconst_0
istore 7
10: goto 23
11: StackMap locals:
StackMap stack:
aload 1
aload 5
getfield java.util.concurrent.ConcurrentHashMap$HashEntry.key:Ljava/lang/Object;
invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
ifeq 13
12: iconst_0
istore 7
goto 23
13: StackMap locals:
StackMap stack:
aload 5
getfield java.util.concurrent.ConcurrentHashMap$HashEntry.next:Ljava/util/concurrent/ConcurrentHashMap$HashEntry;
astore 5
14: goto 23
15: StackMap locals:
StackMap stack:
iinc 7 1
iload 7
getstatic java.util.concurrent.ConcurrentHashMap$Segment.MAX_SCAN_RETRIES:I
if_icmple 18
16: aload 0
invokevirtual java.util.concurrent.ConcurrentHashMap$Segment.lock:()V
17: goto 24
18: StackMap locals:
StackMap stack:
iload 7
iconst_1
iand
ifne 23
19: aload 0
iload 2
invokestatic java.util.concurrent.ConcurrentHashMap.entryForHash:(Ljava/util/concurrent/ConcurrentHashMap$Segment;I)Ljava/util/concurrent/ConcurrentHashMap$HashEntry;
dup
astore 8
start local 8 20: aload 4
if_acmpeq 23
21: aload 8
dup
astore 4
astore 5
22: iconst_m1
istore 7
end local 8 23: StackMap locals:
StackMap stack:
aload 0
invokevirtual java.util.concurrent.ConcurrentHashMap$Segment.tryLock:()Z
ifeq 5
24: StackMap locals:
StackMap stack:
aload 6
areturn
end local 7 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 25 0 this Ljava/util/concurrent/ConcurrentHashMap$Segment<TK;TV;>;
0 25 1 key TK;
0 25 2 hash I
0 25 3 value TV;
1 25 4 first Ljava/util/concurrent/ConcurrentHashMap$HashEntry<TK;TV;>;
2 25 5 e Ljava/util/concurrent/ConcurrentHashMap$HashEntry<TK;TV;>;
3 25 6 node Ljava/util/concurrent/ConcurrentHashMap$HashEntry<TK;TV;>;
4 25 7 retries I
20 23 8 f Ljava/util/concurrent/ConcurrentHashMap$HashEntry<TK;TV;>;
Signature: (TK;ITV;)Ljava/util/concurrent/ConcurrentHashMap$HashEntry<TK;TV;>;
MethodParameters:
Name Flags
key
hash
value
private void scanAndLock(java.lang.Object, int);
descriptor: (Ljava/lang/Object;I)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=7, args_size=3
start local 0 start local 1 start local 2 0: aload 0
iload 2
invokestatic java.util.concurrent.ConcurrentHashMap.entryForHash:(Ljava/util/concurrent/ConcurrentHashMap$Segment;I)Ljava/util/concurrent/ConcurrentHashMap$HashEntry;
astore 3
start local 3 1: aload 3
astore 4
start local 4 2: iconst_m1
istore 5
start local 5 3: goto 17
4: StackMap locals: java.util.concurrent.ConcurrentHashMap$HashEntry java.util.concurrent.ConcurrentHashMap$HashEntry int
StackMap stack:
iload 5
ifge 9
5: aload 4
ifnull 6
aload 1
aload 4
getfield java.util.concurrent.ConcurrentHashMap$HashEntry.key:Ljava/lang/Object;
invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
ifeq 7
6: StackMap locals:
StackMap stack:
iconst_0
istore 5
goto 17
7: StackMap locals:
StackMap stack:
aload 4
getfield java.util.concurrent.ConcurrentHashMap$HashEntry.next:Ljava/util/concurrent/ConcurrentHashMap$HashEntry;
astore 4
8: goto 17
9: StackMap locals:
StackMap stack:
iinc 5 1
iload 5
getstatic java.util.concurrent.ConcurrentHashMap$Segment.MAX_SCAN_RETRIES:I
if_icmple 12
10: aload 0
invokevirtual java.util.concurrent.ConcurrentHashMap$Segment.lock:()V
11: goto 18
12: StackMap locals:
StackMap stack:
iload 5
iconst_1
iand
ifne 17
13: aload 0
iload 2
invokestatic java.util.concurrent.ConcurrentHashMap.entryForHash:(Ljava/util/concurrent/ConcurrentHashMap$Segment;I)Ljava/util/concurrent/ConcurrentHashMap$HashEntry;
dup
astore 6
start local 6 14: aload 3
if_acmpeq 17
15: aload 6
dup
astore 3
astore 4
16: iconst_m1
istore 5
end local 6 17: StackMap locals:
StackMap stack:
aload 0
invokevirtual java.util.concurrent.ConcurrentHashMap$Segment.tryLock:()Z
ifeq 4
18: StackMap locals:
StackMap stack:
return
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 19 0 this Ljava/util/concurrent/ConcurrentHashMap$Segment<TK;TV;>;
0 19 1 key Ljava/lang/Object;
0 19 2 hash I
1 19 3 first Ljava/util/concurrent/ConcurrentHashMap$HashEntry<TK;TV;>;
2 19 4 e Ljava/util/concurrent/ConcurrentHashMap$HashEntry<TK;TV;>;
3 19 5 retries I
14 17 6 f Ljava/util/concurrent/ConcurrentHashMap$HashEntry<TK;TV;>;
MethodParameters:
Name Flags
key
hash
final V remove(, int, );
descriptor: (Ljava/lang/Object;ILjava/lang/Object;)Ljava/lang/Object;
flags: (0x0010) ACC_FINAL
Code:
stack=3, locals=13, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 0
invokevirtual java.util.concurrent.ConcurrentHashMap$Segment.tryLock:()Z
ifne 2
1: aload 0
aload 1
iload 2
invokevirtual java.util.concurrent.ConcurrentHashMap$Segment.scanAndLock:(Ljava/lang/Object;I)V
2: StackMap locals:
StackMap stack:
aconst_null
astore 4
start local 4 3: aload 0
getfield java.util.concurrent.ConcurrentHashMap$Segment.table:[Ljava/util/concurrent/ConcurrentHashMap$HashEntry;
astore 5
start local 5 4: aload 5
arraylength
iconst_1
isub
iload 2
iand
istore 6
start local 6 5: aload 5
iload 6
invokestatic java.util.concurrent.ConcurrentHashMap.entryAt:([Ljava/util/concurrent/ConcurrentHashMap$HashEntry;I)Ljava/util/concurrent/ConcurrentHashMap$HashEntry;
astore 7
start local 7 6: aconst_null
astore 8
start local 8 7: goto 23
8: StackMap locals: java.util.concurrent.ConcurrentHashMap$Segment java.lang.Object int java.lang.Object java.lang.Object java.util.concurrent.ConcurrentHashMap$HashEntry[] int java.util.concurrent.ConcurrentHashMap$HashEntry java.util.concurrent.ConcurrentHashMap$HashEntry
StackMap stack:
aload 7
getfield java.util.concurrent.ConcurrentHashMap$HashEntry.next:Ljava/util/concurrent/ConcurrentHashMap$HashEntry;
astore 10
start local 10 9: aload 7
getfield java.util.concurrent.ConcurrentHashMap$HashEntry.key:Ljava/lang/Object;
dup
astore 9
start local 9 10: aload 1
if_acmpeq 12
11: aload 7
getfield java.util.concurrent.ConcurrentHashMap$HashEntry.hash:I
iload 2
if_icmpne 21
aload 1
aload 9
invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
ifeq 21
12: StackMap locals: java.lang.Object java.util.concurrent.ConcurrentHashMap$HashEntry
StackMap stack:
aload 7
getfield java.util.concurrent.ConcurrentHashMap$HashEntry.value:Ljava/lang/Object;
astore 11
start local 11 13: aload 3
ifnull 14
aload 3
aload 11
if_acmpeq 14
aload 3
aload 11
invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
ifeq 28
14: StackMap locals: java.lang.Object
StackMap stack:
aload 8
ifnonnull 16
15: aload 5
iload 6
aload 10
invokestatic java.util.concurrent.ConcurrentHashMap.setEntryAt:([Ljava/util/concurrent/ConcurrentHashMap$HashEntry;ILjava/util/concurrent/ConcurrentHashMap$HashEntry;)V
goto 17
16: StackMap locals:
StackMap stack:
aload 8
aload 10
invokevirtual java.util.concurrent.ConcurrentHashMap$HashEntry.setNext:(Ljava/util/concurrent/ConcurrentHashMap$HashEntry;)V
17: StackMap locals:
StackMap stack:
aload 0
dup
getfield java.util.concurrent.ConcurrentHashMap$Segment.modCount:I
iconst_1
iadd
putfield java.util.concurrent.ConcurrentHashMap$Segment.modCount:I
18: aload 0
dup
getfield java.util.concurrent.ConcurrentHashMap$Segment.count:I
iconst_1
isub
putfield java.util.concurrent.ConcurrentHashMap$Segment.count:I
19: aload 11
astore 4
20: goto 28
end local 11 21: StackMap locals:
StackMap stack:
aload 7
astore 8
22: aload 10
astore 7
end local 10 end local 9 23: StackMap locals:
StackMap stack:
aload 7
ifnonnull 8
end local 8 end local 7 end local 6 end local 5 24: goto 28
StackMap locals: java.util.concurrent.ConcurrentHashMap$Segment java.lang.Object int java.lang.Object java.lang.Object
StackMap stack: java.lang.Throwable
25: astore 12
26: aload 0
invokevirtual java.util.concurrent.ConcurrentHashMap$Segment.unlock:()V
27: aload 12
athrow
28: StackMap locals:
StackMap stack:
aload 0
invokevirtual java.util.concurrent.ConcurrentHashMap$Segment.unlock:()V
29: aload 4
areturn
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 30 0 this Ljava/util/concurrent/ConcurrentHashMap$Segment<TK;TV;>;
0 30 1 key Ljava/lang/Object;
0 30 2 hash I
0 30 3 value Ljava/lang/Object;
3 30 4 oldValue TV;
4 24 5 tab [Ljava/util/concurrent/ConcurrentHashMap$HashEntry;
5 24 6 index I
6 24 7 e Ljava/util/concurrent/ConcurrentHashMap$HashEntry<TK;TV;>;
7 24 8 pred Ljava/util/concurrent/ConcurrentHashMap$HashEntry<TK;TV;>;
10 23 9 k TK;
9 23 10 next Ljava/util/concurrent/ConcurrentHashMap$HashEntry<TK;TV;>;
13 21 11 v TV;
Exception table:
from to target type
3 25 25 any
Signature: (Ljava/lang/Object;ILjava/lang/Object;)TV;
MethodParameters:
Name Flags
key
hash
value
final boolean replace(K, int, V, );
descriptor: (Ljava/lang/Object;ILjava/lang/Object;Ljava/lang/Object;)Z
flags: (0x0010) ACC_FINAL
Code:
stack=3, locals=9, args_size=5
start local 0 start local 1 start local 2 start local 3 start local 4 0: aload 0
invokevirtual java.util.concurrent.ConcurrentHashMap$Segment.tryLock:()Z
ifne 2
1: aload 0
aload 1
iload 2
invokevirtual java.util.concurrent.ConcurrentHashMap$Segment.scanAndLock:(Ljava/lang/Object;I)V
2: StackMap locals:
StackMap stack:
iconst_0
istore 5
start local 5 3: aload 0
iload 2
invokestatic java.util.concurrent.ConcurrentHashMap.entryForHash:(Ljava/util/concurrent/ConcurrentHashMap$Segment;I)Ljava/util/concurrent/ConcurrentHashMap$HashEntry;
astore 6
start local 6 4: goto 14
5: StackMap locals: int java.util.concurrent.ConcurrentHashMap$HashEntry
StackMap stack:
aload 6
getfield java.util.concurrent.ConcurrentHashMap$HashEntry.key:Ljava/lang/Object;
dup
astore 7
start local 7 6: aload 1
if_acmpeq 8
7: aload 6
getfield java.util.concurrent.ConcurrentHashMap$HashEntry.hash:I
iload 2
if_icmpne 13
aload 1
aload 7
invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
ifeq 13
8: StackMap locals: java.lang.Object
StackMap stack:
aload 3
aload 6
getfield java.util.concurrent.ConcurrentHashMap$HashEntry.value:Ljava/lang/Object;
invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
ifeq 19
9: aload 6
aload 4
putfield java.util.concurrent.ConcurrentHashMap$HashEntry.value:Ljava/lang/Object;
10: aload 0
dup
getfield java.util.concurrent.ConcurrentHashMap$Segment.modCount:I
iconst_1
iadd
putfield java.util.concurrent.ConcurrentHashMap$Segment.modCount:I
11: iconst_1
istore 5
12: goto 19
end local 7 13: StackMap locals:
StackMap stack:
aload 6
getfield java.util.concurrent.ConcurrentHashMap$HashEntry.next:Ljava/util/concurrent/ConcurrentHashMap$HashEntry;
astore 6
StackMap locals:
StackMap stack:
14: aload 6
ifnonnull 5
end local 6 15: goto 19
StackMap locals: java.util.concurrent.ConcurrentHashMap$Segment java.lang.Object int java.lang.Object java.lang.Object int
StackMap stack: java.lang.Throwable
16: astore 8
17: aload 0
invokevirtual java.util.concurrent.ConcurrentHashMap$Segment.unlock:()V
18: aload 8
athrow
19: StackMap locals:
StackMap stack:
aload 0
invokevirtual java.util.concurrent.ConcurrentHashMap$Segment.unlock:()V
20: iload 5
ireturn
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 21 0 this Ljava/util/concurrent/ConcurrentHashMap$Segment<TK;TV;>;
0 21 1 key TK;
0 21 2 hash I
0 21 3 oldValue TV;
0 21 4 newValue TV;
3 21 5 replaced Z
4 15 6 e Ljava/util/concurrent/ConcurrentHashMap$HashEntry<TK;TV;>;
6 13 7 k TK;
Exception table:
from to target type
3 16 16 any
Signature: (TK;ITV;TV;)Z
MethodParameters:
Name Flags
key
hash
oldValue
newValue
final V replace(K, int, );
descriptor: (Ljava/lang/Object;ILjava/lang/Object;)Ljava/lang/Object;
flags: (0x0010) ACC_FINAL
Code:
stack=3, locals=8, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 0
invokevirtual java.util.concurrent.ConcurrentHashMap$Segment.tryLock:()Z
ifne 2
1: aload 0
aload 1
iload 2
invokevirtual java.util.concurrent.ConcurrentHashMap$Segment.scanAndLock:(Ljava/lang/Object;I)V
2: StackMap locals:
StackMap stack:
aconst_null
astore 4
start local 4 3: aload 0
iload 2
invokestatic java.util.concurrent.ConcurrentHashMap.entryForHash:(Ljava/util/concurrent/ConcurrentHashMap$Segment;I)Ljava/util/concurrent/ConcurrentHashMap$HashEntry;
astore 5
start local 5 4: goto 13
5: StackMap locals: java.lang.Object java.util.concurrent.ConcurrentHashMap$HashEntry
StackMap stack:
aload 5
getfield java.util.concurrent.ConcurrentHashMap$HashEntry.key:Ljava/lang/Object;
dup
astore 6
start local 6 6: aload 1
if_acmpeq 8
7: aload 5
getfield java.util.concurrent.ConcurrentHashMap$HashEntry.hash:I
iload 2
if_icmpne 12
aload 1
aload 6
invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
ifeq 12
8: StackMap locals: java.lang.Object
StackMap stack:
aload 5
getfield java.util.concurrent.ConcurrentHashMap$HashEntry.value:Ljava/lang/Object;
astore 4
9: aload 5
aload 3
putfield java.util.concurrent.ConcurrentHashMap$HashEntry.value:Ljava/lang/Object;
10: aload 0
dup
getfield java.util.concurrent.ConcurrentHashMap$Segment.modCount:I
iconst_1
iadd
putfield java.util.concurrent.ConcurrentHashMap$Segment.modCount:I
11: goto 18
end local 6 12: StackMap locals:
StackMap stack:
aload 5
getfield java.util.concurrent.ConcurrentHashMap$HashEntry.next:Ljava/util/concurrent/ConcurrentHashMap$HashEntry;
astore 5
StackMap locals:
StackMap stack:
13: aload 5
ifnonnull 5
end local 5 14: goto 18
StackMap locals: java.util.concurrent.ConcurrentHashMap$Segment java.lang.Object int java.lang.Object java.lang.Object
StackMap stack: java.lang.Throwable
15: astore 7
16: aload 0
invokevirtual java.util.concurrent.ConcurrentHashMap$Segment.unlock:()V
17: aload 7
athrow
18: StackMap locals:
StackMap stack:
aload 0
invokevirtual java.util.concurrent.ConcurrentHashMap$Segment.unlock:()V
19: aload 4
areturn
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 20 0 this Ljava/util/concurrent/ConcurrentHashMap$Segment<TK;TV;>;
0 20 1 key TK;
0 20 2 hash I
0 20 3 value TV;
3 20 4 oldValue TV;
4 14 5 e Ljava/util/concurrent/ConcurrentHashMap$HashEntry<TK;TV;>;
6 12 6 k TK;
Exception table:
from to target type
3 15 15 any
Signature: (TK;ITV;)TV;
MethodParameters:
Name Flags
key
hash
value
final void clear();
descriptor: ()V
flags: (0x0010) ACC_FINAL
Code:
stack=3, locals=4, args_size=1
start local 0 0: aload 0
invokevirtual java.util.concurrent.ConcurrentHashMap$Segment.lock:()V
1: aload 0
getfield java.util.concurrent.ConcurrentHashMap$Segment.table:[Ljava/util/concurrent/ConcurrentHashMap$HashEntry;
astore 1
start local 1 2: iconst_0
istore 2
start local 2 3: goto 6
4: StackMap locals: java.util.concurrent.ConcurrentHashMap$HashEntry[] int
StackMap stack:
aload 1
iload 2
aconst_null
invokestatic java.util.concurrent.ConcurrentHashMap.setEntryAt:([Ljava/util/concurrent/ConcurrentHashMap$HashEntry;ILjava/util/concurrent/ConcurrentHashMap$HashEntry;)V
5: iinc 2 1
StackMap locals:
StackMap stack:
6: iload 2
aload 1
arraylength
if_icmplt 4
end local 2 7: aload 0
dup
getfield java.util.concurrent.ConcurrentHashMap$Segment.modCount:I
iconst_1
iadd
putfield java.util.concurrent.ConcurrentHashMap$Segment.modCount:I
8: aload 0
iconst_0
putfield java.util.concurrent.ConcurrentHashMap$Segment.count:I
end local 1 9: goto 13
StackMap locals: java.util.concurrent.ConcurrentHashMap$Segment
StackMap stack: java.lang.Throwable
10: astore 3
11: aload 0
invokevirtual java.util.concurrent.ConcurrentHashMap$Segment.unlock:()V
12: aload 3
athrow
13: StackMap locals:
StackMap stack:
aload 0
invokevirtual java.util.concurrent.ConcurrentHashMap$Segment.unlock:()V
14: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 15 0 this Ljava/util/concurrent/ConcurrentHashMap$Segment<TK;TV;>;
2 9 1 tab [Ljava/util/concurrent/ConcurrentHashMap$HashEntry;
3 7 2 i I
Exception table:
from to target type
1 10 10 any
}
Signature: <K:Ljava/lang/Object;V:Ljava/lang/Object;>Ljava/util/concurrent/locks/ReentrantLock;Ljava/io/Serializable;
SourceFile: "ConcurrentHashMap.java"
NestHost: java.util.concurrent.ConcurrentHashMap
InnerClasses:
final HashEntry = java.util.concurrent.ConcurrentHashMap$HashEntry of java.util.concurrent.ConcurrentHashMap
final Segment = java.util.concurrent.ConcurrentHashMap$Segment of java.util.concurrent.ConcurrentHashMap