public class org.h2.mvstore.tx.TransactionStore
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: org.h2.mvstore.tx.TransactionStore
super_class: java.lang.Object
{
final org.h2.mvstore.MVStore store;
descriptor: Lorg/h2/mvstore/MVStore;
flags: (0x0010) ACC_FINAL
private final int timeoutMillis;
descriptor: I
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final org.h2.mvstore.MVMap<java.lang.Integer, java.lang.Object[]> preparedTransactions;
descriptor: Lorg/h2/mvstore/MVMap;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
Signature: Lorg/h2/mvstore/MVMap<Ljava/lang/Integer;[Ljava/lang/Object;>;
final org.h2.mvstore.MVMap<java.lang.Long, java.lang.Object[]> undoLogs;
descriptor: [Lorg/h2/mvstore/MVMap;
flags: (0x0010) ACC_FINAL
Signature: [Lorg/h2/mvstore/MVMap<Ljava/lang/Long;[Ljava/lang/Object;>;
private final org.h2.mvstore.MVMap$Builder<java.lang.Long, java.lang.Object[]> undoLogBuilder;
descriptor: Lorg/h2/mvstore/MVMap$Builder;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
Signature: Lorg/h2/mvstore/MVMap$Builder<Ljava/lang/Long;[Ljava/lang/Object;>;
private final org.h2.mvstore.MVMap$Builder<java.lang.Object, org.h2.value.VersionedValue> mapBuilder;
descriptor: Lorg/h2/mvstore/MVMap$Builder;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
Signature: Lorg/h2/mvstore/MVMap$Builder<Ljava/lang/Object;Lorg/h2/value/VersionedValue;>;
final java.util.concurrent.atomic.AtomicReference<org.h2.mvstore.tx.VersionedBitSet> openTransactions;
descriptor: Ljava/util/concurrent/atomic/AtomicReference;
flags: (0x0010) ACC_FINAL
Signature: Ljava/util/concurrent/atomic/AtomicReference<Lorg/h2/mvstore/tx/VersionedBitSet;>;
final java.util.concurrent.atomic.AtomicReference<java.util.BitSet> committingTransactions;
descriptor: Ljava/util/concurrent/atomic/AtomicReference;
flags: (0x0010) ACC_FINAL
Signature: Ljava/util/concurrent/atomic/AtomicReference<Ljava/util/BitSet;>;
private boolean init;
descriptor: Z
flags: (0x0002) ACC_PRIVATE
private int maxTransactionId;
descriptor: I
flags: (0x0002) ACC_PRIVATE
private final java.util.concurrent.atomic.AtomicReferenceArray<org.h2.mvstore.tx.Transaction> transactions;
descriptor: Ljava/util/concurrent/atomic/AtomicReferenceArray;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
Signature: Ljava/util/concurrent/atomic/AtomicReferenceArray<Lorg/h2/mvstore/tx/Transaction;>;
private static final java.lang.String UNDO_LOG_NAME_PREFIX;
descriptor: Ljava/lang/String;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: "undoLog"
private static final char UNDO_LOG_COMMITTED;
descriptor: C
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 45
private static final char UNDO_LOG_OPEN;
descriptor: C
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 46
private static final int MAX_OPEN_TRANSACTIONS;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 65535
private static final int LOG_ID_BITS;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 40
private static final long LOG_ID_MASK;
descriptor: J
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 1099511627775
private static final org.h2.mvstore.tx.TransactionStore$RollbackListener ROLLBACK_LISTENER_NONE;
descriptor: Lorg/h2/mvstore/tx/TransactionStore$RollbackListener;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, 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=2, locals=0, args_size=0
0: ldc Lorg/h2/mvstore/tx/TransactionStore;
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 org.h2.mvstore.tx.TransactionStore.$assertionsDisabled:Z
3: new org.h2.mvstore.tx.TransactionStore$1
dup
invokespecial org.h2.mvstore.tx.TransactionStore$1.<init>:()V
putstatic org.h2.mvstore.tx.TransactionStore.ROLLBACK_LISTENER_NONE:Lorg/h2/mvstore/tx/TransactionStore$RollbackListener;
4: return
LocalVariableTable:
Start End Slot Name Signature
public static java.lang.String getUndoLogName(boolean, int);
descriptor: (ZI)Ljava/lang/String;
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=3, locals=2, args_size=2
start local 0 start local 1 0: new java.lang.StringBuilder
dup
ldc "undoLog"
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
1: iload 0
ifeq 2
bipush 45
goto 3
StackMap locals:
StackMap stack: java.lang.StringBuilder
2: bipush 46
StackMap locals: int int
StackMap stack: java.lang.StringBuilder int
3: invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
4: iload 1
ifle 5
iload 1
invokestatic java.lang.String.valueOf:(I)Ljava/lang/String;
goto 6
StackMap locals:
StackMap stack: java.lang.StringBuilder
5: ldc ""
StackMap locals: int int
StackMap stack: java.lang.StringBuilder java.lang.String
6: invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
7: invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 committed Z
0 8 1 transactionId I
MethodParameters:
Name Flags
committed
transactionId
public void <init>(org.h2.mvstore.MVStore);
descriptor: (Lorg/h2/mvstore/MVStore;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=2, args_size=2
start local 0 start local 1 0: aload 0
aload 1
new org.h2.mvstore.type.ObjectDataType
dup
invokespecial org.h2.mvstore.type.ObjectDataType.<init>:()V
iconst_0
invokespecial org.h2.mvstore.tx.TransactionStore.<init>:(Lorg/h2/mvstore/MVStore;Lorg/h2/mvstore/type/DataType;I)V
1: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lorg/h2/mvstore/tx/TransactionStore;
0 2 1 store Lorg/h2/mvstore/MVStore;
MethodParameters:
Name Flags
store
public void <init>(org.h2.mvstore.MVStore, org.h2.mvstore.type.DataType, int);
descriptor: (Lorg/h2/mvstore/MVStore;Lorg/h2/mvstore/type/DataType;I)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=7, locals=7, 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
ldc 65535
anewarray org.h2.mvstore.MVMap
putfield org.h2.mvstore.tx.TransactionStore.undoLogs:[Lorg/h2/mvstore/MVMap;
2: aload 0
new java.util.concurrent.atomic.AtomicReference
dup
new org.h2.mvstore.tx.VersionedBitSet
dup
invokespecial org.h2.mvstore.tx.VersionedBitSet.<init>:()V
invokespecial java.util.concurrent.atomic.AtomicReference.<init>:(Ljava/lang/Object;)V
putfield org.h2.mvstore.tx.TransactionStore.openTransactions:Ljava/util/concurrent/atomic/AtomicReference;
3: aload 0
new java.util.concurrent.atomic.AtomicReference
dup
new java.util.BitSet
dup
invokespecial java.util.BitSet.<init>:()V
invokespecial java.util.concurrent.atomic.AtomicReference.<init>:(Ljava/lang/Object;)V
putfield org.h2.mvstore.tx.TransactionStore.committingTransactions:Ljava/util/concurrent/atomic/AtomicReference;
4: aload 0
ldc 65535
putfield org.h2.mvstore.tx.TransactionStore.maxTransactionId:I
5: aload 0
6: new java.util.concurrent.atomic.AtomicReferenceArray
dup
ldc 65536
invokespecial java.util.concurrent.atomic.AtomicReferenceArray.<init>:(I)V
putfield org.h2.mvstore.tx.TransactionStore.transactions:Ljava/util/concurrent/atomic/AtomicReferenceArray;
7: aload 0
aload 1
putfield org.h2.mvstore.tx.TransactionStore.store:Lorg/h2/mvstore/MVStore;
8: aload 0
iload 3
putfield org.h2.mvstore.tx.TransactionStore.timeoutMillis:I
9: aload 0
aload 1
ldc "openTransactions"
10: new org.h2.mvstore.MVMap$Builder
dup
invokespecial org.h2.mvstore.MVMap$Builder.<init>:()V
11: invokevirtual org.h2.mvstore.MVStore.openMap:(Ljava/lang/String;Lorg/h2/mvstore/MVMap$MapBuilder;)Lorg/h2/mvstore/MVMap;
putfield org.h2.mvstore.tx.TransactionStore.preparedTransactions:Lorg/h2/mvstore/MVMap;
12: new org.h2.mvstore.tx.VersionedValueType
dup
aload 2
invokespecial org.h2.mvstore.tx.VersionedValueType.<init>:(Lorg/h2/mvstore/type/DataType;)V
astore 4
start local 4 13: new org.h2.mvstore.tx.TransactionStore$ArrayType
dup
iconst_3
anewarray org.h2.mvstore.type.DataType
dup
iconst_0
14: new org.h2.mvstore.type.ObjectDataType
dup
invokespecial org.h2.mvstore.type.ObjectDataType.<init>:()V
aastore
dup
iconst_1
aload 2
aastore
dup
iconst_2
aload 4
aastore
15: invokespecial org.h2.mvstore.tx.TransactionStore$ArrayType.<init>:([Lorg/h2/mvstore/type/DataType;)V
astore 5
start local 5 16: aload 0
new org.h2.mvstore.MVMap$Builder
dup
invokespecial org.h2.mvstore.MVMap$Builder.<init>:()V
17: invokevirtual org.h2.mvstore.MVMap$Builder.singleWriter:()Lorg/h2/mvstore/MVMap$Builder;
18: aload 5
invokevirtual org.h2.mvstore.MVMap$Builder.valueType:(Lorg/h2/mvstore/type/DataType;)Lorg/h2/mvstore/MVMap$Builder;
19: putfield org.h2.mvstore.tx.TransactionStore.undoLogBuilder:Lorg/h2/mvstore/MVMap$Builder;
20: new org.h2.mvstore.tx.VersionedValueType
dup
aload 2
invokespecial org.h2.mvstore.tx.VersionedValueType.<init>:(Lorg/h2/mvstore/type/DataType;)V
astore 6
start local 6 21: aload 0
new org.h2.mvstore.MVMap$Builder
dup
invokespecial org.h2.mvstore.MVMap$Builder.<init>:()V
22: aload 2
invokevirtual org.h2.mvstore.MVMap$Builder.keyType:(Lorg/h2/mvstore/type/DataType;)Lorg/h2/mvstore/MVMap$Builder;
aload 6
invokevirtual org.h2.mvstore.MVMap$Builder.valueType:(Lorg/h2/mvstore/type/DataType;)Lorg/h2/mvstore/MVMap$Builder;
23: putfield org.h2.mvstore.tx.TransactionStore.mapBuilder:Lorg/h2/mvstore/MVMap$Builder;
24: 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 25 0 this Lorg/h2/mvstore/tx/TransactionStore;
0 25 1 store Lorg/h2/mvstore/MVStore;
0 25 2 dataType Lorg/h2/mvstore/type/DataType;
0 25 3 timeoutMillis I
13 25 4 oldValueType Lorg/h2/mvstore/type/DataType;
16 25 5 undoLogValueType Lorg/h2/mvstore/tx/TransactionStore$ArrayType;
21 25 6 vt Lorg/h2/mvstore/type/DataType;
MethodParameters:
Name Flags
store
dataType
timeoutMillis
public void init();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=9, locals=13, args_size=1
start local 0 0: aload 0
getfield org.h2.mvstore.tx.TransactionStore.init:Z
ifne 39
1: aload 0
getfield org.h2.mvstore.tx.TransactionStore.store:Lorg/h2/mvstore/MVStore;
invokevirtual org.h2.mvstore.MVStore.getMapNames:()Ljava/util/Set;
invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
astore 2
goto 37
StackMap locals: org.h2.mvstore.tx.TransactionStore top java.util.Iterator
StackMap stack:
2: aload 2
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast java.lang.String
astore 1
start local 1 3: aload 1
ldc "undoLog"
invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
ifeq 37
4: aload 1
invokevirtual java.lang.String.length:()I
ldc "undoLog"
invokevirtual java.lang.String.length:()I
if_icmple 35
5: aload 1
ldc "undoLog"
invokevirtual java.lang.String.length:()I
invokevirtual java.lang.String.charAt:(I)C
bipush 45
if_icmpne 6
iconst_1
goto 7
StackMap locals: org.h2.mvstore.tx.TransactionStore java.lang.String java.util.Iterator
StackMap stack:
6: iconst_0
StackMap locals:
StackMap stack: int
7: istore 3
start local 3 8: aload 0
getfield org.h2.mvstore.tx.TransactionStore.store:Lorg/h2/mvstore/MVStore;
aload 1
invokevirtual org.h2.mvstore.MVStore.hasData:(Ljava/lang/String;)Z
ifne 9
iload 3
ifeq 35
9: StackMap locals: int
StackMap stack:
aload 1
ldc "undoLog"
invokevirtual java.lang.String.length:()I
iconst_1
iadd
10: aload 1
invokevirtual java.lang.String.length:()I
11: invokestatic org.h2.util.StringUtils.parseUInt31:(Ljava/lang/String;II)I
istore 4
start local 4 12: aload 0
getfield org.h2.mvstore.tx.TransactionStore.openTransactions:Ljava/util/concurrent/atomic/AtomicReference;
invokevirtual java.util.concurrent.atomic.AtomicReference.get:()Ljava/lang/Object;
checkcast org.h2.mvstore.tx.VersionedBitSet
astore 5
start local 5 13: aload 5
iload 4
invokevirtual org.h2.mvstore.tx.VersionedBitSet.get:(I)Z
ifne 35
14: aload 0
getfield org.h2.mvstore.tx.TransactionStore.preparedTransactions:Lorg/h2/mvstore/MVMap;
iload 4
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
invokevirtual org.h2.mvstore.MVMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast java.lang.Object[]
astore 6
start local 6 15: aload 6
ifnonnull 19
16: iconst_1
istore 7
start local 7 17: aconst_null
astore 8
start local 8 18: goto 21
end local 8 end local 7 19: StackMap locals: int org.h2.mvstore.tx.VersionedBitSet java.lang.Object[]
StackMap stack:
aload 6
iconst_0
aaload
checkcast java.lang.Integer
invokevirtual java.lang.Integer.intValue:()I
istore 7
start local 7 20: aload 6
iconst_1
aaload
checkcast java.lang.String
astore 8
start local 8 21: StackMap locals: int java.lang.String
StackMap stack:
iload 3
ifeq 23
22: iconst_3
istore 7
23: StackMap locals:
StackMap stack:
aload 0
getfield org.h2.mvstore.tx.TransactionStore.store:Lorg/h2/mvstore/MVStore;
aload 1
aload 0
getfield org.h2.mvstore.tx.TransactionStore.undoLogBuilder:Lorg/h2/mvstore/MVMap$Builder;
invokevirtual org.h2.mvstore.MVStore.openMap:(Ljava/lang/String;Lorg/h2/mvstore/MVMap$MapBuilder;)Lorg/h2/mvstore/MVMap;
astore 9
start local 9 24: aload 0
getfield org.h2.mvstore.tx.TransactionStore.undoLogs:[Lorg/h2/mvstore/MVMap;
iload 4
aload 9
aastore
25: aload 9
invokevirtual org.h2.mvstore.MVMap.lastKey:()Ljava/lang/Object;
checkcast java.lang.Long
astore 10
start local 10 26: getstatic org.h2.mvstore.tx.TransactionStore.$assertionsDisabled:Z
ifne 27
iload 3
ifne 27
aload 10
ifnonnull 27
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
27: StackMap locals: org.h2.mvstore.MVMap java.lang.Long
StackMap stack:
getstatic org.h2.mvstore.tx.TransactionStore.$assertionsDisabled:Z
ifne 28
iload 3
ifne 28
aload 10
invokevirtual java.lang.Long.longValue:()J
invokestatic org.h2.mvstore.tx.TransactionStore.getTransactionId:(J)I
iload 4
if_icmpeq 28
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
28: StackMap locals:
StackMap stack:
aload 10
ifnonnull 29
lconst_0
goto 30
StackMap locals:
StackMap stack:
29: aload 10
invokevirtual java.lang.Long.longValue:()J
invokestatic org.h2.mvstore.tx.TransactionStore.getLogId:(J)J
lconst_1
ladd
StackMap locals:
StackMap stack: long
30: lstore 11
start local 11 31: aload 0
iload 4
iload 7
aload 8
lload 11
aload 0
getfield org.h2.mvstore.tx.TransactionStore.timeoutMillis:I
iconst_0
32: getstatic org.h2.mvstore.tx.TransactionStore.ROLLBACK_LISTENER_NONE:Lorg/h2/mvstore/tx/TransactionStore$RollbackListener;
33: invokevirtual org.h2.mvstore.tx.TransactionStore.registerTransaction:(IILjava/lang/String;JIILorg/h2/mvstore/tx/TransactionStore$RollbackListener;)Lorg/h2/mvstore/tx/Transaction;
pop
34: goto 37
end local 11 end local 10 end local 9 end local 8 end local 7 end local 6 end local 5 end local 4 end local 3 35: StackMap locals: org.h2.mvstore.tx.TransactionStore java.lang.String java.util.Iterator
StackMap stack:
aload 0
getfield org.h2.mvstore.tx.TransactionStore.store:Lorg/h2/mvstore/MVStore;
invokevirtual org.h2.mvstore.MVStore.isReadOnly:()Z
ifne 37
36: aload 0
getfield org.h2.mvstore.tx.TransactionStore.store:Lorg/h2/mvstore/MVStore;
aload 1
invokevirtual org.h2.mvstore.MVStore.removeMap:(Ljava/lang/String;)V
end local 1 37: StackMap locals: org.h2.mvstore.tx.TransactionStore top java.util.Iterator
StackMap stack:
aload 2
invokeinterface java.util.Iterator.hasNext:()Z
ifne 2
38: aload 0
iconst_1
putfield org.h2.mvstore.tx.TransactionStore.init:Z
39: StackMap locals: org.h2.mvstore.tx.TransactionStore
StackMap stack:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 40 0 this Lorg/h2/mvstore/tx/TransactionStore;
3 37 1 mapName Ljava/lang/String;
8 35 3 committed Z
12 35 4 transactionId I
13 35 5 openTxBitSet Lorg/h2/mvstore/tx/VersionedBitSet;
15 35 6 data [Ljava/lang/Object;
17 19 7 status I
20 35 7 status I
18 19 8 name Ljava/lang/String;
21 35 8 name Ljava/lang/String;
24 35 9 undoLog Lorg/h2/mvstore/MVMap<Ljava/lang/Long;[Ljava/lang/Object;>;
26 35 10 lastUndoKey Ljava/lang/Long;
31 35 11 logId J
public void endLeftoverTransactions();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=5, args_size=1
start local 0 0: aload 0
invokevirtual org.h2.mvstore.tx.TransactionStore.getOpenTransactions:()Ljava/util/List;
astore 1
start local 1 1: aload 1
invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
astore 3
goto 9
StackMap locals: org.h2.mvstore.tx.TransactionStore java.util.List top java.util.Iterator
StackMap stack:
2: aload 3
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.h2.mvstore.tx.Transaction
astore 2
start local 2 3: aload 2
invokevirtual org.h2.mvstore.tx.Transaction.getStatus:()I
istore 4
start local 4 4: iload 4
iconst_3
if_icmpne 7
5: aload 2
invokevirtual org.h2.mvstore.tx.Transaction.commit:()V
6: goto 9
StackMap locals: org.h2.mvstore.tx.TransactionStore java.util.List org.h2.mvstore.tx.Transaction java.util.Iterator int
StackMap stack:
7: iload 4
iconst_2
if_icmpeq 9
8: aload 2
invokevirtual org.h2.mvstore.tx.Transaction.rollback:()V
end local 4 end local 2 9: StackMap locals: org.h2.mvstore.tx.TransactionStore java.util.List top java.util.Iterator
StackMap stack:
aload 3
invokeinterface java.util.Iterator.hasNext:()Z
ifne 2
10: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 11 0 this Lorg/h2/mvstore/tx/TransactionStore;
1 11 1 list Ljava/util/List<Lorg/h2/mvstore/tx/Transaction;>;
3 9 2 t Lorg/h2/mvstore/tx/Transaction;
4 9 4 status I
public void setMaxTransactionId(int);
descriptor: (I)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=6, locals=2, args_size=2
start local 0 start local 1 0: iload 1
ldc 65535
if_icmpgt 1
iconst_1
goto 2
StackMap locals:
StackMap stack:
1: iconst_0
2: StackMap locals:
StackMap stack: int
ldc "Concurrent transactions limit is too high: {0}"
iconst_1
anewarray java.lang.Object
dup
iconst_0
iload 1
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
aastore
3: invokestatic org.h2.mvstore.DataUtils.checkArgument:(ZLjava/lang/String;[Ljava/lang/Object;)V
4: aload 0
iload 1
putfield org.h2.mvstore.tx.TransactionStore.maxTransactionId:I
5: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Lorg/h2/mvstore/tx/TransactionStore;
0 6 1 max I
MethodParameters:
Name Flags
max
public boolean hasMap(java.lang.String);
descriptor: (Ljava/lang/String;)Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
getfield org.h2.mvstore.tx.TransactionStore.store:Lorg/h2/mvstore/MVStore;
aload 1
invokevirtual org.h2.mvstore.MVStore.hasMap:(Ljava/lang/String;)Z
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/h2/mvstore/tx/TransactionStore;
0 1 1 name Ljava/lang/String;
MethodParameters:
Name Flags
name
static long getOperationId(int, long);
descriptor: (IJ)J
flags: (0x0008) ACC_STATIC
Code:
stack=7, locals=3, args_size=2
start local 0 start local 1 0: iload 0
iflt 1
iload 0
ldc 16777216
if_icmpge 1
iconst_1
goto 2
StackMap locals:
StackMap stack:
1: iconst_0
2: StackMap locals:
StackMap stack: int
ldc "Transaction id out of range: {0}"
iconst_1
anewarray java.lang.Object
dup
iconst_0
iload 0
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
aastore
3: invokestatic org.h2.mvstore.DataUtils.checkArgument:(ZLjava/lang/String;[Ljava/lang/Object;)V
4: lload 1
lconst_0
lcmp
iflt 5
lload 1
ldc 1099511627775
lcmp
ifgt 5
iconst_1
goto 6
StackMap locals:
StackMap stack:
5: iconst_0
6: StackMap locals:
StackMap stack: int
ldc "Transaction log id out of range: {0}"
iconst_1
anewarray java.lang.Object
dup
iconst_0
lload 1
invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
aastore
7: invokestatic org.h2.mvstore.DataUtils.checkArgument:(ZLjava/lang/String;[Ljava/lang/Object;)V
8: iload 0
i2l
bipush 40
lshl
lload 1
lor
lreturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 9 0 transactionId I
0 9 1 logId J
MethodParameters:
Name Flags
transactionId
logId
static int getTransactionId(long);
descriptor: (J)I
flags: (0x0008) ACC_STATIC
Code:
stack=3, locals=2, args_size=1
start local 0 0: lload 0
bipush 40
lushr
l2i
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 operationId J
MethodParameters:
Name Flags
operationId
static long getLogId(long);
descriptor: (J)J
flags: (0x0008) ACC_STATIC
Code:
stack=4, locals=2, args_size=1
start local 0 0: lload 0
ldc 1099511627775
land
lreturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 operationId J
MethodParameters:
Name Flags
operationId
public java.util.List<org.h2.mvstore.tx.Transaction> getOpenTransactions();
descriptor: ()Ljava/util/List;
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=5, args_size=1
start local 0 0: aload 0
getfield org.h2.mvstore.tx.TransactionStore.init:Z
ifne 2
1: aload 0
invokevirtual org.h2.mvstore.tx.TransactionStore.init:()V
2: StackMap locals:
StackMap stack:
new java.util.ArrayList
dup
invokespecial java.util.ArrayList.<init>:()V
astore 1
start local 1 3: iconst_0
istore 2
start local 2 4: aload 0
getfield org.h2.mvstore.tx.TransactionStore.openTransactions:Ljava/util/concurrent/atomic/AtomicReference;
invokevirtual java.util.concurrent.atomic.AtomicReference.get:()Ljava/lang/Object;
checkcast java.util.BitSet
astore 3
start local 3 5: goto 10
6: StackMap locals: java.util.ArrayList int java.util.BitSet
StackMap stack:
aload 0
iload 2
invokevirtual org.h2.mvstore.tx.TransactionStore.getTransaction:(I)Lorg/h2/mvstore/tx/Transaction;
astore 4
start local 4 7: aload 4
ifnull 10
8: aload 4
invokevirtual org.h2.mvstore.tx.Transaction.getStatus:()I
ifeq 10
9: aload 1
aload 4
invokevirtual java.util.ArrayList.add:(Ljava/lang/Object;)Z
pop
end local 4 10: StackMap locals:
StackMap stack:
aload 3
iload 2
iconst_1
iadd
invokevirtual java.util.BitSet.nextSetBit:(I)I
dup
istore 2
ifgt 6
11: aload 1
areturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 12 0 this Lorg/h2/mvstore/tx/TransactionStore;
3 12 1 list Ljava/util/ArrayList<Lorg/h2/mvstore/tx/Transaction;>;
4 12 2 transactionId I
5 12 3 bitSet Ljava/util/BitSet;
7 10 4 transaction Lorg/h2/mvstore/tx/Transaction;
Signature: ()Ljava/util/List<Lorg/h2/mvstore/tx/Transaction;>;
public synchronized void close();
descriptor: ()V
flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
getfield org.h2.mvstore.tx.TransactionStore.store:Lorg/h2/mvstore/MVStore;
invokevirtual org.h2.mvstore.MVStore.commit:()J
pop2
1: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lorg/h2/mvstore/tx/TransactionStore;
public org.h2.mvstore.tx.Transaction begin();
descriptor: ()Lorg/h2/mvstore/tx/Transaction;
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=1, args_size=1
start local 0 0: aload 0
getstatic org.h2.mvstore.tx.TransactionStore.ROLLBACK_LISTENER_NONE:Lorg/h2/mvstore/tx/TransactionStore$RollbackListener;
aload 0
getfield org.h2.mvstore.tx.TransactionStore.timeoutMillis:I
iconst_0
invokevirtual org.h2.mvstore.tx.TransactionStore.begin:(Lorg/h2/mvstore/tx/TransactionStore$RollbackListener;II)Lorg/h2/mvstore/tx/Transaction;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/h2/mvstore/tx/TransactionStore;
public org.h2.mvstore.tx.Transaction begin(org.h2.mvstore.tx.TransactionStore$RollbackListener, int, int);
descriptor: (Lorg/h2/mvstore/tx/TransactionStore$RollbackListener;II)Lorg/h2/mvstore/tx/Transaction;
flags: (0x0001) ACC_PUBLIC
Code:
stack=9, locals=5, args_size=4
start local 0 start local 1 start local 2 start local 3 0: iload 2
ifgt 2
1: aload 0
getfield org.h2.mvstore.tx.TransactionStore.timeoutMillis:I
istore 2
2: StackMap locals:
StackMap stack:
aload 0
iconst_0
iconst_1
aconst_null
lconst_0
3: iload 2
iload 3
aload 1
4: invokevirtual org.h2.mvstore.tx.TransactionStore.registerTransaction:(IILjava/lang/String;JIILorg/h2/mvstore/tx/TransactionStore$RollbackListener;)Lorg/h2/mvstore/tx/Transaction;
astore 4
start local 4 5: 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 6 0 this Lorg/h2/mvstore/tx/TransactionStore;
0 6 1 listener Lorg/h2/mvstore/tx/TransactionStore$RollbackListener;
0 6 2 timeoutMillis I
0 6 3 ownerId I
5 6 4 transaction Lorg/h2/mvstore/tx/Transaction;
MethodParameters:
Name Flags
listener
timeoutMillis
ownerId
private org.h2.mvstore.tx.Transaction registerTransaction(int, int, java.lang.String, long, int, int, org.h2.mvstore.tx.TransactionStore$RollbackListener);
descriptor: (IILjava/lang/String;JIILorg/h2/mvstore/tx/TransactionStore$RollbackListener;)Lorg/h2/mvstore/tx/Transaction;
flags: (0x0002) ACC_PRIVATE
Code:
stack=13, locals=16, args_size=8
start local 0 start local 1 start local 2 start local 3 start local 4 start local 6 start local 7 start local 8 0: StackMap locals:
StackMap stack:
aload 0
getfield org.h2.mvstore.tx.TransactionStore.openTransactions:Ljava/util/concurrent/atomic/AtomicReference;
invokevirtual java.util.concurrent.atomic.AtomicReference.get:()Ljava/lang/Object;
checkcast org.h2.mvstore.tx.VersionedBitSet
astore 13
start local 13 1: iload 1
ifne 4
2: aload 13
iconst_1
invokevirtual org.h2.mvstore.tx.VersionedBitSet.nextClearBit:(I)I
istore 9
start local 9 3: goto 6
end local 9 4: StackMap locals: org.h2.mvstore.tx.TransactionStore int int java.lang.String long int int org.h2.mvstore.tx.TransactionStore$RollbackListener top top top top org.h2.mvstore.tx.VersionedBitSet
StackMap stack:
iload 1
istore 9
start local 9 5: getstatic org.h2.mvstore.tx.TransactionStore.$assertionsDisabled:Z
ifne 6
aload 13
iload 9
invokevirtual org.h2.mvstore.tx.VersionedBitSet.get:(I)Z
ifeq 6
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
6: StackMap locals: org.h2.mvstore.tx.TransactionStore int int java.lang.String long int int org.h2.mvstore.tx.TransactionStore$RollbackListener int top top top org.h2.mvstore.tx.VersionedBitSet
StackMap stack:
iload 9
aload 0
getfield org.h2.mvstore.tx.TransactionStore.maxTransactionId:I
if_icmple 11
7: bipush 102
8: ldc "There are {0} open transactions"
iconst_1
anewarray java.lang.Object
dup
iconst_0
9: iload 9
iconst_1
isub
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
aastore
10: invokestatic org.h2.mvstore.DataUtils.newIllegalStateException:(ILjava/lang/String;[Ljava/lang/Object;)Ljava/lang/IllegalStateException;
athrow
11: StackMap locals:
StackMap stack:
aload 13
invokevirtual org.h2.mvstore.tx.VersionedBitSet.clone:()Lorg/h2/mvstore/tx/VersionedBitSet;
astore 14
start local 14 12: aload 14
iload 9
invokevirtual org.h2.mvstore.tx.VersionedBitSet.set:(I)V
13: aload 14
invokevirtual org.h2.mvstore.tx.VersionedBitSet.getVersion:()J
lconst_1
ladd
lstore 10
start local 10 14: aload 14
lload 10
invokevirtual org.h2.mvstore.tx.VersionedBitSet.setVersion:(J)V
15: aload 0
getfield org.h2.mvstore.tx.TransactionStore.openTransactions:Ljava/util/concurrent/atomic/AtomicReference;
aload 13
aload 14
invokevirtual java.util.concurrent.atomic.AtomicReference.compareAndSet:(Ljava/lang/Object;Ljava/lang/Object;)Z
istore 12
end local 14 end local 13 start local 12 16: iload 12
ifeq 0
17: new org.h2.mvstore.tx.Transaction
dup
aload 0
iload 9
lload 10
iload 2
aload 3
lload 4
18: iload 6
iload 7
aload 8
19: invokespecial org.h2.mvstore.tx.Transaction.<init>:(Lorg/h2/mvstore/tx/TransactionStore;IJILjava/lang/String;JIILorg/h2/mvstore/tx/TransactionStore$RollbackListener;)V
astore 13
start local 13 20: getstatic org.h2.mvstore.tx.TransactionStore.$assertionsDisabled:Z
ifne 21
aload 0
getfield org.h2.mvstore.tx.TransactionStore.transactions:Ljava/util/concurrent/atomic/AtomicReferenceArray;
iload 9
invokevirtual java.util.concurrent.atomic.AtomicReferenceArray.get:(I)Ljava/lang/Object;
ifnull 21
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
21: StackMap locals: org.h2.mvstore.tx.TransactionStore int int java.lang.String long int int org.h2.mvstore.tx.TransactionStore$RollbackListener int long int org.h2.mvstore.tx.Transaction
StackMap stack:
aload 0
getfield org.h2.mvstore.tx.TransactionStore.transactions:Ljava/util/concurrent/atomic/AtomicReferenceArray;
iload 9
aload 13
invokevirtual java.util.concurrent.atomic.AtomicReferenceArray.set:(ILjava/lang/Object;)V
22: aload 0
getfield org.h2.mvstore.tx.TransactionStore.undoLogs:[Lorg/h2/mvstore/MVMap;
iload 9
aaload
ifnonnull 28
23: iload 2
iconst_3
if_icmpne 24
iconst_1
goto 25
StackMap locals:
StackMap stack:
24: iconst_0
StackMap locals:
StackMap stack: int
25: iload 9
invokestatic org.h2.mvstore.tx.TransactionStore.getUndoLogName:(ZI)Ljava/lang/String;
astore 14
start local 14 26: aload 0
getfield org.h2.mvstore.tx.TransactionStore.store:Lorg/h2/mvstore/MVStore;
aload 14
aload 0
getfield org.h2.mvstore.tx.TransactionStore.undoLogBuilder:Lorg/h2/mvstore/MVMap$Builder;
invokevirtual org.h2.mvstore.MVStore.openMap:(Ljava/lang/String;Lorg/h2/mvstore/MVMap$MapBuilder;)Lorg/h2/mvstore/MVMap;
astore 15
start local 15 27: aload 0
getfield org.h2.mvstore.tx.TransactionStore.undoLogs:[Lorg/h2/mvstore/MVMap;
iload 9
aload 15
aastore
end local 15 end local 14 28: StackMap locals:
StackMap stack:
aload 13
areturn
end local 13 end local 12 end local 10 end local 9 end local 8 end local 7 end local 6 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 29 0 this Lorg/h2/mvstore/tx/TransactionStore;
0 29 1 txId I
0 29 2 status I
0 29 3 name Ljava/lang/String;
0 29 4 logId J
0 29 6 timeoutMillis I
0 29 7 ownerId I
0 29 8 listener Lorg/h2/mvstore/tx/TransactionStore$RollbackListener;
3 4 9 transactionId I
5 29 9 transactionId I
14 29 10 sequenceNo J
16 29 12 success Z
1 16 13 original Lorg/h2/mvstore/tx/VersionedBitSet;
12 16 14 clone Lorg/h2/mvstore/tx/VersionedBitSet;
20 29 13 transaction Lorg/h2/mvstore/tx/Transaction;
26 28 14 undoName Ljava/lang/String;
27 28 15 undoLog Lorg/h2/mvstore/MVMap<Ljava/lang/Long;[Ljava/lang/Object;>;
MethodParameters:
Name Flags
txId
status
name
logId
timeoutMillis
ownerId
listener
void storeTransaction(org.h2.mvstore.tx.Transaction);
descriptor: (Lorg/h2/mvstore/tx/Transaction;)V
flags: (0x0000)
Code:
stack=4, locals=3, args_size=2
start local 0 start local 1 0: aload 1
invokevirtual org.h2.mvstore.tx.Transaction.getStatus:()I
iconst_2
if_icmpeq 2
1: aload 1
invokevirtual org.h2.mvstore.tx.Transaction.getName:()Ljava/lang/String;
ifnull 5
2: StackMap locals:
StackMap stack:
iconst_2
anewarray java.lang.Object
dup
iconst_0
aload 1
invokevirtual org.h2.mvstore.tx.Transaction.getStatus:()I
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
aastore
dup
iconst_1
aload 1
invokevirtual org.h2.mvstore.tx.Transaction.getName:()Ljava/lang/String;
aastore
astore 2
start local 2 3: aload 0
getfield org.h2.mvstore.tx.TransactionStore.preparedTransactions:Lorg/h2/mvstore/MVMap;
aload 1
invokevirtual org.h2.mvstore.tx.Transaction.getId:()I
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
aload 2
invokevirtual org.h2.mvstore.MVMap.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
4: aload 1
iconst_1
putfield org.h2.mvstore.tx.Transaction.wasStored:Z
end local 2 5: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Lorg/h2/mvstore/tx/TransactionStore;
0 6 1 t Lorg/h2/mvstore/tx/Transaction;
3 5 2 v [Ljava/lang/Object;
MethodParameters:
Name Flags
t
long addUndoLogRecord(int, long, java.lang.Object[]);
descriptor: (IJ[Ljava/lang/Object;)J
flags: (0x0000)
Code:
stack=6, locals=8, args_size=4
start local 0 start local 1 start local 2 start local 4 0: aload 0
getfield org.h2.mvstore.tx.TransactionStore.undoLogs:[Lorg/h2/mvstore/MVMap;
iload 1
aaload
astore 5
start local 5 1: iload 1
lload 2
invokestatic org.h2.mvstore.tx.TransactionStore.getOperationId:(IJ)J
lstore 6
start local 6 2: lload 2
lconst_0
lcmp
ifne 7
aload 5
invokevirtual org.h2.mvstore.MVMap.isEmpty:()Z
ifne 7
3: bipush 102
4: ldc "An old transaction with the same id is still open: {0}"
iconst_1
anewarray java.lang.Object
dup
iconst_0
5: iload 1
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
aastore
6: invokestatic org.h2.mvstore.DataUtils.newIllegalStateException:(ILjava/lang/String;[Ljava/lang/Object;)Ljava/lang/IllegalStateException;
athrow
7: StackMap locals: org.h2.mvstore.MVMap long
StackMap stack:
aload 5
lload 6
invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
aload 4
invokevirtual org.h2.mvstore.MVMap.append:(Ljava/lang/Object;Ljava/lang/Object;)V
8: lload 6
lreturn
end local 6 end local 5 end local 4 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 9 0 this Lorg/h2/mvstore/tx/TransactionStore;
0 9 1 transactionId I
0 9 2 logId J
0 9 4 undoLogRecord [Ljava/lang/Object;
1 9 5 undoLog Lorg/h2/mvstore/MVMap<Ljava/lang/Long;[Ljava/lang/Object;>;
2 9 6 undoKey J
MethodParameters:
Name Flags
transactionId
logId
undoLogRecord
void removeUndoLogRecord(int);
descriptor: (I)V
flags: (0x0000)
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
getfield org.h2.mvstore.tx.TransactionStore.undoLogs:[Lorg/h2/mvstore/MVMap;
iload 1
aaload
invokevirtual org.h2.mvstore.MVMap.trimLast:()V
1: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lorg/h2/mvstore/tx/TransactionStore;
0 2 1 transactionId I
MethodParameters:
Name Flags
transactionId
<K, V> void removeMap(org.h2.mvstore.tx.TransactionMap<K, V>);
descriptor: (Lorg/h2/mvstore/tx/TransactionMap;)V
flags: (0x0000)
Code:
stack=3, locals=2, args_size=2
start local 0 start local 1 0: aload 0
getfield org.h2.mvstore.tx.TransactionStore.store:Lorg/h2/mvstore/MVStore;
aload 1
getfield org.h2.mvstore.tx.TransactionMap.map:Lorg/h2/mvstore/MVMap;
iconst_0
invokevirtual org.h2.mvstore.MVStore.removeMap:(Lorg/h2/mvstore/MVMap;Z)V
1: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lorg/h2/mvstore/tx/TransactionStore;
0 2 1 map Lorg/h2/mvstore/tx/TransactionMap<TK;TV;>;
Signature: <K:Ljava/lang/Object;V:Ljava/lang/Object;>(Lorg/h2/mvstore/tx/TransactionMap<TK;TV;>;)V
MethodParameters:
Name Flags
map
void commit(org.h2.mvstore.tx.Transaction, boolean);
descriptor: (Lorg/h2/mvstore/tx/Transaction;Z)V
flags: (0x0000)
Code:
stack=4, locals=14, args_size=3
start local 0 start local 1 start local 2 0: aload 0
getfield org.h2.mvstore.tx.TransactionStore.store:Lorg/h2/mvstore/MVStore;
invokevirtual org.h2.mvstore.MVStore.isClosed:()Z
ifne 29
1: aload 1
getfield org.h2.mvstore.tx.Transaction.transactionId:I
istore 3
start local 3 2: aload 0
iload 3
iconst_1
invokevirtual org.h2.mvstore.tx.TransactionStore.flipCommittingTransactionsBit:(IZ)V
3: new org.h2.mvstore.tx.CommitDecisionMaker
dup
invokespecial org.h2.mvstore.tx.CommitDecisionMaker.<init>:()V
astore 4
start local 4 4: aload 0
getfield org.h2.mvstore.tx.TransactionStore.undoLogs:[Lorg/h2/mvstore/MVMap;
iload 3
aaload
astore 5
start local 5 5: iload 2
ifne 7
6: aload 0
getfield org.h2.mvstore.tx.TransactionStore.store:Lorg/h2/mvstore/MVStore;
aload 5
iconst_1
iload 3
invokestatic org.h2.mvstore.tx.TransactionStore.getUndoLogName:(ZI)Ljava/lang/String;
invokevirtual org.h2.mvstore.MVStore.renameMap:(Lorg/h2/mvstore/MVMap;Ljava/lang/String;)V
7: StackMap locals: int org.h2.mvstore.tx.CommitDecisionMaker org.h2.mvstore.MVMap
StackMap stack:
aload 5
aconst_null
invokevirtual org.h2.mvstore.MVMap.cursor:(Ljava/lang/Object;)Lorg/h2/mvstore/Cursor;
astore 6
start local 6 8: goto 17
9: StackMap locals: org.h2.mvstore.Cursor
StackMap stack:
aload 6
invokevirtual org.h2.mvstore.Cursor.next:()Ljava/lang/Object;
checkcast java.lang.Long
astore 7
start local 7 10: aload 6
invokevirtual org.h2.mvstore.Cursor.getValue:()Ljava/lang/Object;
checkcast java.lang.Object[]
astore 8
start local 8 11: aload 8
iconst_0
aaload
checkcast java.lang.Integer
invokevirtual java.lang.Integer.intValue:()I
istore 9
start local 9 12: aload 0
iload 9
invokevirtual org.h2.mvstore.tx.TransactionStore.openMap:(I)Lorg/h2/mvstore/MVMap;
astore 10
start local 10 13: aload 10
ifnull 17
14: aload 8
iconst_1
aaload
astore 11
start local 11 15: aload 4
aload 7
invokevirtual java.lang.Long.longValue:()J
invokevirtual org.h2.mvstore.tx.CommitDecisionMaker.setUndoKey:(J)V
16: aload 10
aload 11
getstatic org.h2.value.VersionedValue.DUMMY:Lorg/h2/value/VersionedValue;
aload 4
invokevirtual org.h2.mvstore.MVMap.operate:(Ljava/lang/Object;Ljava/lang/Object;Lorg/h2/mvstore/MVMap$DecisionMaker;)Ljava/lang/Object;
pop
end local 11 end local 10 end local 9 end local 8 end local 7 17: StackMap locals:
StackMap stack:
aload 6
invokevirtual org.h2.mvstore.Cursor.hasNext:()Z
ifne 9
18: aload 5
invokevirtual org.h2.mvstore.MVMap.clear:()V
end local 6 19: goto 23
StackMap locals: org.h2.mvstore.tx.TransactionStore org.h2.mvstore.tx.Transaction int int org.h2.mvstore.tx.CommitDecisionMaker org.h2.mvstore.MVMap
StackMap stack: java.lang.Throwable
20: astore 12
21: aload 0
getfield org.h2.mvstore.tx.TransactionStore.store:Lorg/h2/mvstore/MVStore;
aload 5
iconst_0
iload 3
invokestatic org.h2.mvstore.tx.TransactionStore.getUndoLogName:(ZI)Ljava/lang/String;
invokevirtual org.h2.mvstore.MVStore.renameMap:(Lorg/h2/mvstore/MVMap;Ljava/lang/String;)V
22: aload 12
athrow
23: StackMap locals:
StackMap stack:
aload 0
getfield org.h2.mvstore.tx.TransactionStore.store:Lorg/h2/mvstore/MVStore;
aload 5
iconst_0
iload 3
invokestatic org.h2.mvstore.tx.TransactionStore.getUndoLogName:(ZI)Ljava/lang/String;
invokevirtual org.h2.mvstore.MVStore.renameMap:(Lorg/h2/mvstore/MVMap;Ljava/lang/String;)V
end local 5 24: goto 28
StackMap locals: org.h2.mvstore.tx.TransactionStore org.h2.mvstore.tx.Transaction int int org.h2.mvstore.tx.CommitDecisionMaker
StackMap stack: java.lang.Throwable
25: astore 13
26: aload 0
iload 3
iconst_0
invokevirtual org.h2.mvstore.tx.TransactionStore.flipCommittingTransactionsBit:(IZ)V
27: aload 13
athrow
28: StackMap locals:
StackMap stack:
aload 0
iload 3
iconst_0
invokevirtual org.h2.mvstore.tx.TransactionStore.flipCommittingTransactionsBit:(IZ)V
end local 4 end local 3 29: StackMap locals:
StackMap stack:
return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 30 0 this Lorg/h2/mvstore/tx/TransactionStore;
0 30 1 t Lorg/h2/mvstore/tx/Transaction;
0 30 2 recovery Z
2 29 3 transactionId I
4 29 4 commitDecisionMaker Lorg/h2/mvstore/tx/CommitDecisionMaker;
5 24 5 undoLog Lorg/h2/mvstore/MVMap<Ljava/lang/Long;[Ljava/lang/Object;>;
8 19 6 cursor Lorg/h2/mvstore/Cursor<Ljava/lang/Long;[Ljava/lang/Object;>;
10 17 7 undoKey Ljava/lang/Long;
11 17 8 op [Ljava/lang/Object;
12 17 9 mapId I
13 17 10 map Lorg/h2/mvstore/MVMap<Ljava/lang/Object;Lorg/h2/value/VersionedValue;>;
15 17 11 key Ljava/lang/Object;
Exception table:
from to target type
7 20 20 any
4 25 25 any
MethodParameters:
Name Flags
t
recovery
private void flipCommittingTransactionsBit(int, boolean);
descriptor: (IZ)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=6, args_size=3
start local 0 start local 1 start local 2 0: StackMap locals:
StackMap stack:
aload 0
getfield org.h2.mvstore.tx.TransactionStore.committingTransactions:Ljava/util/concurrent/atomic/AtomicReference;
invokevirtual java.util.concurrent.atomic.AtomicReference.get:()Ljava/lang/Object;
checkcast java.util.BitSet
astore 4
start local 4 1: getstatic org.h2.mvstore.tx.TransactionStore.$assertionsDisabled:Z
ifne 5
aload 4
iload 1
invokevirtual java.util.BitSet.get:(I)Z
iload 2
if_icmpne 5
2: new java.lang.AssertionError
dup
iload 2
ifeq 3
ldc "Double commit"
goto 4
StackMap locals: org.h2.mvstore.tx.TransactionStore int int top java.util.BitSet
StackMap stack: new 2 new 2
3: ldc "Mysterious bit's disappearance"
StackMap locals: org.h2.mvstore.tx.TransactionStore int int top java.util.BitSet
StackMap stack: new 2 new 2 java.lang.String
4: invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
5: StackMap locals:
StackMap stack:
aload 4
invokevirtual java.util.BitSet.clone:()Ljava/lang/Object;
checkcast java.util.BitSet
astore 5
start local 5 6: aload 5
iload 1
iload 2
invokevirtual java.util.BitSet.set:(IZ)V
7: aload 0
getfield org.h2.mvstore.tx.TransactionStore.committingTransactions:Ljava/util/concurrent/atomic/AtomicReference;
aload 4
aload 5
invokevirtual java.util.concurrent.atomic.AtomicReference.compareAndSet:(Ljava/lang/Object;Ljava/lang/Object;)Z
istore 3
end local 5 end local 4 start local 3 8: iload 3
ifeq 0
9: return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 10 0 this Lorg/h2/mvstore/tx/TransactionStore;
0 10 1 transactionId I
0 10 2 flag Z
8 10 3 success Z
1 8 4 original Ljava/util/BitSet;
6 8 5 clone Ljava/util/BitSet;
MethodParameters:
Name Flags
transactionId
flag
<K> org.h2.mvstore.MVMap<K, org.h2.value.VersionedValue> openMap(java.lang.String, org.h2.mvstore.type.DataType, org.h2.mvstore.type.DataType);
descriptor: (Ljava/lang/String;Lorg/h2/mvstore/type/DataType;Lorg/h2/mvstore/type/DataType;)Lorg/h2/mvstore/MVMap;
flags: (0x0000)
Code:
stack=3, locals=7, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 2
ifnonnull 2
1: new org.h2.mvstore.type.ObjectDataType
dup
invokespecial org.h2.mvstore.type.ObjectDataType.<init>:()V
astore 2
2: StackMap locals:
StackMap stack:
aload 3
ifnonnull 4
3: new org.h2.mvstore.type.ObjectDataType
dup
invokespecial org.h2.mvstore.type.ObjectDataType.<init>:()V
astore 3
4: StackMap locals:
StackMap stack:
new org.h2.mvstore.tx.VersionedValueType
dup
aload 3
invokespecial org.h2.mvstore.tx.VersionedValueType.<init>:(Lorg/h2/mvstore/type/DataType;)V
astore 4
start local 4 5: new org.h2.mvstore.MVMap$Builder
dup
invokespecial org.h2.mvstore.MVMap$Builder.<init>:()V
6: aload 2
invokevirtual org.h2.mvstore.MVMap$Builder.keyType:(Lorg/h2/mvstore/type/DataType;)Lorg/h2/mvstore/MVMap$Builder;
aload 4
invokevirtual org.h2.mvstore.MVMap$Builder.valueType:(Lorg/h2/mvstore/type/DataType;)Lorg/h2/mvstore/MVMap$Builder;
7: astore 6
start local 6 8: aload 0
getfield org.h2.mvstore.tx.TransactionStore.store:Lorg/h2/mvstore/MVStore;
aload 1
aload 6
invokevirtual org.h2.mvstore.MVStore.openMap:(Ljava/lang/String;Lorg/h2/mvstore/MVMap$MapBuilder;)Lorg/h2/mvstore/MVMap;
astore 5
start local 5 9: aload 5
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 10 0 this Lorg/h2/mvstore/tx/TransactionStore;
0 10 1 name Ljava/lang/String;
0 10 2 keyType Lorg/h2/mvstore/type/DataType;
0 10 3 valueType Lorg/h2/mvstore/type/DataType;
5 10 4 vt Lorg/h2/mvstore/tx/VersionedValueType;
9 10 5 map Lorg/h2/mvstore/MVMap<TK;Lorg/h2/value/VersionedValue;>;
8 10 6 builder Lorg/h2/mvstore/MVMap$Builder<TK;Lorg/h2/value/VersionedValue;>;
Signature: <K:Ljava/lang/Object;>(Ljava/lang/String;Lorg/h2/mvstore/type/DataType;Lorg/h2/mvstore/type/DataType;)Lorg/h2/mvstore/MVMap<TK;Lorg/h2/value/VersionedValue;>;
MethodParameters:
Name Flags
name
keyType
valueType
org.h2.mvstore.MVMap<java.lang.Object, org.h2.value.VersionedValue> openMap(int);
descriptor: (I)Lorg/h2/mvstore/MVMap;
flags: (0x0000)
Code:
stack=3, locals=4, args_size=2
start local 0 start local 1 0: aload 0
getfield org.h2.mvstore.tx.TransactionStore.store:Lorg/h2/mvstore/MVStore;
iload 1
invokevirtual org.h2.mvstore.MVStore.getMap:(I)Lorg/h2/mvstore/MVMap;
astore 2
start local 2 1: aload 2
ifnonnull 6
2: aload 0
getfield org.h2.mvstore.tx.TransactionStore.store:Lorg/h2/mvstore/MVStore;
iload 1
invokevirtual org.h2.mvstore.MVStore.getMapName:(I)Ljava/lang/String;
astore 3
start local 3 3: aload 3
ifnonnull 5
4: aconst_null
areturn
5: StackMap locals: org.h2.mvstore.MVMap java.lang.String
StackMap stack:
aload 0
getfield org.h2.mvstore.tx.TransactionStore.store:Lorg/h2/mvstore/MVStore;
aload 3
aload 0
getfield org.h2.mvstore.tx.TransactionStore.mapBuilder:Lorg/h2/mvstore/MVMap$Builder;
invokevirtual org.h2.mvstore.MVStore.openMap:(Ljava/lang/String;Lorg/h2/mvstore/MVMap$MapBuilder;)Lorg/h2/mvstore/MVMap;
astore 2
end local 3 6: StackMap locals:
StackMap stack:
aload 2
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 this Lorg/h2/mvstore/tx/TransactionStore;
0 7 1 mapId I
1 7 2 map Lorg/h2/mvstore/MVMap<Ljava/lang/Object;Lorg/h2/value/VersionedValue;>;
3 6 3 mapName Ljava/lang/String;
Signature: (I)Lorg/h2/mvstore/MVMap<Ljava/lang/Object;Lorg/h2/value/VersionedValue;>;
MethodParameters:
Name Flags
mapId
void endTransaction(org.h2.mvstore.tx.Transaction, boolean);
descriptor: (Lorg/h2/mvstore/tx/Transaction;Z)V
flags: (0x0000)
Code:
stack=3, locals=8, args_size=3
start local 0 start local 1 start local 2 0: aload 1
invokevirtual org.h2.mvstore.tx.Transaction.closeIt:()V
1: aload 1
getfield org.h2.mvstore.tx.Transaction.transactionId:I
istore 3
start local 3 2: aload 0
getfield org.h2.mvstore.tx.TransactionStore.transactions:Ljava/util/concurrent/atomic/AtomicReferenceArray;
iload 3
aconst_null
invokevirtual java.util.concurrent.atomic.AtomicReferenceArray.set:(ILjava/lang/Object;)V
3: StackMap locals: int
StackMap stack:
aload 0
getfield org.h2.mvstore.tx.TransactionStore.openTransactions:Ljava/util/concurrent/atomic/AtomicReference;
invokevirtual java.util.concurrent.atomic.AtomicReference.get:()Ljava/lang/Object;
checkcast org.h2.mvstore.tx.VersionedBitSet
astore 5
start local 5 4: getstatic org.h2.mvstore.tx.TransactionStore.$assertionsDisabled:Z
ifne 5
aload 5
iload 3
invokevirtual org.h2.mvstore.tx.VersionedBitSet.get:(I)Z
ifne 5
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
5: StackMap locals: org.h2.mvstore.tx.TransactionStore org.h2.mvstore.tx.Transaction int int top org.h2.mvstore.tx.VersionedBitSet
StackMap stack:
aload 5
invokevirtual org.h2.mvstore.tx.VersionedBitSet.clone:()Lorg/h2/mvstore/tx/VersionedBitSet;
astore 6
start local 6 6: aload 6
iload 3
invokevirtual org.h2.mvstore.tx.VersionedBitSet.clear:(I)V
7: aload 0
getfield org.h2.mvstore.tx.TransactionStore.openTransactions:Ljava/util/concurrent/atomic/AtomicReference;
aload 5
aload 6
invokevirtual java.util.concurrent.atomic.AtomicReference.compareAndSet:(Ljava/lang/Object;Ljava/lang/Object;)Z
istore 4
end local 6 end local 5 start local 4 8: iload 4
ifeq 3
9: iload 2
ifeq 21
10: aload 1
getfield org.h2.mvstore.tx.Transaction.wasStored:Z
istore 5
start local 5 11: iload 5
ifeq 13
aload 0
getfield org.h2.mvstore.tx.TransactionStore.preparedTransactions:Lorg/h2/mvstore/MVMap;
invokevirtual org.h2.mvstore.MVMap.isClosed:()Z
ifne 13
12: aload 0
getfield org.h2.mvstore.tx.TransactionStore.preparedTransactions:Lorg/h2/mvstore/MVMap;
iload 3
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
invokevirtual org.h2.mvstore.MVMap.remove:(Ljava/lang/Object;)Ljava/lang/Object;
pop
13: StackMap locals: org.h2.mvstore.tx.TransactionStore org.h2.mvstore.tx.Transaction int int int int
StackMap stack:
iload 5
ifne 14
aload 0
getfield org.h2.mvstore.tx.TransactionStore.store:Lorg/h2/mvstore/MVStore;
invokevirtual org.h2.mvstore.MVStore.getAutoCommitDelay:()I
ifne 16
14: StackMap locals:
StackMap stack:
aload 0
getfield org.h2.mvstore.tx.TransactionStore.store:Lorg/h2/mvstore/MVStore;
invokevirtual org.h2.mvstore.MVStore.tryCommit:()J
pop2
15: goto 21
16: StackMap locals:
StackMap stack:
aload 0
invokevirtual org.h2.mvstore.tx.TransactionStore.isUndoEmpty:()Z
ifeq 21
17: aload 0
getfield org.h2.mvstore.tx.TransactionStore.store:Lorg/h2/mvstore/MVStore;
invokevirtual org.h2.mvstore.MVStore.getUnsavedMemory:()I
istore 6
start local 6 18: aload 0
getfield org.h2.mvstore.tx.TransactionStore.store:Lorg/h2/mvstore/MVStore;
invokevirtual org.h2.mvstore.MVStore.getAutoCommitMemory:()I
istore 7
start local 7 19: iload 6
iconst_4
imul
iload 7
iconst_3
imul
if_icmple 21
20: aload 0
getfield org.h2.mvstore.tx.TransactionStore.store:Lorg/h2/mvstore/MVStore;
invokevirtual org.h2.mvstore.MVStore.tryCommit:()J
pop2
end local 7 end local 6 end local 5 21: StackMap locals:
StackMap stack:
return
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 22 0 this Lorg/h2/mvstore/tx/TransactionStore;
0 22 1 t Lorg/h2/mvstore/tx/Transaction;
0 22 2 hasChanges Z
2 22 3 txId I
8 22 4 success Z
4 8 5 original Lorg/h2/mvstore/tx/VersionedBitSet;
6 8 6 clone Lorg/h2/mvstore/tx/VersionedBitSet;
11 21 5 wasStored Z
18 21 6 unsaved I
19 21 7 max I
MethodParameters:
Name Flags
t
hasChanges
private boolean isUndoEmpty();
descriptor: ()Z
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=4, args_size=1
start local 0 0: aload 0
getfield org.h2.mvstore.tx.TransactionStore.openTransactions:Ljava/util/concurrent/atomic/AtomicReference;
invokevirtual java.util.concurrent.atomic.AtomicReference.get:()Ljava/lang/Object;
checkcast java.util.BitSet
astore 1
start local 1 1: aload 1
iconst_0
invokevirtual java.util.BitSet.nextSetBit:(I)I
istore 2
start local 2 2: goto 7
3: StackMap locals: java.util.BitSet int
StackMap stack:
aload 0
getfield org.h2.mvstore.tx.TransactionStore.undoLogs:[Lorg/h2/mvstore/MVMap;
iload 2
aaload
astore 3
start local 3 4: aload 3
ifnull 6
aload 3
invokevirtual org.h2.mvstore.MVMap.isEmpty:()Z
ifne 6
5: iconst_0
ireturn
end local 3 6: StackMap locals:
StackMap stack:
aload 1
iload 2
iconst_1
iadd
invokevirtual java.util.BitSet.nextSetBit:(I)I
istore 2
StackMap locals:
StackMap stack:
7: iload 2
ifge 3
end local 2 8: iconst_1
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 9 0 this Lorg/h2/mvstore/tx/TransactionStore;
1 9 1 openTrans Ljava/util/BitSet;
2 8 2 i I
4 6 3 undoLog Lorg/h2/mvstore/MVMap<Ljava/lang/Long;[Ljava/lang/Object;>;
org.h2.mvstore.tx.Transaction getTransaction(int);
descriptor: (I)Lorg/h2/mvstore/tx/Transaction;
flags: (0x0000)
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
getfield org.h2.mvstore.tx.TransactionStore.transactions:Ljava/util/concurrent/atomic/AtomicReferenceArray;
iload 1
invokevirtual java.util.concurrent.atomic.AtomicReferenceArray.get:(I)Ljava/lang/Object;
checkcast org.h2.mvstore.tx.Transaction
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/h2/mvstore/tx/TransactionStore;
0 1 1 transactionId I
MethodParameters:
Name Flags
transactionId
void rollbackTo(org.h2.mvstore.tx.Transaction, long, long);
descriptor: (Lorg/h2/mvstore/tx/Transaction;JJ)V
flags: (0x0000)
Code:
stack=8, locals=12, args_size=4
start local 0 start local 1 start local 2 start local 4 0: aload 1
invokevirtual org.h2.mvstore.tx.Transaction.getId:()I
istore 6
start local 6 1: aload 0
getfield org.h2.mvstore.tx.TransactionStore.undoLogs:[Lorg/h2/mvstore/MVMap;
iload 6
aaload
astore 7
start local 7 2: new org.h2.mvstore.tx.RollbackDecisionMaker
dup
aload 0
iload 6
i2l
lload 4
aload 1
getfield org.h2.mvstore.tx.Transaction.listener:Lorg/h2/mvstore/tx/TransactionStore$RollbackListener;
invokespecial org.h2.mvstore.tx.RollbackDecisionMaker.<init>:(Lorg/h2/mvstore/tx/TransactionStore;JJLorg/h2/mvstore/tx/TransactionStore$RollbackListener;)V
astore 8
start local 8 3: lload 2
lconst_1
lsub
lstore 9
start local 9 4: goto 9
5: StackMap locals: org.h2.mvstore.tx.TransactionStore org.h2.mvstore.tx.Transaction long long int org.h2.mvstore.MVMap org.h2.mvstore.tx.RollbackDecisionMaker long
StackMap stack:
iload 6
lload 9
invokestatic org.h2.mvstore.tx.TransactionStore.getOperationId:(IJ)J
invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
astore 11
start local 11 6: aload 7
aload 11
aconst_null
aload 8
invokevirtual org.h2.mvstore.MVMap.operate:(Ljava/lang/Object;Ljava/lang/Object;Lorg/h2/mvstore/MVMap$DecisionMaker;)Ljava/lang/Object;
pop
7: aload 8
invokevirtual org.h2.mvstore.tx.RollbackDecisionMaker.reset:()V
end local 11 8: lload 9
lconst_1
lsub
lstore 9
StackMap locals:
StackMap stack:
9: lload 9
lload 4
lcmp
ifge 5
end local 9 10: return
end local 8 end local 7 end local 6 end local 4 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 11 0 this Lorg/h2/mvstore/tx/TransactionStore;
0 11 1 t Lorg/h2/mvstore/tx/Transaction;
0 11 2 maxLogId J
0 11 4 toLogId J
1 11 6 transactionId I
2 11 7 undoLog Lorg/h2/mvstore/MVMap<Ljava/lang/Long;[Ljava/lang/Object;>;
3 11 8 decisionMaker Lorg/h2/mvstore/tx/RollbackDecisionMaker;
4 10 9 logId J
6 8 11 undoKey Ljava/lang/Long;
MethodParameters:
Name Flags
t
maxLogId
toLogId
java.util.Iterator<org.h2.mvstore.tx.TransactionStore$Change> getChanges(org.h2.mvstore.tx.Transaction, long, long);
descriptor: (Lorg/h2/mvstore/tx/Transaction;JJ)Ljava/util/Iterator;
flags: (0x0000)
Code:
stack=9, locals=7, args_size=4
start local 0 start local 1 start local 2 start local 4 0: aload 0
getfield org.h2.mvstore.tx.TransactionStore.undoLogs:[Lorg/h2/mvstore/MVMap;
aload 1
invokevirtual org.h2.mvstore.tx.Transaction.getId:()I
aaload
astore 6
start local 6 1: new org.h2.mvstore.tx.TransactionStore$2
dup
aload 0
lload 2
aload 1
lload 4
aload 6
invokespecial org.h2.mvstore.tx.TransactionStore$2.<init>:(Lorg/h2/mvstore/tx/TransactionStore;JLorg/h2/mvstore/tx/Transaction;JLorg/h2/mvstore/MVMap;)V
areturn
end local 6 end local 4 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lorg/h2/mvstore/tx/TransactionStore;
0 2 1 t Lorg/h2/mvstore/tx/Transaction;
0 2 2 maxLogId J
0 2 4 toLogId J
1 2 6 undoLog Lorg/h2/mvstore/MVMap<Ljava/lang/Long;[Ljava/lang/Object;>;
Signature: (Lorg/h2/mvstore/tx/Transaction;JJ)Ljava/util/Iterator<Lorg/h2/mvstore/tx/TransactionStore$Change;>;
MethodParameters:
Name Flags
t final
maxLogId final
toLogId final
}
SourceFile: "TransactionStore.java"
NestMembers:
org.h2.mvstore.tx.TransactionStore$1 org.h2.mvstore.tx.TransactionStore$2 org.h2.mvstore.tx.TransactionStore$ArrayType org.h2.mvstore.tx.TransactionStore$Change org.h2.mvstore.tx.TransactionStore$RollbackListener
InnerClasses:
public Builder = org.h2.mvstore.MVMap$Builder of org.h2.mvstore.MVMap
public abstract DecisionMaker = org.h2.mvstore.MVMap$DecisionMaker of org.h2.mvstore.MVMap
public abstract MapBuilder = org.h2.mvstore.MVMap$MapBuilder of org.h2.mvstore.MVMap
org.h2.mvstore.tx.TransactionStore$1
org.h2.mvstore.tx.TransactionStore$2
public ArrayType = org.h2.mvstore.tx.TransactionStore$ArrayType of org.h2.mvstore.tx.TransactionStore
public Change = org.h2.mvstore.tx.TransactionStore$Change of org.h2.mvstore.tx.TransactionStore
public abstract RollbackListener = org.h2.mvstore.tx.TransactionStore$RollbackListener of org.h2.mvstore.tx.TransactionStore