class java.lang.ClassValue$ClassValueMap extends java.util.WeakHashMap<java.lang.ClassValue$Identity, java.lang.ClassValue$Entry<?>>
minor version: 0
major version: 59
flags: flags: (0x0020) ACC_SUPER
this_class: java.lang.ClassValue$ClassValueMap
super_class: java.util.WeakHashMap
{
private java.lang.ClassValue$Entry<?>[] cacheArray;
descriptor: [Ljava/lang/ClassValue$Entry;
flags: (0x0002) ACC_PRIVATE
Signature: [Ljava/lang/ClassValue$Entry<*>;
private int cacheLoad;
descriptor: I
flags: (0x0002) ACC_PRIVATE
private int cacheLoadLimit;
descriptor: I
flags: (0x0002) ACC_PRIVATE
private static final int INITIAL_ENTRIES;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 32
private static final int CACHE_LOAD_LIMIT;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 67
private static final int PROBE_LIMIT;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 6
static final boolean $assertionsDisabled;
descriptor: Z
flags: (0x1018) ACC_STATIC, ACC_FINAL, ACC_SYNTHETIC
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=1, locals=0, args_size=0
0: ldc Ljava/lang/ClassValue;
invokevirtual java.lang.Class.desiredAssertionStatus:()Z
ifne 1
iconst_1
goto 2
StackMap locals:
StackMap stack:
1: iconst_0
StackMap locals:
StackMap stack: int
2: putstatic java.lang.ClassValue$ClassValueMap.$assertionsDisabled:Z
3: return
LocalVariableTable:
Start End Slot Name Signature
void <init>();
descriptor: ()V
flags: (0x0000)
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
invokespecial java.util.WeakHashMap.<init>:()V
1: aload 0
bipush 32
invokevirtual java.lang.ClassValue$ClassValueMap.sizeCache:(I)V
2: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Ljava/lang/ClassValue$ClassValueMap;
java.lang.ClassValue$Entry<?>[] getCache();
descriptor: ()[Ljava/lang/ClassValue$Entry;
flags: (0x0000)
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield java.lang.ClassValue$ClassValueMap.cacheArray:[Ljava/lang/ClassValue$Entry;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Ljava/lang/ClassValue$ClassValueMap;
Signature: ()[Ljava/lang/ClassValue$Entry<*>;
synchronized <T> java.lang.ClassValue$Entry<T> startEntry(java.lang.ClassValue<T>);
descriptor: (Ljava/lang/ClassValue;)Ljava/lang/ClassValue$Entry;
flags: (0x0020) ACC_SYNCHRONIZED
Code:
stack=3, locals=4, args_size=2
start local 0 start local 1 0: aload 0
aload 1
getfield java.lang.ClassValue.identity:Ljava/lang/ClassValue$Identity;
invokevirtual java.lang.ClassValue$ClassValueMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast java.lang.ClassValue$Entry
astore 2
start local 2 1: aload 1
invokevirtual java.lang.ClassValue.version:()Ljava/lang/ClassValue$Version;
astore 3
start local 3 2: aload 2
ifnonnull 6
3: aload 3
invokevirtual java.lang.ClassValue$Version.promise:()Ljava/lang/ClassValue$Entry;
astore 2
4: aload 0
aload 1
getfield java.lang.ClassValue.identity:Ljava/lang/ClassValue$Identity;
aload 2
invokevirtual java.lang.ClassValue$ClassValueMap.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
5: aload 2
areturn
6: StackMap locals: java.lang.ClassValue$Entry java.lang.ClassValue$Version
StackMap stack:
aload 2
invokevirtual java.lang.ClassValue$Entry.isPromise:()Z
ifeq 11
7: aload 2
invokevirtual java.lang.ClassValue$Entry.version:()Ljava/lang/ClassValue$Version;
aload 3
if_acmpeq 10
8: aload 3
invokevirtual java.lang.ClassValue$Version.promise:()Ljava/lang/ClassValue$Entry;
astore 2
9: aload 0
aload 1
getfield java.lang.ClassValue.identity:Ljava/lang/ClassValue$Identity;
aload 2
invokevirtual java.lang.ClassValue$ClassValueMap.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
10: StackMap locals:
StackMap stack:
aload 2
areturn
11: StackMap locals:
StackMap stack:
aload 2
invokevirtual java.lang.ClassValue$Entry.version:()Ljava/lang/ClassValue$Version;
aload 3
if_acmpeq 14
12: aload 2
aload 3
invokevirtual java.lang.ClassValue$Entry.refreshVersion:(Ljava/lang/ClassValue$Version;)Ljava/lang/ClassValue$Entry;
astore 2
13: aload 0
aload 1
getfield java.lang.ClassValue.identity:Ljava/lang/ClassValue$Identity;
aload 2
invokevirtual java.lang.ClassValue$ClassValueMap.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
14: StackMap locals:
StackMap stack:
aload 0
invokevirtual java.lang.ClassValue$ClassValueMap.checkCacheLoad:()V
15: aload 0
aload 1
aload 2
invokevirtual java.lang.ClassValue$ClassValueMap.addToCache:(Ljava/lang/ClassValue;Ljava/lang/ClassValue$Entry;)V
16: aload 2
areturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 17 0 this Ljava/lang/ClassValue$ClassValueMap;
0 17 1 classValue Ljava/lang/ClassValue<TT;>;
1 17 2 e Ljava/lang/ClassValue$Entry<TT;>;
2 17 3 v Ljava/lang/ClassValue$Version<TT;>;
Signature: <T:Ljava/lang/Object;>(Ljava/lang/ClassValue<TT;>;)Ljava/lang/ClassValue$Entry<TT;>;
MethodParameters:
Name Flags
classValue
synchronized <T> java.lang.ClassValue$Entry<T> finishEntry(java.lang.ClassValue<T>, java.lang.ClassValue$Entry<T>);
descriptor: (Ljava/lang/ClassValue;Ljava/lang/ClassValue$Entry;)Ljava/lang/ClassValue$Entry;
flags: (0x0020) ACC_SYNCHRONIZED
Code:
stack=3, locals=5, args_size=3
start local 0 start local 1 start local 2 0: aload 0
aload 1
getfield java.lang.ClassValue.identity:Ljava/lang/ClassValue$Identity;
invokevirtual java.lang.ClassValue$ClassValueMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast java.lang.ClassValue$Entry
astore 3
start local 3 1: aload 2
aload 3
if_acmpne 5
2: getstatic java.lang.ClassValue$ClassValueMap.$assertionsDisabled:Z
ifne 3
aload 2
invokevirtual java.lang.ClassValue$Entry.isPromise:()Z
ifne 3
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
3: StackMap locals: java.lang.ClassValue$Entry
StackMap stack:
aload 0
aload 1
getfield java.lang.ClassValue.identity:Ljava/lang/ClassValue$Identity;
invokevirtual java.lang.ClassValue$ClassValueMap.remove:(Ljava/lang/Object;)Ljava/lang/Object;
pop
4: aconst_null
areturn
5: StackMap locals:
StackMap stack:
aload 3
ifnull 13
aload 3
invokevirtual java.lang.ClassValue$Entry.isPromise:()Z
ifeq 13
aload 3
invokevirtual java.lang.ClassValue$Entry.version:()Ljava/lang/ClassValue$Version;
aload 2
invokevirtual java.lang.ClassValue$Entry.version:()Ljava/lang/ClassValue$Version;
if_acmpne 13
6: aload 1
invokevirtual java.lang.ClassValue.version:()Ljava/lang/ClassValue$Version;
astore 4
start local 4 7: aload 2
invokevirtual java.lang.ClassValue$Entry.version:()Ljava/lang/ClassValue$Version;
aload 4
if_acmpeq 9
8: aload 2
aload 4
invokevirtual java.lang.ClassValue$Entry.refreshVersion:(Ljava/lang/ClassValue$Version;)Ljava/lang/ClassValue$Entry;
astore 2
9: StackMap locals: java.lang.ClassValue$Version
StackMap stack:
aload 0
aload 1
getfield java.lang.ClassValue.identity:Ljava/lang/ClassValue$Identity;
aload 2
invokevirtual java.lang.ClassValue$ClassValueMap.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
10: aload 0
invokevirtual java.lang.ClassValue$ClassValueMap.checkCacheLoad:()V
11: aload 0
aload 1
aload 2
invokevirtual java.lang.ClassValue$ClassValueMap.addToCache:(Ljava/lang/ClassValue;Ljava/lang/ClassValue$Entry;)V
12: aload 2
areturn
end local 4 13: StackMap locals:
StackMap stack:
aconst_null
areturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 14 0 this Ljava/lang/ClassValue$ClassValueMap;
0 14 1 classValue Ljava/lang/ClassValue<TT;>;
0 14 2 e Ljava/lang/ClassValue$Entry<TT;>;
1 14 3 e0 Ljava/lang/ClassValue$Entry<TT;>;
7 13 4 v Ljava/lang/ClassValue$Version<TT;>;
Signature: <T:Ljava/lang/Object;>(Ljava/lang/ClassValue<TT;>;Ljava/lang/ClassValue$Entry<TT;>;)Ljava/lang/ClassValue$Entry<TT;>;
MethodParameters:
Name Flags
classValue
e
synchronized void removeEntry(java.lang.ClassValue<?>);
descriptor: (Ljava/lang/ClassValue;)V
flags: (0x0020) ACC_SYNCHRONIZED
Code:
stack=3, locals=3, args_size=2
start local 0 start local 1 0: aload 0
aload 1
getfield java.lang.ClassValue.identity:Ljava/lang/ClassValue$Identity;
invokevirtual java.lang.ClassValue$ClassValueMap.remove:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast java.lang.ClassValue$Entry
astore 2
start local 2 1: aload 2
ifnull 7
2: aload 2
invokevirtual java.lang.ClassValue$Entry.isPromise:()Z
ifeq 5
3: aload 0
aload 1
getfield java.lang.ClassValue.identity:Ljava/lang/ClassValue$Identity;
aload 2
invokevirtual java.lang.ClassValue$ClassValueMap.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
4: goto 7
5: StackMap locals: java.lang.ClassValue$Entry
StackMap stack:
aload 1
invokevirtual java.lang.ClassValue.bumpVersion:()V
6: aload 0
aload 1
invokevirtual java.lang.ClassValue$ClassValueMap.removeStaleEntries:(Ljava/lang/ClassValue;)V
7: StackMap locals:
StackMap stack:
return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 this Ljava/lang/ClassValue$ClassValueMap;
0 8 1 classValue Ljava/lang/ClassValue<*>;
1 8 2 e Ljava/lang/ClassValue$Entry<*>;
Signature: (Ljava/lang/ClassValue<*>;)V
MethodParameters:
Name Flags
classValue
synchronized <T> void changeEntry(java.lang.ClassValue<T>, );
descriptor: (Ljava/lang/ClassValue;Ljava/lang/Object;)V
flags: (0x0020) ACC_SYNCHRONIZED
Code:
stack=3, locals=6, args_size=3
start local 0 start local 1 start local 2 0: aload 0
aload 1
getfield java.lang.ClassValue.identity:Ljava/lang/ClassValue$Identity;
invokevirtual java.lang.ClassValue$ClassValueMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast java.lang.ClassValue$Entry
astore 3
start local 3 1: aload 1
invokevirtual java.lang.ClassValue.version:()Ljava/lang/ClassValue$Version;
astore 4
start local 4 2: aload 3
ifnull 7
3: aload 3
invokevirtual java.lang.ClassValue$Entry.version:()Ljava/lang/ClassValue$Version;
aload 4
if_acmpne 5
aload 3
invokevirtual java.lang.ClassValue$Entry.value:()Ljava/lang/Object;
aload 2
if_acmpne 5
4: return
5: StackMap locals: java.lang.ClassValue$Entry java.lang.ClassValue$Version
StackMap stack:
aload 1
invokevirtual java.lang.ClassValue.bumpVersion:()V
6: aload 0
aload 1
invokevirtual java.lang.ClassValue$ClassValueMap.removeStaleEntries:(Ljava/lang/ClassValue;)V
7: StackMap locals:
StackMap stack:
aload 4
aload 2
invokestatic java.lang.ClassValue.makeEntry:(Ljava/lang/ClassValue$Version;Ljava/lang/Object;)Ljava/lang/ClassValue$Entry;
astore 5
start local 5 8: aload 0
aload 1
getfield java.lang.ClassValue.identity:Ljava/lang/ClassValue$Identity;
aload 5
invokevirtual java.lang.ClassValue$ClassValueMap.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
9: aload 0
invokevirtual java.lang.ClassValue$ClassValueMap.checkCacheLoad:()V
10: aload 0
aload 1
aload 5
invokevirtual java.lang.ClassValue$ClassValueMap.addToCache:(Ljava/lang/ClassValue;Ljava/lang/ClassValue$Entry;)V
11: 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 12 0 this Ljava/lang/ClassValue$ClassValueMap;
0 12 1 classValue Ljava/lang/ClassValue<TT;>;
0 12 2 value TT;
1 12 3 e0 Ljava/lang/ClassValue$Entry<TT;>;
2 12 4 version Ljava/lang/ClassValue$Version<TT;>;
8 12 5 e Ljava/lang/ClassValue$Entry<TT;>;
Signature: <T:Ljava/lang/Object;>(Ljava/lang/ClassValue<TT;>;TT;)V
MethodParameters:
Name Flags
classValue
value
static java.lang.ClassValue$Entry<?> loadFromCache(java.lang.ClassValue$Entry<?>[], int);
descriptor: ([Ljava/lang/ClassValue$Entry;I)Ljava/lang/ClassValue$Entry;
flags: (0x0008) ACC_STATIC
Code:
stack=4, locals=2, args_size=2
start local 0 start local 1 0: aload 0
iload 1
aload 0
arraylength
iconst_1
isub
iand
aaload
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 cache [Ljava/lang/ClassValue$Entry;
0 1 1 i I
Signature: ([Ljava/lang/ClassValue$Entry<*>;I)Ljava/lang/ClassValue$Entry<*>;
MethodParameters:
Name Flags
cache
i
static <T> java.lang.ClassValue$Entry<T> probeHomeLocation(java.lang.ClassValue$Entry<?>[], java.lang.ClassValue<T>);
descriptor: ([Ljava/lang/ClassValue$Entry;Ljava/lang/ClassValue;)Ljava/lang/ClassValue$Entry;
flags: (0x0008) ACC_STATIC
Code:
stack=3, locals=2, args_size=2
start local 0 start local 1 0: aload 1
aload 0
aload 1
getfield java.lang.ClassValue.hashCodeForCache:I
invokestatic java.lang.ClassValue$ClassValueMap.loadFromCache:([Ljava/lang/ClassValue$Entry;I)Ljava/lang/ClassValue$Entry;
invokevirtual java.lang.ClassValue.castEntry:(Ljava/lang/ClassValue$Entry;)Ljava/lang/ClassValue$Entry;
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 cache [Ljava/lang/ClassValue$Entry;
0 1 1 classValue Ljava/lang/ClassValue<TT;>;
Signature: <T:Ljava/lang/Object;>([Ljava/lang/ClassValue$Entry<*>;Ljava/lang/ClassValue<TT;>;)Ljava/lang/ClassValue$Entry<TT;>;
MethodParameters:
Name Flags
cache
classValue
static <T> java.lang.ClassValue$Entry<T> probeBackupLocations(java.lang.ClassValue$Entry<?>[], java.lang.ClassValue<T>);
descriptor: ([Ljava/lang/ClassValue$Entry;Ljava/lang/ClassValue;)Ljava/lang/ClassValue$Entry;
flags: (0x0008) ACC_STATIC
Code:
stack=5, locals=8, args_size=2
start local 0 start local 1 0: aload 0
arraylength
iconst_1
isub
istore 2
start local 2 1: aload 1
getfield java.lang.ClassValue.hashCodeForCache:I
iload 2
iand
istore 3
start local 3 2: aload 0
iload 3
aaload
astore 4
start local 4 3: aload 4
ifnonnull 5
4: aconst_null
areturn
5: StackMap locals: int int java.lang.ClassValue$Entry
StackMap stack:
iconst_m1
istore 5
start local 5 6: iload 3
iconst_1
iadd
istore 6
start local 6 7: goto 24
8: StackMap locals: int int
StackMap stack:
aload 0
iload 6
iload 2
iand
aaload
astore 7
start local 7 9: aload 7
ifnonnull 11
10: goto 25
11: StackMap locals: java.lang.ClassValue$Entry
StackMap stack:
aload 1
aload 7
invokevirtual java.lang.ClassValue.match:(Ljava/lang/ClassValue$Entry;)Z
ifeq 22
12: aload 0
iload 3
aload 7
aastore
13: iload 5
iflt 16
14: aload 0
iload 6
iload 2
iand
getstatic java.lang.ClassValue$Entry.DEAD_ENTRY:Ljava/lang/ClassValue$Entry;
aastore
15: goto 17
16: StackMap locals:
StackMap stack:
iload 6
istore 5
17: StackMap locals:
StackMap stack:
aload 0
iload 5
iload 2
iand
aload 0
iload 5
aload 4
invokestatic java.lang.ClassValue$ClassValueMap.entryDislocation:([Ljava/lang/ClassValue$Entry;ILjava/lang/ClassValue$Entry;)I
bipush 6
if_icmpge 19
18: aload 4
goto 20
19: StackMap locals: java.lang.ClassValue$Entry[] java.lang.ClassValue int int java.lang.ClassValue$Entry int int java.lang.ClassValue$Entry
StackMap stack: java.lang.ClassValue$Entry[] int
getstatic java.lang.ClassValue$Entry.DEAD_ENTRY:Ljava/lang/ClassValue$Entry;
20: StackMap locals: java.lang.ClassValue$Entry[] java.lang.ClassValue int int java.lang.ClassValue$Entry int int java.lang.ClassValue$Entry
StackMap stack: java.lang.ClassValue$Entry[] int java.lang.ClassValue$Entry
aastore
21: aload 1
aload 7
invokevirtual java.lang.ClassValue.castEntry:(Ljava/lang/ClassValue$Entry;)Ljava/lang/ClassValue$Entry;
areturn
22: StackMap locals:
StackMap stack:
aload 7
invokevirtual java.lang.ClassValue$Entry.isLive:()Z
ifne 23
iload 5
ifge 23
iload 6
istore 5
end local 7 23: StackMap locals:
StackMap stack:
iinc 6 1
StackMap locals:
StackMap stack:
24: iload 6
iload 3
bipush 6
iadd
if_icmplt 8
end local 6 25: StackMap locals:
StackMap stack:
aconst_null
areturn
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 26 0 cache [Ljava/lang/ClassValue$Entry;
0 26 1 classValue Ljava/lang/ClassValue<TT;>;
1 26 2 mask I
2 26 3 home I
3 26 4 e2 Ljava/lang/ClassValue$Entry<*>;
6 26 5 pos2 I
7 25 6 i I
9 23 7 e Ljava/lang/ClassValue$Entry<*>;
Signature: <T:Ljava/lang/Object;>([Ljava/lang/ClassValue$Entry<*>;Ljava/lang/ClassValue<TT;>;)Ljava/lang/ClassValue$Entry<TT;>;
MethodParameters:
Name Flags
cache
classValue
private static int entryDislocation(java.lang.ClassValue$Entry<?>[], int, java.lang.ClassValue$Entry<?>);
descriptor: ([Ljava/lang/ClassValue$Entry;ILjava/lang/ClassValue$Entry;)I
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=2, locals=5, args_size=3
start local 0 start local 1 start local 2 0: aload 2
invokevirtual java.lang.ClassValue$Entry.classValueOrNull:()Ljava/lang/ClassValue;
astore 3
start local 3 1: aload 3
ifnonnull 2
iconst_0
ireturn
2: StackMap locals: java.lang.ClassValue
StackMap stack:
aload 0
arraylength
iconst_1
isub
istore 4
start local 4 3: iload 1
aload 3
getfield java.lang.ClassValue.hashCodeForCache:I
isub
iload 4
iand
ireturn
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 cache [Ljava/lang/ClassValue$Entry;
0 4 1 pos I
0 4 2 e Ljava/lang/ClassValue$Entry<*>;
1 4 3 cv Ljava/lang/ClassValue<*>;
3 4 4 mask I
Signature: ([Ljava/lang/ClassValue$Entry<*>;ILjava/lang/ClassValue$Entry<*>;)I
MethodParameters:
Name Flags
cache
pos
e
private void sizeCache(int);
descriptor: (I)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=2, args_size=2
start local 0 start local 1 0: getstatic java.lang.ClassValue$ClassValueMap.$assertionsDisabled:Z
ifne 1
iload 1
iload 1
iconst_1
isub
iand
ifeq 1
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
1: StackMap locals:
StackMap stack:
aload 0
iconst_0
putfield java.lang.ClassValue$ClassValueMap.cacheLoad:I
2: aload 0
iload 1
i2d
ldc 67.0
dmul
ldc 100.0
ddiv
d2i
putfield java.lang.ClassValue$ClassValueMap.cacheLoadLimit:I
3: aload 0
iload 1
anewarray java.lang.ClassValue$Entry
putfield java.lang.ClassValue$ClassValueMap.cacheArray:[Ljava/lang/ClassValue$Entry;
4: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Ljava/lang/ClassValue$ClassValueMap;
0 5 1 length I
MethodParameters:
Name Flags
length
private void checkCacheLoad();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
getfield java.lang.ClassValue$ClassValueMap.cacheLoad:I
aload 0
getfield java.lang.ClassValue$ClassValueMap.cacheLoadLimit:I
if_icmplt 2
1: aload 0
invokevirtual java.lang.ClassValue$ClassValueMap.reduceCacheLoad:()V
2: StackMap locals:
StackMap stack:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Ljava/lang/ClassValue$ClassValueMap;
private void reduceCacheLoad();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=6, args_size=1
start local 0 0: aload 0
invokevirtual java.lang.ClassValue$ClassValueMap.removeStaleEntries:()V
1: aload 0
getfield java.lang.ClassValue$ClassValueMap.cacheLoad:I
aload 0
getfield java.lang.ClassValue$ClassValueMap.cacheLoadLimit:I
if_icmpge 3
2: return
3: StackMap locals:
StackMap stack:
aload 0
invokevirtual java.lang.ClassValue$ClassValueMap.getCache:()[Ljava/lang/ClassValue$Entry;
astore 1
start local 1 4: aload 1
arraylength
ldc 1073741823
if_icmple 6
5: return
6: StackMap locals: java.lang.ClassValue$Entry[]
StackMap stack:
aload 0
aload 1
arraylength
iconst_2
imul
invokevirtual java.lang.ClassValue$ClassValueMap.sizeCache:(I)V
7: aload 1
dup
astore 5
arraylength
istore 4
iconst_0
istore 3
goto 12
StackMap locals: java.lang.ClassValue$ClassValueMap java.lang.ClassValue$Entry[] top int int java.lang.ClassValue$Entry[]
StackMap stack:
8: aload 5
iload 3
aaload
astore 2
start local 2 9: aload 2
ifnull 11
aload 2
invokevirtual java.lang.ClassValue$Entry.isLive:()Z
ifeq 11
10: aload 0
aload 2
invokevirtual java.lang.ClassValue$ClassValueMap.addToCache:(Ljava/lang/ClassValue$Entry;)V
end local 2 11: StackMap locals:
StackMap stack:
iinc 3 1
StackMap locals:
StackMap stack:
12: iload 3
iload 4
if_icmplt 8
13: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 14 0 this Ljava/lang/ClassValue$ClassValueMap;
4 14 1 oldCache [Ljava/lang/ClassValue$Entry;
9 11 2 e Ljava/lang/ClassValue$Entry<*>;
private void removeStaleEntries(java.lang.ClassValue$Entry<?>[], int, );
descriptor: ([Ljava/lang/ClassValue$Entry;II)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=9, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 1
arraylength
iconst_1
isub
istore 4
start local 4 1: iconst_0
istore 5
start local 5 2: iload 2
istore 6
start local 6 3: goto 12
4: StackMap locals: int int int
StackMap stack:
aload 1
iload 6
iload 4
iand
aaload
astore 7
start local 7 5: aload 7
ifnull 11
aload 7
invokevirtual java.lang.ClassValue$Entry.isLive:()Z
ifeq 7
6: goto 11
7: StackMap locals: java.lang.ClassValue$Entry
StackMap stack:
aconst_null
astore 8
start local 8 8: aload 0
aload 1
iload 6
invokevirtual java.lang.ClassValue$ClassValueMap.findReplacement:([Ljava/lang/ClassValue$Entry;I)Ljava/lang/ClassValue$Entry;
astore 8
9: aload 1
iload 6
iload 4
iand
aload 8
aastore
10: aload 8
ifnonnull 11
iinc 5 1
end local 8 end local 7 11: StackMap locals:
StackMap stack:
iinc 6 1
StackMap locals:
StackMap stack:
12: iload 6
iload 2
iload 3
iadd
if_icmplt 4
end local 6 13: aload 0
iconst_0
aload 0
getfield java.lang.ClassValue$ClassValueMap.cacheLoad:I
iload 5
isub
invokestatic java.lang.Math.max:(II)I
putfield java.lang.ClassValue$ClassValueMap.cacheLoad:I
14: 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 15 0 this Ljava/lang/ClassValue$ClassValueMap;
0 15 1 cache [Ljava/lang/ClassValue$Entry;
0 15 2 begin I
0 15 3 count I
1 15 4 mask I
2 15 5 removed I
3 13 6 i I
5 11 7 e Ljava/lang/ClassValue$Entry<*>;
8 11 8 replacement Ljava/lang/ClassValue$Entry<*>;
Signature: ([Ljava/lang/ClassValue$Entry<*>;II)V
MethodParameters:
Name Flags
cache
begin
count
private java.lang.ClassValue$Entry<?> findReplacement(java.lang.ClassValue$Entry<?>[], int);
descriptor: ([Ljava/lang/ClassValue$Entry;I)Ljava/lang/ClassValue$Entry;
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=11, args_size=3
start local 0 start local 1 start local 2 0: aconst_null
astore 3
start local 3 1: iconst_m1
istore 4
start local 4 2: iconst_0
istore 5
start local 5 3: aload 1
arraylength
iconst_1
isub
istore 6
start local 6 4: iload 2
iconst_1
iadd
istore 7
start local 7 5: goto 23
6: StackMap locals: java.lang.ClassValue$ClassValueMap java.lang.ClassValue$Entry[] int java.lang.ClassValue$Entry int int int int
StackMap stack:
aload 1
iload 7
iload 6
iand
aaload
astore 8
start local 8 7: aload 8
ifnonnull 8
goto 24
8: StackMap locals: java.lang.ClassValue$Entry
StackMap stack:
aload 8
invokevirtual java.lang.ClassValue$Entry.isLive:()Z
ifne 9
goto 22
9: StackMap locals:
StackMap stack:
aload 1
iload 7
aload 8
invokestatic java.lang.ClassValue$ClassValueMap.entryDislocation:([Ljava/lang/ClassValue$Entry;ILjava/lang/ClassValue$Entry;)I
istore 9
start local 9 10: iload 9
ifne 11
goto 22
11: StackMap locals: int
StackMap stack:
iload 7
iload 9
isub
istore 10
start local 10 12: iload 10
iload 2
if_icmpgt 22
13: iload 10
iload 2
if_icmpne 18
14: iconst_1
istore 4
15: iload 7
istore 5
16: aload 8
astore 3
17: goto 22
StackMap locals: int
StackMap stack:
18: iload 4
ifgt 22
19: iconst_0
istore 4
20: iload 7
istore 5
21: aload 8
astore 3
end local 10 end local 9 end local 8 22: StackMap locals:
StackMap stack:
iinc 7 1
StackMap locals:
StackMap stack:
23: iload 7
iload 2
bipush 6
iadd
if_icmplt 6
end local 7 24: StackMap locals:
StackMap stack:
iload 4
iflt 30
25: aload 1
iload 5
iconst_1
iadd
iload 6
iand
aaload
ifnull 28
26: aload 1
iload 5
iload 6
iand
getstatic java.lang.ClassValue$Entry.DEAD_ENTRY:Ljava/lang/ClassValue$Entry;
aastore
27: goto 30
28: StackMap locals:
StackMap stack:
aload 1
iload 5
iload 6
iand
aconst_null
aastore
29: aload 0
dup
getfield java.lang.ClassValue$ClassValueMap.cacheLoad:I
iconst_1
isub
putfield java.lang.ClassValue$ClassValueMap.cacheLoad:I
30: StackMap locals:
StackMap stack:
aload 3
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 31 0 this Ljava/lang/ClassValue$ClassValueMap;
0 31 1 cache [Ljava/lang/ClassValue$Entry;
0 31 2 home1 I
1 31 3 replacement Ljava/lang/ClassValue$Entry<*>;
2 31 4 haveReplacement I
3 31 5 replacementPos I
4 31 6 mask I
5 24 7 i2 I
7 22 8 e2 Ljava/lang/ClassValue$Entry<*>;
10 22 9 dis2 I
12 22 10 home2 I
Signature: ([Ljava/lang/ClassValue$Entry<*>;I)Ljava/lang/ClassValue$Entry<*>;
MethodParameters:
Name Flags
cache
home1
private void removeStaleEntries(java.lang.ClassValue<?>);
descriptor: (Ljava/lang/ClassValue;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=2, args_size=2
start local 0 start local 1 0: aload 0
aload 0
invokevirtual java.lang.ClassValue$ClassValueMap.getCache:()[Ljava/lang/ClassValue$Entry;
aload 1
getfield java.lang.ClassValue.hashCodeForCache:I
bipush 6
invokevirtual java.lang.ClassValue$ClassValueMap.removeStaleEntries:([Ljava/lang/ClassValue$Entry;II)V
1: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Ljava/lang/ClassValue$ClassValueMap;
0 2 1 classValue Ljava/lang/ClassValue<*>;
Signature: (Ljava/lang/ClassValue<*>;)V
MethodParameters:
Name Flags
classValue
private void removeStaleEntries();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=2, args_size=1
start local 0 0: aload 0
invokevirtual java.lang.ClassValue$ClassValueMap.getCache:()[Ljava/lang/ClassValue$Entry;
astore 1
start local 1 1: aload 0
aload 1
iconst_0
aload 1
arraylength
bipush 6
iadd
iconst_1
isub
invokevirtual java.lang.ClassValue$ClassValueMap.removeStaleEntries:([Ljava/lang/ClassValue$Entry;II)V
2: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Ljava/lang/ClassValue$ClassValueMap;
1 3 1 cache [Ljava/lang/ClassValue$Entry;
private <T> void addToCache(java.lang.ClassValue$Entry<T>);
descriptor: (Ljava/lang/ClassValue$Entry;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=3, args_size=2
start local 0 start local 1 0: aload 1
invokevirtual java.lang.ClassValue$Entry.classValueOrNull:()Ljava/lang/ClassValue;
astore 2
start local 2 1: aload 2
ifnull 3
2: aload 0
aload 2
aload 1
invokevirtual java.lang.ClassValue$ClassValueMap.addToCache:(Ljava/lang/ClassValue;Ljava/lang/ClassValue$Entry;)V
3: StackMap locals: java.lang.ClassValue
StackMap stack:
return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Ljava/lang/ClassValue$ClassValueMap;
0 4 1 e Ljava/lang/ClassValue$Entry<TT;>;
1 4 2 classValue Ljava/lang/ClassValue<TT;>;
Signature: <T:Ljava/lang/Object;>(Ljava/lang/ClassValue$Entry<TT;>;)V
MethodParameters:
Name Flags
e
private <T> void addToCache(java.lang.ClassValue<T>, java.lang.ClassValue$Entry<T>);
descriptor: (Ljava/lang/ClassValue;Ljava/lang/ClassValue$Entry;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=10, args_size=3
start local 0 start local 1 start local 2 0: aload 0
invokevirtual java.lang.ClassValue$ClassValueMap.getCache:()[Ljava/lang/ClassValue$Entry;
astore 3
start local 3 1: aload 3
arraylength
iconst_1
isub
istore 4
start local 4 2: aload 1
getfield java.lang.ClassValue.hashCodeForCache:I
iload 4
iand
istore 5
start local 5 3: aload 0
aload 3
iload 5
aload 2
iconst_0
invokevirtual java.lang.ClassValue$ClassValueMap.placeInCache:([Ljava/lang/ClassValue$Entry;ILjava/lang/ClassValue$Entry;Z)Ljava/lang/ClassValue$Entry;
astore 6
start local 6 4: aload 6
ifnonnull 5
return
5: StackMap locals: java.lang.ClassValue$ClassValueMap java.lang.ClassValue java.lang.ClassValue$Entry java.lang.ClassValue$Entry[] int int java.lang.ClassValue$Entry
StackMap stack:
aload 3
iload 5
aload 6
invokestatic java.lang.ClassValue$ClassValueMap.entryDislocation:([Ljava/lang/ClassValue$Entry;ILjava/lang/ClassValue$Entry;)I
istore 7
start local 7 6: iload 5
iload 7
isub
istore 8
start local 8 7: iload 8
istore 9
start local 9 8: goto 12
9: StackMap locals: int int int
StackMap stack:
aload 0
aload 3
iload 9
iload 4
iand
aload 6
iconst_1
invokevirtual java.lang.ClassValue$ClassValueMap.placeInCache:([Ljava/lang/ClassValue$Entry;ILjava/lang/ClassValue$Entry;Z)Ljava/lang/ClassValue$Entry;
ifnonnull 11
10: return
11: StackMap locals:
StackMap stack:
iinc 9 1
StackMap locals:
StackMap stack:
12: iload 9
iload 8
bipush 6
iadd
if_icmplt 9
end local 9 end local 8 end local 7 13: return
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 14 0 this Ljava/lang/ClassValue$ClassValueMap;
0 14 1 classValue Ljava/lang/ClassValue<TT;>;
0 14 2 e Ljava/lang/ClassValue$Entry<TT;>;
1 14 3 cache [Ljava/lang/ClassValue$Entry;
2 14 4 mask I
3 14 5 home I
4 14 6 e2 Ljava/lang/ClassValue$Entry<*>;
6 13 7 dis2 I
7 13 8 home2 I
8 13 9 i2 I
Signature: <T:Ljava/lang/Object;>(Ljava/lang/ClassValue<TT;>;Ljava/lang/ClassValue$Entry<TT;>;)V
MethodParameters:
Name Flags
classValue
e
private java.lang.ClassValue$Entry<?> placeInCache(java.lang.ClassValue$Entry<?>[], int, java.lang.ClassValue$Entry<?>, boolean);
descriptor: ([Ljava/lang/ClassValue$Entry;ILjava/lang/ClassValue$Entry;Z)Ljava/lang/ClassValue$Entry;
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=6, args_size=5
start local 0 start local 1 start local 2 start local 3 start local 4 0: aload 0
aload 1
iload 2
aaload
invokevirtual java.lang.ClassValue$ClassValueMap.overwrittenEntry:(Ljava/lang/ClassValue$Entry;)Ljava/lang/ClassValue$Entry;
astore 5
start local 5 1: iload 4
ifeq 3
aload 5
ifnull 3
2: aload 3
areturn
3: StackMap locals: java.lang.ClassValue$Entry
StackMap stack:
aload 1
iload 2
aload 3
aastore
4: aload 5
areturn
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 5 0 this Ljava/lang/ClassValue$ClassValueMap;
0 5 1 cache [Ljava/lang/ClassValue$Entry;
0 5 2 pos I
0 5 3 e Ljava/lang/ClassValue$Entry<*>;
0 5 4 gently Z
1 5 5 e2 Ljava/lang/ClassValue$Entry<*>;
Signature: ([Ljava/lang/ClassValue$Entry<*>;ILjava/lang/ClassValue$Entry<*>;Z)Ljava/lang/ClassValue$Entry<*>;
MethodParameters:
Name Flags
cache
pos
e
gently
private <T> java.lang.ClassValue$Entry<T> overwrittenEntry(java.lang.ClassValue$Entry<T>);
descriptor: (Ljava/lang/ClassValue$Entry;)Ljava/lang/ClassValue$Entry;
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=2, args_size=2
start local 0 start local 1 0: aload 1
ifnonnull 1
aload 0
dup
getfield java.lang.ClassValue$ClassValueMap.cacheLoad:I
iconst_1
iadd
putfield java.lang.ClassValue$ClassValueMap.cacheLoad:I
goto 2
1: StackMap locals:
StackMap stack:
aload 1
invokevirtual java.lang.ClassValue$Entry.isLive:()Z
ifeq 2
aload 1
areturn
2: StackMap locals:
StackMap stack:
aconst_null
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Ljava/lang/ClassValue$ClassValueMap;
0 3 1 e2 Ljava/lang/ClassValue$Entry<TT;>;
Signature: <T:Ljava/lang/Object;>(Ljava/lang/ClassValue$Entry<TT;>;)Ljava/lang/ClassValue$Entry<TT;>;
MethodParameters:
Name Flags
e2
}
Signature: Ljava/util/WeakHashMap<Ljava/lang/ClassValue$Identity;Ljava/lang/ClassValue$Entry<*>;>;
SourceFile: "ClassValue.java"
NestHost: java.lang.ClassValue
InnerClasses:
ClassValueMap = java.lang.ClassValue$ClassValueMap of java.lang.ClassValue
Entry = java.lang.ClassValue$Entry of java.lang.ClassValue
Identity = java.lang.ClassValue$Identity of java.lang.ClassValue
Version = java.lang.ClassValue$Version of java.lang.ClassValue