public class net.sf.cglib.core.internal.LoadingCache<K, KK, V>
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: net.sf.cglib.core.internal.LoadingCache
super_class: java.lang.Object
{
protected final java.util.concurrent.ConcurrentMap<KK, java.lang.Object> map;
descriptor: Ljava/util/concurrent/ConcurrentMap;
flags: (0x0014) ACC_PROTECTED, ACC_FINAL
Signature: Ljava/util/concurrent/ConcurrentMap<TKK;Ljava/lang/Object;>;
protected final net.sf.cglib.core.internal.Function<K, V> loader;
descriptor: Lnet/sf/cglib/core/internal/Function;
flags: (0x0014) ACC_PROTECTED, ACC_FINAL
Signature: Lnet/sf/cglib/core/internal/Function<TK;TV;>;
protected final net.sf.cglib.core.internal.Function<K, KK> keyMapper;
descriptor: Lnet/sf/cglib/core/internal/Function;
flags: (0x0014) ACC_PROTECTED, ACC_FINAL
Signature: Lnet/sf/cglib/core/internal/Function<TK;TKK;>;
public static final net.sf.cglib.core.internal.Function IDENTITY;
descriptor: Lnet/sf/cglib/core/internal/Function;
flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=2, locals=0, args_size=0
0: new net.sf.cglib.core.internal.LoadingCache$1
dup
invokespecial net.sf.cglib.core.internal.LoadingCache$1.<init>:()V
putstatic net.sf.cglib.core.internal.LoadingCache.IDENTITY:Lnet/sf/cglib/core/internal/Function;
1: return
LocalVariableTable:
Start End Slot Name Signature
public void <init>(net.sf.cglib.core.internal.Function<K, KK>, net.sf.cglib.core.internal.Function<K, V>);
descriptor: (Lnet/sf/cglib/core/internal/Function;Lnet/sf/cglib/core/internal/Function;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: aload 0
aload 1
putfield net.sf.cglib.core.internal.LoadingCache.keyMapper:Lnet/sf/cglib/core/internal/Function;
2: aload 0
aload 2
putfield net.sf.cglib.core.internal.LoadingCache.loader:Lnet/sf/cglib/core/internal/Function;
3: aload 0
new java.util.concurrent.ConcurrentHashMap
dup
invokespecial java.util.concurrent.ConcurrentHashMap.<init>:()V
putfield net.sf.cglib.core.internal.LoadingCache.map:Ljava/util/concurrent/ConcurrentMap;
4: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lnet/sf/cglib/core/internal/LoadingCache<TK;TKK;TV;>;
0 5 1 keyMapper Lnet/sf/cglib/core/internal/Function<TK;TKK;>;
0 5 2 loader Lnet/sf/cglib/core/internal/Function<TK;TV;>;
Signature: (Lnet/sf/cglib/core/internal/Function<TK;TKK;>;Lnet/sf/cglib/core/internal/Function<TK;TV;>;)V
MethodParameters:
Name Flags
keyMapper
loader
public static <K> net.sf.cglib.core.internal.Function<K, K> identity();
descriptor: ()Lnet/sf/cglib/core/internal/Function;
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=1, locals=0, args_size=0
0: getstatic net.sf.cglib.core.internal.LoadingCache.IDENTITY:Lnet/sf/cglib/core/internal/Function;
areturn
LocalVariableTable:
Start End Slot Name Signature
Signature: <K:Ljava/lang/Object;>()Lnet/sf/cglib/core/internal/Function<TK;TK;>;
public V get();
descriptor: (Ljava/lang/Object;)Ljava/lang/Object;
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=4, args_size=2
start local 0 start local 1 0: aload 0
getfield net.sf.cglib.core.internal.LoadingCache.keyMapper:Lnet/sf/cglib/core/internal/Function;
aload 1
invokeinterface net.sf.cglib.core.internal.Function.apply:(Ljava/lang/Object;)Ljava/lang/Object;
astore 2
start local 2 1: aload 0
getfield net.sf.cglib.core.internal.LoadingCache.map:Ljava/util/concurrent/ConcurrentMap;
aload 2
invokeinterface java.util.concurrent.ConcurrentMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
astore 3
start local 3 2: aload 3
ifnull 4
aload 3
instanceof java.util.concurrent.FutureTask
ifne 4
3: aload 3
areturn
4: StackMap locals: java.lang.Object java.lang.Object
StackMap stack:
aload 0
aload 1
aload 2
aload 3
invokevirtual net.sf.cglib.core.internal.LoadingCache.createEntry:(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
areturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lnet/sf/cglib/core/internal/LoadingCache<TK;TKK;TV;>;
0 5 1 key TK;
1 5 2 cacheKey TKK;
2 5 3 v Ljava/lang/Object;
Signature: (TK;)TV;
MethodParameters:
Name Flags
key
protected V createEntry(K, KK, );
descriptor: (Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
flags: (0x0004) ACC_PROTECTED
Code:
stack=6, locals=9, args_size=4
start local 0 start local 1 start local 2 start local 3 0: iconst_0
istore 5
start local 5 1: aload 3
ifnull 4
2: aload 3
checkcast java.util.concurrent.FutureTask
astore 4
start local 4 3: goto 14
end local 4 4: StackMap locals: net.sf.cglib.core.internal.LoadingCache java.lang.Object java.lang.Object java.lang.Object top int
StackMap stack:
new java.util.concurrent.FutureTask
dup
new net.sf.cglib.core.internal.LoadingCache$2
dup
aload 0
aload 1
invokespecial net.sf.cglib.core.internal.LoadingCache$2.<init>:(Lnet/sf/cglib/core/internal/LoadingCache;Ljava/lang/Object;)V
invokespecial java.util.concurrent.FutureTask.<init>:(Ljava/util/concurrent/Callable;)V
astore 4
start local 4 5: aload 0
getfield net.sf.cglib.core.internal.LoadingCache.map:Ljava/util/concurrent/ConcurrentMap;
aload 2
aload 4
invokeinterface java.util.concurrent.ConcurrentMap.putIfAbsent:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
astore 6
start local 6 6: aload 6
ifnonnull 10
7: iconst_1
istore 5
8: aload 4
invokevirtual java.util.concurrent.FutureTask.run:()V
9: goto 14
StackMap locals: net.sf.cglib.core.internal.LoadingCache java.lang.Object java.lang.Object java.lang.Object java.util.concurrent.FutureTask int java.lang.Object
StackMap stack:
10: aload 6
instanceof java.util.concurrent.FutureTask
ifeq 13
11: aload 6
checkcast java.util.concurrent.FutureTask
astore 4
12: goto 14
13: StackMap locals:
StackMap stack:
aload 6
areturn
end local 6 14: StackMap locals:
StackMap stack:
aload 4
invokevirtual java.util.concurrent.FutureTask.get:()Ljava/lang/Object;
astore 6
start local 6 15: goto 23
end local 6 StackMap locals:
StackMap stack: java.lang.InterruptedException
16: astore 7
start local 7 17: new java.lang.IllegalStateException
dup
ldc "Interrupted while loading cache item"
aload 7
invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
athrow
end local 7 18: StackMap locals:
StackMap stack: java.util.concurrent.ExecutionException
astore 7
start local 7 19: aload 7
invokevirtual java.util.concurrent.ExecutionException.getCause:()Ljava/lang/Throwable;
astore 8
start local 8 20: aload 8
instanceof java.lang.RuntimeException
ifeq 22
21: aload 8
checkcast java.lang.RuntimeException
athrow
22: StackMap locals: net.sf.cglib.core.internal.LoadingCache java.lang.Object java.lang.Object java.lang.Object java.util.concurrent.FutureTask int top java.util.concurrent.ExecutionException java.lang.Throwable
StackMap stack:
new java.lang.IllegalStateException
dup
ldc "Unable to load cache item"
aload 8
invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
athrow
end local 8 end local 7 start local 6 23: StackMap locals: net.sf.cglib.core.internal.LoadingCache java.lang.Object java.lang.Object java.lang.Object java.util.concurrent.FutureTask int java.lang.Object
StackMap stack:
iload 5
ifeq 25
24: aload 0
getfield net.sf.cglib.core.internal.LoadingCache.map:Ljava/util/concurrent/ConcurrentMap;
aload 2
aload 6
invokeinterface java.util.concurrent.ConcurrentMap.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
25: StackMap locals:
StackMap stack:
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 26 0 this Lnet/sf/cglib/core/internal/LoadingCache<TK;TKK;TV;>;
0 26 1 key TK;
0 26 2 cacheKey TKK;
0 26 3 v Ljava/lang/Object;
3 4 4 task Ljava/util/concurrent/FutureTask<TV;>;
5 26 4 task Ljava/util/concurrent/FutureTask<TV;>;
1 26 5 creator Z
6 14 6 prevTask Ljava/lang/Object;
15 16 6 result TV;
23 26 6 result TV;
17 18 7 e Ljava/lang/InterruptedException;
19 23 7 e Ljava/util/concurrent/ExecutionException;
20 23 8 cause Ljava/lang/Throwable;
Exception table:
from to target type
14 15 16 Class java.lang.InterruptedException
14 15 18 Class java.util.concurrent.ExecutionException
Signature: (TK;TKK;Ljava/lang/Object;)TV;
MethodParameters:
Name Flags
key final
cacheKey
v
}
Signature: <K:Ljava/lang/Object;KK:Ljava/lang/Object;V:Ljava/lang/Object;>Ljava/lang/Object;
SourceFile: "LoadingCache.java"
NestMembers:
net.sf.cglib.core.internal.LoadingCache$1 net.sf.cglib.core.internal.LoadingCache$2
InnerClasses:
net.sf.cglib.core.internal.LoadingCache$1
net.sf.cglib.core.internal.LoadingCache$2