public class org.h2.util.CacheLRU implements org.h2.util.Cache
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: org.h2.util.CacheLRU
super_class: java.lang.Object
{
static final java.lang.String TYPE_NAME;
descriptor: Ljava/lang/String;
flags: (0x0018) ACC_STATIC, ACC_FINAL
ConstantValue: "LRU"
private final org.h2.util.CacheWriter writer;
descriptor: Lorg/h2/util/CacheWriter;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final boolean fifo;
descriptor: Z
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final org.h2.util.CacheObject head;
descriptor: Lorg/h2/util/CacheObject;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final int mask;
descriptor: I
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private org.h2.util.CacheObject[] values;
descriptor: [Lorg/h2/util/CacheObject;
flags: (0x0002) ACC_PRIVATE
private int recordCount;
descriptor: I
flags: (0x0002) ACC_PRIVATE
private final int len;
descriptor: I
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private long maxMemory;
descriptor: J
flags: (0x0002) ACC_PRIVATE
private long memory;
descriptor: J
flags: (0x0002) ACC_PRIVATE
void <init>(org.h2.util.CacheWriter, int, boolean);
descriptor: (Lorg/h2/util/CacheWriter;IZ)V
flags: (0x0000)
Code:
stack=5, locals=6, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: aload 0
new org.h2.util.CacheHead
dup
invokespecial org.h2.util.CacheHead.<init>:()V
putfield org.h2.util.CacheLRU.head:Lorg/h2/util/CacheObject;
2: aload 0
aload 1
putfield org.h2.util.CacheLRU.writer:Lorg/h2/util/CacheWriter;
3: aload 0
iload 3
putfield org.h2.util.CacheLRU.fifo:Z
4: aload 0
iload 2
invokevirtual org.h2.util.CacheLRU.setMaxMemory:(I)V
5: aload 0
getfield org.h2.util.CacheLRU.maxMemory:J
ldc 64
ldiv
lstore 4
start local 4 6: lload 4
ldc 2147483647
lcmp
ifle 8
7: new java.lang.IllegalArgumentException
dup
invokespecial java.lang.IllegalArgumentException.<init>:()V
athrow
8: StackMap locals: org.h2.util.CacheLRU org.h2.util.CacheWriter int int long
StackMap stack:
aload 0
lload 4
l2i
invokestatic org.h2.util.MathUtils.nextPowerOf2:(I)I
putfield org.h2.util.CacheLRU.len:I
end local 4 9: goto 12
StackMap locals: org.h2.util.CacheLRU org.h2.util.CacheWriter int int
StackMap stack: java.lang.IllegalArgumentException
10: astore 4
start local 4 11: new java.lang.IllegalStateException
dup
new java.lang.StringBuilder
dup
ldc "This much cache memory is not supported: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
iload 2
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
ldc "kb"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
aload 4
invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
athrow
end local 4 12: StackMap locals:
StackMap stack:
aload 0
aload 0
getfield org.h2.util.CacheLRU.len:I
iconst_1
isub
putfield org.h2.util.CacheLRU.mask:I
13: aload 0
invokevirtual org.h2.util.CacheLRU.clear:()V
14: return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 15 0 this Lorg/h2/util/CacheLRU;
0 15 1 writer Lorg/h2/util/CacheWriter;
0 15 2 maxMemoryKb I
0 15 3 fifo Z
6 9 4 tmpLen J
11 12 4 e Ljava/lang/IllegalArgumentException;
Exception table:
from to target type
5 9 10 Class java.lang.IllegalArgumentException
MethodParameters:
Name Flags
writer
maxMemoryKb
fifo
public static org.h2.util.Cache getCache(org.h2.util.CacheWriter, java.lang.String, int);
descriptor: (Lorg/h2/util/CacheWriter;Ljava/lang/String;I)Lorg/h2/util/Cache;
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=5, locals=5, args_size=3
start local 0 start local 1 start local 2 0: aconst_null
astore 3
start local 3 1: aload 1
ldc "SOFT_"
invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
ifeq 4
2: new org.h2.util.SoftHashMap
dup
invokespecial org.h2.util.SoftHashMap.<init>:()V
astore 3
3: aload 1
ldc "SOFT_"
invokevirtual java.lang.String.length:()I
invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
astore 1
4: StackMap locals: java.util.Map
StackMap stack:
ldc "LRU"
aload 1
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifeq 7
5: new org.h2.util.CacheLRU
dup
aload 0
iload 2
iconst_0
invokespecial org.h2.util.CacheLRU.<init>:(Lorg/h2/util/CacheWriter;IZ)V
astore 4
start local 4 6: goto 11
end local 4 StackMap locals:
StackMap stack:
7: ldc "TQ"
aload 1
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifeq 10
8: new org.h2.util.CacheTQ
dup
aload 0
iload 2
invokespecial org.h2.util.CacheTQ.<init>:(Lorg/h2/util/CacheWriter;I)V
astore 4
start local 4 9: goto 11
end local 4 10: StackMap locals:
StackMap stack:
ldc "CACHE_TYPE"
aload 1
invokestatic org.h2.message.DbException.getInvalidValueException:(Ljava/lang/String;Ljava/lang/Object;)Lorg/h2/message/DbException;
athrow
start local 4 11: StackMap locals: org.h2.util.Cache
StackMap stack:
aload 3
ifnull 13
12: new org.h2.util.CacheSecondLevel
dup
aload 4
aload 3
invokespecial org.h2.util.CacheSecondLevel.<init>:(Lorg/h2/util/Cache;Ljava/util/Map;)V
astore 4
13: StackMap locals:
StackMap stack:
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 14 0 writer Lorg/h2/util/CacheWriter;
0 14 1 cacheType Ljava/lang/String;
0 14 2 cacheSize I
1 14 3 secondLevel Ljava/util/Map<Ljava/lang/Integer;Lorg/h2/util/CacheObject;>;
6 7 4 cache Lorg/h2/util/Cache;
9 10 4 cache Lorg/h2/util/Cache;
11 14 4 cache Lorg/h2/util/Cache;
MethodParameters:
Name Flags
writer
cacheType
cacheSize
public void clear();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=1, args_size=1
start local 0 0: aload 0
getfield org.h2.util.CacheLRU.head:Lorg/h2/util/CacheObject;
aload 0
getfield org.h2.util.CacheLRU.head:Lorg/h2/util/CacheObject;
aload 0
getfield org.h2.util.CacheLRU.head:Lorg/h2/util/CacheObject;
dup_x1
putfield org.h2.util.CacheObject.cachePrevious:Lorg/h2/util/CacheObject;
putfield org.h2.util.CacheObject.cacheNext:Lorg/h2/util/CacheObject;
1: aload 0
aconst_null
putfield org.h2.util.CacheLRU.values:[Lorg/h2/util/CacheObject;
2: aload 0
aload 0
getfield org.h2.util.CacheLRU.len:I
anewarray org.h2.util.CacheObject
putfield org.h2.util.CacheLRU.values:[Lorg/h2/util/CacheObject;
3: aload 0
iconst_0
putfield org.h2.util.CacheLRU.recordCount:I
4: aload 0
aload 0
getfield org.h2.util.CacheLRU.len:I
i2l
ldc 8
lmul
putfield org.h2.util.CacheLRU.memory:J
5: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Lorg/h2/util/CacheLRU;
public void put(org.h2.util.CacheObject);
descriptor: (Lorg/h2/util/CacheObject;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=4, args_size=2
start local 0 start local 1 0: getstatic org.h2.engine.SysProperties.CHECK:Z
ifeq 7
1: aload 1
invokevirtual org.h2.util.CacheObject.getPos:()I
istore 2
start local 2 2: aload 0
iload 2
invokevirtual org.h2.util.CacheLRU.find:(I)Lorg/h2/util/CacheObject;
astore 3
start local 3 3: aload 3
ifnull 7
4: new java.lang.StringBuilder
dup
ldc "try to add a record twice at pos "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
5: iload 2
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
6: invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokestatic org.h2.message.DbException.throwInternalError:(Ljava/lang/String;)Ljava/lang/RuntimeException;
pop
end local 3 end local 2 7: StackMap locals:
StackMap stack:
aload 1
invokevirtual org.h2.util.CacheObject.getPos:()I
aload 0
getfield org.h2.util.CacheLRU.mask:I
iand
istore 2
start local 2 8: aload 1
aload 0
getfield org.h2.util.CacheLRU.values:[Lorg/h2/util/CacheObject;
iload 2
aaload
putfield org.h2.util.CacheObject.cacheChained:Lorg/h2/util/CacheObject;
9: aload 0
getfield org.h2.util.CacheLRU.values:[Lorg/h2/util/CacheObject;
iload 2
aload 1
aastore
10: aload 0
dup
getfield org.h2.util.CacheLRU.recordCount:I
iconst_1
iadd
putfield org.h2.util.CacheLRU.recordCount:I
11: aload 0
dup
getfield org.h2.util.CacheLRU.memory:J
aload 1
invokevirtual org.h2.util.CacheObject.getMemory:()I
i2l
ladd
putfield org.h2.util.CacheLRU.memory:J
12: aload 0
aload 1
invokevirtual org.h2.util.CacheLRU.addToFront:(Lorg/h2/util/CacheObject;)V
13: aload 0
invokevirtual org.h2.util.CacheLRU.removeOldIfRequired:()V
14: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 15 0 this Lorg/h2/util/CacheLRU;
0 15 1 rec Lorg/h2/util/CacheObject;
2 7 2 pos I
3 7 3 old Lorg/h2/util/CacheObject;
8 15 2 index I
MethodParameters:
Name Flags
rec
public org.h2.util.CacheObject update(int, org.h2.util.CacheObject);
descriptor: (ILorg/h2/util/CacheObject;)Lorg/h2/util/CacheObject;
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=4, args_size=3
start local 0 start local 1 start local 2 0: aload 0
iload 1
invokevirtual org.h2.util.CacheLRU.find:(I)Lorg/h2/util/CacheObject;
astore 3
start local 3 1: aload 3
ifnonnull 4
2: aload 0
aload 2
invokevirtual org.h2.util.CacheLRU.put:(Lorg/h2/util/CacheObject;)V
3: goto 9
4: StackMap locals: org.h2.util.CacheObject
StackMap stack:
aload 3
aload 2
if_acmpeq 6
5: new java.lang.StringBuilder
dup
ldc "old!=record pos:"
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
iload 1
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
ldc " old:"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 3
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
ldc " new:"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 2
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokestatic org.h2.message.DbException.throwInternalError:(Ljava/lang/String;)Ljava/lang/RuntimeException;
pop
6: StackMap locals:
StackMap stack:
aload 0
getfield org.h2.util.CacheLRU.fifo:Z
ifne 9
7: aload 0
aload 2
invokevirtual org.h2.util.CacheLRU.removeFromLinkedList:(Lorg/h2/util/CacheObject;)V
8: aload 0
aload 2
invokevirtual org.h2.util.CacheLRU.addToFront:(Lorg/h2/util/CacheObject;)V
9: StackMap locals:
StackMap stack:
aload 3
areturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 10 0 this Lorg/h2/util/CacheLRU;
0 10 1 pos I
0 10 2 rec Lorg/h2/util/CacheObject;
1 10 3 old Lorg/h2/util/CacheObject;
MethodParameters:
Name Flags
pos
rec
private void removeOldIfRequired();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=1, args_size=1
start local 0 0: aload 0
getfield org.h2.util.CacheLRU.memory:J
aload 0
getfield org.h2.util.CacheLRU.maxMemory:J
lcmp
iflt 2
1: aload 0
invokevirtual org.h2.util.CacheLRU.removeOld:()V
2: StackMap locals:
StackMap stack:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lorg/h2/util/CacheLRU;
private void removeOld();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=6, locals=13, args_size=1
start local 0 0: iconst_0
istore 1
start local 1 1: new java.util.ArrayList
dup
invokespecial java.util.ArrayList.<init>:()V
astore 2
start local 2 2: aload 0
getfield org.h2.util.CacheLRU.memory:J
lstore 3
start local 3 3: aload 0
getfield org.h2.util.CacheLRU.recordCount:I
istore 5
start local 5 4: iconst_0
istore 6
start local 6 5: aload 0
getfield org.h2.util.CacheLRU.head:Lorg/h2/util/CacheObject;
getfield org.h2.util.CacheObject.cacheNext:Lorg/h2/util/CacheObject;
astore 7
start local 7 6: StackMap locals: org.h2.util.CacheLRU int java.util.ArrayList long int int org.h2.util.CacheObject
StackMap stack:
iload 5
bipush 16
if_icmpgt 8
7: goto 40
8: StackMap locals:
StackMap stack:
aload 2
invokevirtual java.util.ArrayList.isEmpty:()Z
ifeq 11
9: lload 3
aload 0
getfield org.h2.util.CacheLRU.maxMemory:J
lcmp
ifgt 13
10: goto 40
11: StackMap locals:
StackMap stack:
lload 3
ldc 4
lmul
aload 0
getfield org.h2.util.CacheLRU.maxMemory:J
ldc 3
lmul
lcmp
ifgt 13
12: goto 40
13: StackMap locals:
StackMap stack:
aload 7
astore 8
start local 8 14: aload 8
getfield org.h2.util.CacheObject.cacheNext:Lorg/h2/util/CacheObject;
astore 7
15: iinc 1 1
16: iload 1
aload 0
getfield org.h2.util.CacheLRU.recordCount:I
if_icmplt 27
17: iload 6
ifne 22
18: aload 0
getfield org.h2.util.CacheLRU.writer:Lorg/h2/util/CacheWriter;
invokeinterface org.h2.util.CacheWriter.flushLog:()V
19: iconst_1
istore 6
20: iconst_0
istore 1
21: goto 27
22: StackMap locals: org.h2.util.CacheObject
StackMap stack:
aload 0
getfield org.h2.util.CacheLRU.writer:Lorg/h2/util/CacheWriter;
invokeinterface org.h2.util.CacheWriter.getTrace:()Lorg/h2/message/Trace;
23: new java.lang.StringBuilder
dup
ldc "cannot remove records, cache size too small? records:"
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
24: aload 0
getfield org.h2.util.CacheLRU.recordCount:I
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
ldc " memory:"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 0
getfield org.h2.util.CacheLRU.memory:J
invokevirtual java.lang.StringBuilder.append:(J)Ljava/lang/StringBuilder;
25: invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokevirtual org.h2.message.Trace.info:(Ljava/lang/String;)V
26: goto 40
27: StackMap locals:
StackMap stack:
aload 8
aload 0
getfield org.h2.util.CacheLRU.head:Lorg/h2/util/CacheObject;
if_acmpne 29
28: ldc "try to remove head"
invokestatic org.h2.message.DbException.throwInternalError:(Ljava/lang/String;)Ljava/lang/RuntimeException;
pop
29: StackMap locals:
StackMap stack:
aload 8
invokevirtual org.h2.util.CacheObject.canRemove:()Z
ifne 33
30: aload 0
aload 8
invokevirtual org.h2.util.CacheLRU.removeFromLinkedList:(Lorg/h2/util/CacheObject;)V
31: aload 0
aload 8
invokevirtual org.h2.util.CacheLRU.addToFront:(Lorg/h2/util/CacheObject;)V
32: goto 6
33: StackMap locals:
StackMap stack:
iinc 5 -1
34: lload 3
aload 8
invokevirtual org.h2.util.CacheObject.getMemory:()I
i2l
lsub
lstore 3
35: aload 8
invokevirtual org.h2.util.CacheObject.isChanged:()Z
ifeq 38
36: aload 2
aload 8
invokevirtual java.util.ArrayList.add:(Ljava/lang/Object;)Z
pop
37: goto 6
38: StackMap locals:
StackMap stack:
aload 0
aload 8
invokevirtual org.h2.util.CacheObject.getPos:()I
invokevirtual org.h2.util.CacheLRU.remove:(I)Z
pop
end local 8 39: goto 6
40: StackMap locals:
StackMap stack:
aload 2
invokevirtual java.util.ArrayList.isEmpty:()Z
ifne 64
41: iload 6
ifne 43
42: aload 0
getfield org.h2.util.CacheLRU.writer:Lorg/h2/util/CacheWriter;
invokeinterface org.h2.util.CacheWriter.flushLog:()V
43: StackMap locals:
StackMap stack:
aload 2
invokestatic java.util.Collections.sort:(Ljava/util/List;)V
44: aload 0
getfield org.h2.util.CacheLRU.maxMemory:J
lstore 8
start local 8 45: aload 2
invokevirtual java.util.ArrayList.size:()I
istore 10
start local 10 46: aload 0
ldc 9223372036854775807
putfield org.h2.util.CacheLRU.maxMemory:J
47: iconst_0
istore 1
goto 51
48: StackMap locals: long int
StackMap stack:
aload 2
iload 1
invokevirtual java.util.ArrayList.get:(I)Ljava/lang/Object;
checkcast org.h2.util.CacheObject
astore 11
start local 11 49: aload 0
getfield org.h2.util.CacheLRU.writer:Lorg/h2/util/CacheWriter;
aload 11
invokeinterface org.h2.util.CacheWriter.writeBack:(Lorg/h2/util/CacheObject;)V
end local 11 50: iinc 1 1
StackMap locals:
StackMap stack:
51: iload 1
iload 10
if_icmplt 48
52: goto 56
StackMap locals:
StackMap stack: java.lang.Throwable
53: astore 12
54: aload 0
lload 8
putfield org.h2.util.CacheLRU.maxMemory:J
55: aload 12
athrow
56: StackMap locals:
StackMap stack:
aload 0
lload 8
putfield org.h2.util.CacheLRU.maxMemory:J
57: iconst_0
istore 1
goto 63
58: StackMap locals:
StackMap stack:
aload 2
iload 1
invokevirtual java.util.ArrayList.get:(I)Ljava/lang/Object;
checkcast org.h2.util.CacheObject
astore 11
start local 11 59: aload 0
aload 11
invokevirtual org.h2.util.CacheObject.getPos:()I
invokevirtual org.h2.util.CacheLRU.remove:(I)Z
pop
60: aload 11
getfield org.h2.util.CacheObject.cacheNext:Lorg/h2/util/CacheObject;
ifnull 62
61: invokestatic org.h2.message.DbException.throwInternalError:()Ljava/lang/RuntimeException;
athrow
end local 11 62: StackMap locals:
StackMap stack:
iinc 1 1
StackMap locals:
StackMap stack:
63: iload 1
iload 10
if_icmplt 58
end local 10 end local 8 64: StackMap locals:
StackMap stack:
return
end local 7 end local 6 end local 5 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 65 0 this Lorg/h2/util/CacheLRU;
1 65 1 i I
2 65 2 changed Ljava/util/ArrayList<Lorg/h2/util/CacheObject;>;
3 65 3 mem J
4 65 5 rc I
5 65 6 flushed Z
6 65 7 next Lorg/h2/util/CacheObject;
14 39 8 check Lorg/h2/util/CacheObject;
45 64 8 max J
46 64 10 size I
49 50 11 rec Lorg/h2/util/CacheObject;
59 62 11 rec Lorg/h2/util/CacheObject;
Exception table:
from to target type
46 53 53 any
private void addToFront(org.h2.util.CacheObject);
descriptor: (Lorg/h2/util/CacheObject;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 1
aload 0
getfield org.h2.util.CacheLRU.head:Lorg/h2/util/CacheObject;
if_acmpne 2
1: ldc "try to move head"
invokestatic org.h2.message.DbException.throwInternalError:(Ljava/lang/String;)Ljava/lang/RuntimeException;
pop
2: StackMap locals:
StackMap stack:
aload 1
aload 0
getfield org.h2.util.CacheLRU.head:Lorg/h2/util/CacheObject;
putfield org.h2.util.CacheObject.cacheNext:Lorg/h2/util/CacheObject;
3: aload 1
aload 0
getfield org.h2.util.CacheLRU.head:Lorg/h2/util/CacheObject;
getfield org.h2.util.CacheObject.cachePrevious:Lorg/h2/util/CacheObject;
putfield org.h2.util.CacheObject.cachePrevious:Lorg/h2/util/CacheObject;
4: aload 1
getfield org.h2.util.CacheObject.cachePrevious:Lorg/h2/util/CacheObject;
aload 1
putfield org.h2.util.CacheObject.cacheNext:Lorg/h2/util/CacheObject;
5: aload 0
getfield org.h2.util.CacheLRU.head:Lorg/h2/util/CacheObject;
aload 1
putfield org.h2.util.CacheObject.cachePrevious:Lorg/h2/util/CacheObject;
6: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 this Lorg/h2/util/CacheLRU;
0 7 1 rec Lorg/h2/util/CacheObject;
MethodParameters:
Name Flags
rec
private void removeFromLinkedList(org.h2.util.CacheObject);
descriptor: (Lorg/h2/util/CacheObject;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 1
aload 0
getfield org.h2.util.CacheLRU.head:Lorg/h2/util/CacheObject;
if_acmpne 2
1: ldc "try to remove head"
invokestatic org.h2.message.DbException.throwInternalError:(Ljava/lang/String;)Ljava/lang/RuntimeException;
pop
2: StackMap locals:
StackMap stack:
aload 1
getfield org.h2.util.CacheObject.cachePrevious:Lorg/h2/util/CacheObject;
aload 1
getfield org.h2.util.CacheObject.cacheNext:Lorg/h2/util/CacheObject;
putfield org.h2.util.CacheObject.cacheNext:Lorg/h2/util/CacheObject;
3: aload 1
getfield org.h2.util.CacheObject.cacheNext:Lorg/h2/util/CacheObject;
aload 1
getfield org.h2.util.CacheObject.cachePrevious:Lorg/h2/util/CacheObject;
putfield org.h2.util.CacheObject.cachePrevious:Lorg/h2/util/CacheObject;
4: aload 1
aconst_null
putfield org.h2.util.CacheObject.cacheNext:Lorg/h2/util/CacheObject;
5: aload 1
aconst_null
putfield org.h2.util.CacheObject.cachePrevious:Lorg/h2/util/CacheObject;
6: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 this Lorg/h2/util/CacheLRU;
0 7 1 rec Lorg/h2/util/CacheObject;
MethodParameters:
Name Flags
rec
public boolean remove(int);
descriptor: (I)Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=5, args_size=2
start local 0 start local 1 0: iload 1
aload 0
getfield org.h2.util.CacheLRU.mask:I
iand
istore 2
start local 2 1: aload 0
getfield org.h2.util.CacheLRU.values:[Lorg/h2/util/CacheObject;
iload 2
aaload
astore 3
start local 3 2: aload 3
ifnonnull 4
3: iconst_0
ireturn
4: StackMap locals: int org.h2.util.CacheObject
StackMap stack:
aload 3
invokevirtual org.h2.util.CacheObject.getPos:()I
iload 1
if_icmpne 7
5: aload 0
getfield org.h2.util.CacheLRU.values:[Lorg/h2/util/CacheObject;
iload 2
aload 3
getfield org.h2.util.CacheObject.cacheChained:Lorg/h2/util/CacheObject;
aastore
6: goto 13
7: StackMap locals:
StackMap stack:
aload 3
astore 4
start local 4 8: aload 3
getfield org.h2.util.CacheObject.cacheChained:Lorg/h2/util/CacheObject;
astore 3
9: aload 3
ifnonnull 11
10: iconst_0
ireturn
11: StackMap locals: org.h2.util.CacheObject
StackMap stack:
aload 3
invokevirtual org.h2.util.CacheObject.getPos:()I
iload 1
if_icmpne 7
12: aload 4
aload 3
getfield org.h2.util.CacheObject.cacheChained:Lorg/h2/util/CacheObject;
putfield org.h2.util.CacheObject.cacheChained:Lorg/h2/util/CacheObject;
end local 4 13: StackMap locals:
StackMap stack:
aload 0
dup
getfield org.h2.util.CacheLRU.recordCount:I
iconst_1
isub
putfield org.h2.util.CacheLRU.recordCount:I
14: aload 0
dup
getfield org.h2.util.CacheLRU.memory:J
aload 3
invokevirtual org.h2.util.CacheObject.getMemory:()I
i2l
lsub
putfield org.h2.util.CacheLRU.memory:J
15: aload 0
aload 3
invokevirtual org.h2.util.CacheLRU.removeFromLinkedList:(Lorg/h2/util/CacheObject;)V
16: getstatic org.h2.engine.SysProperties.CHECK:Z
ifeq 21
17: aload 3
aconst_null
putfield org.h2.util.CacheObject.cacheChained:Lorg/h2/util/CacheObject;
18: aload 0
iload 1
invokevirtual org.h2.util.CacheLRU.find:(I)Lorg/h2/util/CacheObject;
astore 4
start local 4 19: aload 4
ifnull 21
20: new java.lang.StringBuilder
dup
ldc "not removed: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 4
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokestatic org.h2.message.DbException.throwInternalError:(Ljava/lang/String;)Ljava/lang/RuntimeException;
pop
end local 4 21: StackMap locals:
StackMap stack:
iconst_1
ireturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 22 0 this Lorg/h2/util/CacheLRU;
0 22 1 pos I
1 22 2 index I
2 22 3 rec Lorg/h2/util/CacheObject;
8 13 4 last Lorg/h2/util/CacheObject;
19 21 4 o Lorg/h2/util/CacheObject;
MethodParameters:
Name Flags
pos
public org.h2.util.CacheObject find(int);
descriptor: (I)Lorg/h2/util/CacheObject;
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=3, args_size=2
start local 0 start local 1 0: aload 0
getfield org.h2.util.CacheLRU.values:[Lorg/h2/util/CacheObject;
iload 1
aload 0
getfield org.h2.util.CacheLRU.mask:I
iand
aaload
astore 2
start local 2 1: goto 3
2: StackMap locals: org.h2.util.CacheObject
StackMap stack:
aload 2
getfield org.h2.util.CacheObject.cacheChained:Lorg/h2/util/CacheObject;
astore 2
3: StackMap locals:
StackMap stack:
aload 2
ifnull 4
aload 2
invokevirtual org.h2.util.CacheObject.getPos:()I
iload 1
if_icmpne 2
4: StackMap locals:
StackMap stack:
aload 2
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lorg/h2/util/CacheLRU;
0 5 1 pos I
1 5 2 rec Lorg/h2/util/CacheObject;
MethodParameters:
Name Flags
pos
public org.h2.util.CacheObject get(int);
descriptor: (I)Lorg/h2/util/CacheObject;
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=3, args_size=2
start local 0 start local 1 0: aload 0
iload 1
invokevirtual org.h2.util.CacheLRU.find:(I)Lorg/h2/util/CacheObject;
astore 2
start local 2 1: aload 2
ifnull 5
2: aload 0
getfield org.h2.util.CacheLRU.fifo:Z
ifne 5
3: aload 0
aload 2
invokevirtual org.h2.util.CacheLRU.removeFromLinkedList:(Lorg/h2/util/CacheObject;)V
4: aload 0
aload 2
invokevirtual org.h2.util.CacheLRU.addToFront:(Lorg/h2/util/CacheObject;)V
5: StackMap locals: org.h2.util.CacheObject
StackMap stack:
aload 2
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Lorg/h2/util/CacheLRU;
0 6 1 pos I
1 6 2 rec Lorg/h2/util/CacheObject;
MethodParameters:
Name Flags
pos
public java.util.ArrayList<org.h2.util.CacheObject> getAllChanged();
descriptor: ()Ljava/util/ArrayList;
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=3, args_size=1
start local 0 0: new java.util.ArrayList
dup
invokespecial java.util.ArrayList.<init>:()V
astore 1
start local 1 1: aload 0
getfield org.h2.util.CacheLRU.head:Lorg/h2/util/CacheObject;
getfield org.h2.util.CacheObject.cacheNext:Lorg/h2/util/CacheObject;
astore 2
start local 2 2: goto 6
3: StackMap locals: java.util.ArrayList org.h2.util.CacheObject
StackMap stack:
aload 2
invokevirtual org.h2.util.CacheObject.isChanged:()Z
ifeq 5
4: aload 1
aload 2
invokevirtual java.util.ArrayList.add:(Ljava/lang/Object;)Z
pop
5: StackMap locals:
StackMap stack:
aload 2
getfield org.h2.util.CacheObject.cacheNext:Lorg/h2/util/CacheObject;
astore 2
6: StackMap locals:
StackMap stack:
aload 2
aload 0
getfield org.h2.util.CacheLRU.head:Lorg/h2/util/CacheObject;
if_acmpne 3
7: aload 1
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 this Lorg/h2/util/CacheLRU;
1 8 1 list Ljava/util/ArrayList<Lorg/h2/util/CacheObject;>;
2 8 2 rec Lorg/h2/util/CacheObject;
Signature: ()Ljava/util/ArrayList<Lorg/h2/util/CacheObject;>;
public void setMaxMemory(int);
descriptor: (I)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=4, args_size=2
start local 0 start local 1 0: iload 1
i2l
ldc 1024
lmul
ldc 4
ldiv
lstore 2
start local 2 1: aload 0
lload 2
lconst_0
lcmp
ifge 2
lconst_0
goto 3
StackMap locals: org.h2.util.CacheLRU int long
StackMap stack: org.h2.util.CacheLRU
2: lload 2
StackMap locals: org.h2.util.CacheLRU int long
StackMap stack: org.h2.util.CacheLRU long
3: putfield org.h2.util.CacheLRU.maxMemory:J
4: aload 0
invokevirtual org.h2.util.CacheLRU.removeOldIfRequired:()V
5: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Lorg/h2/util/CacheLRU;
0 6 1 maxKb I
1 6 2 newSize J
MethodParameters:
Name Flags
maxKb
public int getMaxMemory();
descriptor: ()I
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=1, args_size=1
start local 0 0: aload 0
getfield org.h2.util.CacheLRU.maxMemory:J
ldc 4
lmul
ldc 1024
ldiv
l2i
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/h2/util/CacheLRU;
public int getMemory();
descriptor: ()I
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=1, args_size=1
start local 0 0: aload 0
getfield org.h2.util.CacheLRU.memory:J
ldc 4
lmul
ldc 1024
ldiv
l2i
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/h2/util/CacheLRU;
}
SourceFile: "CacheLRU.java"