abstract class jdk.dynalink.ClassMap<T>
minor version: 0
major version: 59
flags: flags: (0x0420) ACC_SUPER, ACC_ABSTRACT
this_class: jdk.dynalink.ClassMap
super_class: java.lang.Object
{
private static final java.security.AccessControlContext GET_CLASS_LOADER_CONTEXT;
descriptor: Ljava/security/AccessControlContext;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private final java.util.concurrent.ConcurrentMap<java.lang.Class<?>, T> map;
descriptor: Ljava/util/concurrent/ConcurrentMap;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
Signature: Ljava/util/concurrent/ConcurrentMap<Ljava/lang/Class<*>;TT;>;
private final java.util.Map<java.lang.Class<?>, java.lang.ref.Reference<T>> weakMap;
descriptor: Ljava/util/Map;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
Signature: Ljava/util/Map<Ljava/lang/Class<*>;Ljava/lang/ref/Reference<TT;>;>;
private final java.lang.ClassLoader classLoader;
descriptor: Ljava/lang/ClassLoader;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
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=4, locals=0, args_size=0
0: ldc Ljdk/dynalink/ClassMap;
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 jdk.dynalink.ClassMap.$assertionsDisabled:Z
3: iconst_1
anewarray java.lang.String
dup
iconst_0
4: ldc "getClassLoader"
aastore
invokestatic jdk.dynalink.internal.AccessControlContextFactory.createAccessControlContext:([Ljava/lang/String;)Ljava/security/AccessControlContext;
putstatic jdk.dynalink.ClassMap.GET_CLASS_LOADER_CONTEXT:Ljava/security/AccessControlContext;
return
LocalVariableTable:
Start End Slot Name Signature
void <init>(java.lang.ClassLoader);
descriptor: (Ljava/lang/ClassLoader;)V
flags: (0x0000)
Code:
stack=3, locals=2, args_size=2
start local 0 start local 1 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: aload 0
new java.util.concurrent.ConcurrentHashMap
dup
invokespecial java.util.concurrent.ConcurrentHashMap.<init>:()V
putfield jdk.dynalink.ClassMap.map:Ljava/util/concurrent/ConcurrentMap;
2: aload 0
new java.util.WeakHashMap
dup
invokespecial java.util.WeakHashMap.<init>:()V
putfield jdk.dynalink.ClassMap.weakMap:Ljava/util/Map;
3: aload 0
aload 1
putfield jdk.dynalink.ClassMap.classLoader:Ljava/lang/ClassLoader;
4: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Ljdk/dynalink/ClassMap<TT;>;
0 5 1 classLoader Ljava/lang/ClassLoader;
MethodParameters:
Name Flags
classLoader final
abstract T computeValue(java.lang.Class<?>);
descriptor: (Ljava/lang/Class;)Ljava/lang/Object;
flags: (0x0400) ACC_ABSTRACT
Signature: (Ljava/lang/Class<*>;)TT;
MethodParameters:
Name Flags
clazz
T get(java.lang.Class<?>);
descriptor: (Ljava/lang/Class;)Ljava/lang/Object;
flags: (0x0000)
Code:
stack=5, locals=8, args_size=2
start local 0 start local 1 0: aload 0
getfield jdk.dynalink.ClassMap.map:Ljava/util/concurrent/ConcurrentMap;
aload 1
invokeinterface java.util.concurrent.ConcurrentMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
astore 2
start local 2 1: aload 2
ifnull 3
2: aload 2
areturn
3: StackMap locals: java.lang.Object
StackMap stack:
aload 0
getfield jdk.dynalink.ClassMap.weakMap:Ljava/util/Map;
dup
astore 4
monitorenter
4: aload 0
getfield jdk.dynalink.ClassMap.weakMap:Ljava/util/Map;
aload 1
invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast java.lang.ref.Reference
astore 3
start local 3 5: aload 4
monitorexit
6: goto 9
end local 3 StackMap locals: jdk.dynalink.ClassMap java.lang.Class java.lang.Object top java.util.Map
StackMap stack: java.lang.Throwable
7: aload 4
monitorexit
8: athrow
start local 3 9: StackMap locals: jdk.dynalink.ClassMap java.lang.Class java.lang.Object java.lang.ref.Reference
StackMap stack:
aload 3
ifnull 13
10: aload 3
invokevirtual java.lang.ref.Reference.get:()Ljava/lang/Object;
astore 4
start local 4 11: aload 4
ifnull 13
12: aload 4
areturn
end local 4 13: StackMap locals:
StackMap stack:
aload 0
aload 1
invokevirtual jdk.dynalink.ClassMap.computeValue:(Ljava/lang/Class;)Ljava/lang/Object;
astore 4
start local 4 14: getstatic jdk.dynalink.ClassMap.$assertionsDisabled:Z
ifne 15
aload 4
ifnonnull 15
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
15: StackMap locals: java.lang.Object
StackMap stack:
new jdk.dynalink.ClassMap$1
dup
aload 0
aload 1
invokespecial jdk.dynalink.ClassMap$1.<init>:(Ljdk/dynalink/ClassMap;Ljava/lang/Class;)V
16: getstatic jdk.dynalink.ClassMap.GET_CLASS_LOADER_CONTEXT:Ljava/security/AccessControlContext;
17: invokestatic java.security.AccessController.doPrivileged:(Ljava/security/PrivilegedAction;Ljava/security/AccessControlContext;)Ljava/lang/Object;
checkcast java.lang.Boolean
astore 5
start local 5 18: aload 5
invokevirtual java.lang.Boolean.booleanValue:()Z
ifeq 23
19: aload 0
getfield jdk.dynalink.ClassMap.map:Ljava/util/concurrent/ConcurrentMap;
aload 1
aload 4
invokeinterface java.util.concurrent.ConcurrentMap.putIfAbsent:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
astore 6
start local 6 20: aload 6
ifnull 21
aload 6
goto 22
StackMap locals: java.lang.Boolean java.lang.Object
StackMap stack:
21: aload 4
StackMap locals:
StackMap stack: java.lang.Object
22: areturn
end local 6 23: StackMap locals:
StackMap stack:
aload 0
getfield jdk.dynalink.ClassMap.weakMap:Ljava/util/Map;
dup
astore 6
monitorenter
24: aload 0
getfield jdk.dynalink.ClassMap.weakMap:Ljava/util/Map;
aload 1
invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast java.lang.ref.Reference
astore 3
25: aload 3
ifnull 30
26: aload 3
invokevirtual java.lang.ref.Reference.get:()Ljava/lang/Object;
astore 7
start local 7 27: aload 7
ifnull 30
28: aload 7
aload 6
monitorexit
29: areturn
end local 7 30: StackMap locals: java.util.Map
StackMap stack:
aload 0
getfield jdk.dynalink.ClassMap.weakMap:Ljava/util/Map;
aload 1
new java.lang.ref.SoftReference
dup
aload 4
invokespecial java.lang.ref.SoftReference.<init>:(Ljava/lang/Object;)V
invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
31: aload 4
aload 6
monitorexit
32: areturn
33: StackMap locals:
StackMap stack: java.lang.Throwable
aload 6
monitorexit
34: athrow
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 35 0 this Ljdk/dynalink/ClassMap<TT;>;
0 35 1 clazz Ljava/lang/Class<*>;
1 35 2 v TT;
5 7 3 ref Ljava/lang/ref/Reference<TT;>;
9 35 3 ref Ljava/lang/ref/Reference<TT;>;
11 13 4 refv TT;
14 35 4 newV TT;
18 35 5 canReferenceDirectly Ljava/lang/Boolean;
20 23 6 oldV TT;
27 30 7 oldV TT;
Exception table:
from to target type
4 6 7 any
7 8 7 any
24 29 33 any
30 32 33 any
33 34 33 any
Signature: (Ljava/lang/Class<*>;)TT;
MethodParameters:
Name Flags
clazz final
}
Signature: <T:Ljava/lang/Object;>Ljava/lang/Object;
SourceFile: "ClassMap.java"
NestMembers:
jdk.dynalink.ClassMap$1
InnerClasses:
jdk.dynalink.ClassMap$1