public class org.springframework.util.ConcurrentLruCache<K, V>
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: org.springframework.util.ConcurrentLruCache
super_class: java.lang.Object
{
private final int sizeLimit;
descriptor: I
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final java.util.function.Function<K, V> generator;
descriptor: Ljava/util/function/Function;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
Signature: Ljava/util/function/Function<TK;TV;>;
private final java.util.concurrent.ConcurrentHashMap<K, V> cache;
descriptor: Ljava/util/concurrent/ConcurrentHashMap;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
Signature: Ljava/util/concurrent/ConcurrentHashMap<TK;TV;>;
private final java.util.concurrent.ConcurrentLinkedDeque<K> queue;
descriptor: Ljava/util/concurrent/ConcurrentLinkedDeque;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
Signature: Ljava/util/concurrent/ConcurrentLinkedDeque<TK;>;
private final java.util.concurrent.locks.ReadWriteLock lock;
descriptor: Ljava/util/concurrent/locks/ReadWriteLock;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private volatile int size;
descriptor: I
flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE
public void <init>(int, java.util.function.Function<K, V>);
descriptor: (ILjava/util/function/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
new java.util.concurrent.ConcurrentHashMap
dup
invokespecial java.util.concurrent.ConcurrentHashMap.<init>:()V
putfield org.springframework.util.ConcurrentLruCache.cache:Ljava/util/concurrent/ConcurrentHashMap;
2: aload 0
new java.util.concurrent.ConcurrentLinkedDeque
dup
invokespecial java.util.concurrent.ConcurrentLinkedDeque.<init>:()V
putfield org.springframework.util.ConcurrentLruCache.queue:Ljava/util/concurrent/ConcurrentLinkedDeque;
3: aload 0
new java.util.concurrent.locks.ReentrantReadWriteLock
dup
invokespecial java.util.concurrent.locks.ReentrantReadWriteLock.<init>:()V
putfield org.springframework.util.ConcurrentLruCache.lock:Ljava/util/concurrent/locks/ReadWriteLock;
4: iload 1
iflt 5
iconst_1
goto 6
StackMap locals: org.springframework.util.ConcurrentLruCache int java.util.function.Function
StackMap stack:
5: iconst_0
StackMap locals:
StackMap stack: int
6: ldc "Cache size limit must not be negative"
invokestatic org.springframework.util.Assert.isTrue:(ZLjava/lang/String;)V
7: aload 2
ldc "Generator function must not be null"
invokestatic org.springframework.util.Assert.notNull:(Ljava/lang/Object;Ljava/lang/String;)V
8: aload 0
iload 1
putfield org.springframework.util.ConcurrentLruCache.sizeLimit:I
9: aload 0
aload 2
putfield org.springframework.util.ConcurrentLruCache.generator:Ljava/util/function/Function;
10: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 11 0 this Lorg/springframework/util/ConcurrentLruCache<TK;TV;>;
0 11 1 sizeLimit I
0 11 2 generator Ljava/util/function/Function<TK;TV;>;
Signature: (ILjava/util/function/Function<TK;TV;>;)V
MethodParameters:
Name Flags
sizeLimit
generator
public V get();
descriptor: (Ljava/lang/Object;)Ljava/lang/Object;
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=7, args_size=2
start local 0 start local 1 0: aload 0
getfield org.springframework.util.ConcurrentLruCache.sizeLimit:I
ifne 2
1: aload 0
getfield org.springframework.util.ConcurrentLruCache.generator:Ljava/util/function/Function;
aload 1
invokeinterface java.util.function.Function.apply:(Ljava/lang/Object;)Ljava/lang/Object;
areturn
2: StackMap locals:
StackMap stack:
aload 0
getfield org.springframework.util.ConcurrentLruCache.cache:Ljava/util/concurrent/ConcurrentHashMap;
aload 1
invokevirtual java.util.concurrent.ConcurrentHashMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
astore 2
start local 2 3: aload 2
ifnull 15
4: aload 0
getfield org.springframework.util.ConcurrentLruCache.size:I
aload 0
getfield org.springframework.util.ConcurrentLruCache.sizeLimit:I
if_icmpge 6
5: aload 2
areturn
6: StackMap locals: java.lang.Object
StackMap stack:
aload 0
getfield org.springframework.util.ConcurrentLruCache.lock:Ljava/util/concurrent/locks/ReadWriteLock;
invokeinterface java.util.concurrent.locks.ReadWriteLock.readLock:()Ljava/util/concurrent/locks/Lock;
invokeinterface java.util.concurrent.locks.Lock.lock:()V
7: aload 0
getfield org.springframework.util.ConcurrentLruCache.queue:Ljava/util/concurrent/ConcurrentLinkedDeque;
aload 1
invokevirtual java.util.concurrent.ConcurrentLinkedDeque.removeLastOccurrence:(Ljava/lang/Object;)Z
ifeq 9
8: aload 0
getfield org.springframework.util.ConcurrentLruCache.queue:Ljava/util/concurrent/ConcurrentLinkedDeque;
aload 1
invokevirtual java.util.concurrent.ConcurrentLinkedDeque.offer:(Ljava/lang/Object;)Z
pop
9: StackMap locals:
StackMap stack:
aload 2
astore 4
10: aload 0
getfield org.springframework.util.ConcurrentLruCache.lock:Ljava/util/concurrent/locks/ReadWriteLock;
invokeinterface java.util.concurrent.locks.ReadWriteLock.readLock:()Ljava/util/concurrent/locks/Lock;
invokeinterface java.util.concurrent.locks.Lock.unlock:()V
11: aload 4
areturn
12: StackMap locals:
StackMap stack: java.lang.Throwable
astore 3
13: aload 0
getfield org.springframework.util.ConcurrentLruCache.lock:Ljava/util/concurrent/locks/ReadWriteLock;
invokeinterface java.util.concurrent.locks.ReadWriteLock.readLock:()Ljava/util/concurrent/locks/Lock;
invokeinterface java.util.concurrent.locks.Lock.unlock:()V
14: aload 3
athrow
15: StackMap locals:
StackMap stack:
aload 0
getfield org.springframework.util.ConcurrentLruCache.lock:Ljava/util/concurrent/locks/ReadWriteLock;
invokeinterface java.util.concurrent.locks.ReadWriteLock.writeLock:()Ljava/util/concurrent/locks/Lock;
invokeinterface java.util.concurrent.locks.Lock.lock:()V
16: aload 0
getfield org.springframework.util.ConcurrentLruCache.cache:Ljava/util/concurrent/ConcurrentHashMap;
aload 1
invokevirtual java.util.concurrent.ConcurrentHashMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
astore 2
17: aload 2
ifnull 23
18: aload 0
getfield org.springframework.util.ConcurrentLruCache.queue:Ljava/util/concurrent/ConcurrentLinkedDeque;
aload 1
invokevirtual java.util.concurrent.ConcurrentLinkedDeque.removeLastOccurrence:(Ljava/lang/Object;)Z
ifeq 20
19: aload 0
getfield org.springframework.util.ConcurrentLruCache.queue:Ljava/util/concurrent/ConcurrentLinkedDeque;
aload 1
invokevirtual java.util.concurrent.ConcurrentLinkedDeque.offer:(Ljava/lang/Object;)Z
pop
20: StackMap locals:
StackMap stack:
aload 2
astore 6
21: aload 0
getfield org.springframework.util.ConcurrentLruCache.lock:Ljava/util/concurrent/locks/ReadWriteLock;
invokeinterface java.util.concurrent.locks.ReadWriteLock.writeLock:()Ljava/util/concurrent/locks/Lock;
invokeinterface java.util.concurrent.locks.Lock.unlock:()V
22: aload 6
areturn
23: StackMap locals:
StackMap stack:
aload 0
getfield org.springframework.util.ConcurrentLruCache.generator:Ljava/util/function/Function;
aload 1
invokeinterface java.util.function.Function.apply:(Ljava/lang/Object;)Ljava/lang/Object;
astore 3
start local 3 24: aload 0
getfield org.springframework.util.ConcurrentLruCache.size:I
aload 0
getfield org.springframework.util.ConcurrentLruCache.sizeLimit:I
if_icmpne 28
25: aload 0
getfield org.springframework.util.ConcurrentLruCache.queue:Ljava/util/concurrent/ConcurrentLinkedDeque;
invokevirtual java.util.concurrent.ConcurrentLinkedDeque.poll:()Ljava/lang/Object;
astore 4
start local 4 26: aload 4
ifnull 28
27: aload 0
getfield org.springframework.util.ConcurrentLruCache.cache:Ljava/util/concurrent/ConcurrentHashMap;
aload 4
invokevirtual java.util.concurrent.ConcurrentHashMap.remove:(Ljava/lang/Object;)Ljava/lang/Object;
pop
end local 4 28: StackMap locals: java.lang.Object
StackMap stack:
aload 0
getfield org.springframework.util.ConcurrentLruCache.queue:Ljava/util/concurrent/ConcurrentLinkedDeque;
aload 1
invokevirtual java.util.concurrent.ConcurrentLinkedDeque.offer:(Ljava/lang/Object;)Z
pop
29: aload 0
getfield org.springframework.util.ConcurrentLruCache.cache:Ljava/util/concurrent/ConcurrentHashMap;
aload 1
aload 3
invokevirtual java.util.concurrent.ConcurrentHashMap.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
30: aload 0
aload 0
getfield org.springframework.util.ConcurrentLruCache.cache:Ljava/util/concurrent/ConcurrentHashMap;
invokevirtual java.util.concurrent.ConcurrentHashMap.size:()I
putfield org.springframework.util.ConcurrentLruCache.size:I
31: aload 3
astore 6
32: aload 0
getfield org.springframework.util.ConcurrentLruCache.lock:Ljava/util/concurrent/locks/ReadWriteLock;
invokeinterface java.util.concurrent.locks.ReadWriteLock.writeLock:()Ljava/util/concurrent/locks/Lock;
invokeinterface java.util.concurrent.locks.Lock.unlock:()V
33: aload 6
areturn
end local 3 34: StackMap locals: org.springframework.util.ConcurrentLruCache java.lang.Object java.lang.Object
StackMap stack: java.lang.Throwable
astore 5
35: aload 0
getfield org.springframework.util.ConcurrentLruCache.lock:Ljava/util/concurrent/locks/ReadWriteLock;
invokeinterface java.util.concurrent.locks.ReadWriteLock.writeLock:()Ljava/util/concurrent/locks/Lock;
invokeinterface java.util.concurrent.locks.Lock.unlock:()V
36: aload 5
athrow
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 37 0 this Lorg/springframework/util/ConcurrentLruCache<TK;TV;>;
0 37 1 key TK;
3 37 2 cached TV;
24 34 3 value TV;
26 28 4 leastUsed TK;
Exception table:
from to target type
7 10 12 any
16 21 34 any
23 32 34 any
Signature: (TK;)TV;
MethodParameters:
Name Flags
key
public boolean contains();
descriptor: (Ljava/lang/Object;)Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
getfield org.springframework.util.ConcurrentLruCache.cache:Ljava/util/concurrent/ConcurrentHashMap;
aload 1
invokevirtual java.util.concurrent.ConcurrentHashMap.containsKey:(Ljava/lang/Object;)Z
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/springframework/util/ConcurrentLruCache<TK;TV;>;
0 1 1 key TK;
Signature: (TK;)Z
MethodParameters:
Name Flags
key
public boolean remove();
descriptor: (Ljava/lang/Object;)Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=5, args_size=2
start local 0 start local 1 0: aload 0
getfield org.springframework.util.ConcurrentLruCache.lock:Ljava/util/concurrent/locks/ReadWriteLock;
invokeinterface java.util.concurrent.locks.ReadWriteLock.writeLock:()Ljava/util/concurrent/locks/Lock;
invokeinterface java.util.concurrent.locks.Lock.lock:()V
1: aload 0
getfield org.springframework.util.ConcurrentLruCache.cache:Ljava/util/concurrent/ConcurrentHashMap;
aload 1
invokevirtual java.util.concurrent.ConcurrentHashMap.remove:(Ljava/lang/Object;)Ljava/lang/Object;
ifnull 2
iconst_1
goto 3
StackMap locals:
StackMap stack:
2: iconst_0
StackMap locals:
StackMap stack: int
3: istore 2
start local 2 4: aload 0
getfield org.springframework.util.ConcurrentLruCache.queue:Ljava/util/concurrent/ConcurrentLinkedDeque;
aload 1
invokevirtual java.util.concurrent.ConcurrentLinkedDeque.remove:(Ljava/lang/Object;)Z
pop
5: aload 0
aload 0
getfield org.springframework.util.ConcurrentLruCache.cache:Ljava/util/concurrent/ConcurrentHashMap;
invokevirtual java.util.concurrent.ConcurrentHashMap.size:()I
putfield org.springframework.util.ConcurrentLruCache.size:I
6: iload 2
istore 4
7: aload 0
getfield org.springframework.util.ConcurrentLruCache.lock:Ljava/util/concurrent/locks/ReadWriteLock;
invokeinterface java.util.concurrent.locks.ReadWriteLock.writeLock:()Ljava/util/concurrent/locks/Lock;
invokeinterface java.util.concurrent.locks.Lock.unlock:()V
8: iload 4
ireturn
end local 2 9: StackMap locals:
StackMap stack: java.lang.Throwable
astore 3
10: aload 0
getfield org.springframework.util.ConcurrentLruCache.lock:Ljava/util/concurrent/locks/ReadWriteLock;
invokeinterface java.util.concurrent.locks.ReadWriteLock.writeLock:()Ljava/util/concurrent/locks/Lock;
invokeinterface java.util.concurrent.locks.Lock.unlock:()V
11: aload 3
athrow
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 12 0 this Lorg/springframework/util/ConcurrentLruCache<TK;TV;>;
0 12 1 key TK;
4 9 2 wasPresent Z
Exception table:
from to target type
1 7 9 any
Signature: (TK;)Z
MethodParameters:
Name Flags
key
public void clear();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=2, args_size=1
start local 0 0: aload 0
getfield org.springframework.util.ConcurrentLruCache.lock:Ljava/util/concurrent/locks/ReadWriteLock;
invokeinterface java.util.concurrent.locks.ReadWriteLock.writeLock:()Ljava/util/concurrent/locks/Lock;
invokeinterface java.util.concurrent.locks.Lock.lock:()V
1: aload 0
getfield org.springframework.util.ConcurrentLruCache.cache:Ljava/util/concurrent/ConcurrentHashMap;
invokevirtual java.util.concurrent.ConcurrentHashMap.clear:()V
2: aload 0
getfield org.springframework.util.ConcurrentLruCache.queue:Ljava/util/concurrent/ConcurrentLinkedDeque;
invokevirtual java.util.concurrent.ConcurrentLinkedDeque.clear:()V
3: aload 0
iconst_0
putfield org.springframework.util.ConcurrentLruCache.size:I
4: goto 8
5: StackMap locals:
StackMap stack: java.lang.Throwable
astore 1
6: aload 0
getfield org.springframework.util.ConcurrentLruCache.lock:Ljava/util/concurrent/locks/ReadWriteLock;
invokeinterface java.util.concurrent.locks.ReadWriteLock.writeLock:()Ljava/util/concurrent/locks/Lock;
invokeinterface java.util.concurrent.locks.Lock.unlock:()V
7: aload 1
athrow
8: StackMap locals:
StackMap stack:
aload 0
getfield org.springframework.util.ConcurrentLruCache.lock:Ljava/util/concurrent/locks/ReadWriteLock;
invokeinterface java.util.concurrent.locks.ReadWriteLock.writeLock:()Ljava/util/concurrent/locks/Lock;
invokeinterface java.util.concurrent.locks.Lock.unlock:()V
9: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 10 0 this Lorg/springframework/util/ConcurrentLruCache<TK;TV;>;
Exception table:
from to target type
1 5 5 any
public int size();
descriptor: ()I
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield org.springframework.util.ConcurrentLruCache.size:I
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/springframework/util/ConcurrentLruCache<TK;TV;>;
public int sizeLimit();
descriptor: ()I
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield org.springframework.util.ConcurrentLruCache.sizeLimit:I
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/springframework/util/ConcurrentLruCache<TK;TV;>;
}
Signature: <K:Ljava/lang/Object;V:Ljava/lang/Object;>Ljava/lang/Object;
SourceFile: "ConcurrentLruCache.java"