public class org.h2.mvstore.Cursor<K, V> implements java.util.Iterator<K>
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: org.h2.mvstore.Cursor
super_class: java.lang.Object
{
private final K to;
descriptor: Ljava/lang/Object;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
Signature: TK;
private org.h2.mvstore.CursorPos cursorPos;
descriptor: Lorg/h2/mvstore/CursorPos;
flags: (0x0002) ACC_PRIVATE
private org.h2.mvstore.CursorPos keeper;
descriptor: Lorg/h2/mvstore/CursorPos;
flags: (0x0002) ACC_PRIVATE
private K current;
descriptor: Ljava/lang/Object;
flags: (0x0002) ACC_PRIVATE
Signature: TK;
private K last;
descriptor: Ljava/lang/Object;
flags: (0x0002) ACC_PRIVATE
Signature: TK;
private V lastValue;
descriptor: Ljava/lang/Object;
flags: (0x0002) ACC_PRIVATE
Signature: TV;
private org.h2.mvstore.Page lastPage;
descriptor: Lorg/h2/mvstore/Page;
flags: (0x0002) ACC_PRIVATE
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=1, locals=0, args_size=0
0: ldc Lorg/h2/mvstore/Cursor;
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.Cursor.$assertionsDisabled:Z
return
LocalVariableTable:
Start End Slot Name Signature
public void <init>(org.h2.mvstore.Page, );
descriptor: (Lorg/h2/mvstore/Page;Ljava/lang/Object;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 0
aload 1
aload 2
aconst_null
invokespecial org.h2.mvstore.Cursor.<init>:(Lorg/h2/mvstore/Page;Ljava/lang/Object;Ljava/lang/Object;)V
1: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lorg/h2/mvstore/Cursor<TK;TV;>;
0 2 1 root Lorg/h2/mvstore/Page;
0 2 2 from TK;
Signature: (Lorg/h2/mvstore/Page;TK;)V
MethodParameters:
Name Flags
root
from
public void <init>(org.h2.mvstore.Page, K, );
descriptor: (Lorg/h2/mvstore/Page;Ljava/lang/Object;Ljava/lang/Object;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=4, 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
aload 1
aload 2
invokestatic org.h2.mvstore.Cursor.traverseDown:(Lorg/h2/mvstore/Page;Ljava/lang/Object;)Lorg/h2/mvstore/CursorPos;
putfield org.h2.mvstore.Cursor.cursorPos:Lorg/h2/mvstore/CursorPos;
2: aload 0
aload 3
putfield org.h2.mvstore.Cursor.to:Ljava/lang/Object;
3: return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lorg/h2/mvstore/Cursor<TK;TV;>;
0 4 1 root Lorg/h2/mvstore/Page;
0 4 2 from TK;
0 4 3 to TK;
Signature: (Lorg/h2/mvstore/Page;TK;TK;)V
MethodParameters:
Name Flags
root
from
to
public boolean hasNext();
descriptor: ()Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=6, locals=4, args_size=1
start local 0 0: aload 0
getfield org.h2.mvstore.Cursor.cursorPos:Lorg/h2/mvstore/CursorPos;
ifnull 33
1: goto 32
2: StackMap locals:
StackMap stack:
aload 0
getfield org.h2.mvstore.Cursor.cursorPos:Lorg/h2/mvstore/CursorPos;
getfield org.h2.mvstore.CursorPos.page:Lorg/h2/mvstore/Page;
astore 1
start local 1 3: aload 0
getfield org.h2.mvstore.Cursor.cursorPos:Lorg/h2/mvstore/CursorPos;
getfield org.h2.mvstore.CursorPos.index:I
istore 2
start local 2 4: iload 2
aload 1
invokevirtual org.h2.mvstore.Page.isLeaf:()Z
ifeq 5
aload 1
invokevirtual org.h2.mvstore.Page.getKeyCount:()I
goto 6
StackMap locals: org.h2.mvstore.Cursor org.h2.mvstore.Page int
StackMap stack: int
5: aload 1
getfield org.h2.mvstore.Page.map:Lorg/h2/mvstore/MVMap;
aload 1
invokevirtual org.h2.mvstore.MVMap.getChildPageCount:(Lorg/h2/mvstore/Page;)I
StackMap locals: org.h2.mvstore.Cursor org.h2.mvstore.Page int
StackMap stack: int int
6: if_icmplt 24
7: aload 0
getfield org.h2.mvstore.Cursor.cursorPos:Lorg/h2/mvstore/CursorPos;
astore 3
start local 3 8: aload 0
aload 0
getfield org.h2.mvstore.Cursor.cursorPos:Lorg/h2/mvstore/CursorPos;
getfield org.h2.mvstore.CursorPos.parent:Lorg/h2/mvstore/CursorPos;
putfield org.h2.mvstore.Cursor.cursorPos:Lorg/h2/mvstore/CursorPos;
9: aload 3
aload 0
getfield org.h2.mvstore.Cursor.keeper:Lorg/h2/mvstore/CursorPos;
putfield org.h2.mvstore.CursorPos.parent:Lorg/h2/mvstore/CursorPos;
10: aload 0
aload 3
putfield org.h2.mvstore.Cursor.keeper:Lorg/h2/mvstore/CursorPos;
11: aload 0
getfield org.h2.mvstore.Cursor.cursorPos:Lorg/h2/mvstore/CursorPos;
ifnonnull 31
12: iconst_0
ireturn
end local 3 13: StackMap locals:
StackMap stack:
aload 1
iload 2
invokevirtual org.h2.mvstore.Page.getChildPage:(I)Lorg/h2/mvstore/Page;
astore 1
14: aload 0
getfield org.h2.mvstore.Cursor.keeper:Lorg/h2/mvstore/CursorPos;
ifnonnull 17
15: aload 0
new org.h2.mvstore.CursorPos
dup
aload 1
iconst_0
aload 0
getfield org.h2.mvstore.Cursor.cursorPos:Lorg/h2/mvstore/CursorPos;
invokespecial org.h2.mvstore.CursorPos.<init>:(Lorg/h2/mvstore/Page;ILorg/h2/mvstore/CursorPos;)V
putfield org.h2.mvstore.Cursor.cursorPos:Lorg/h2/mvstore/CursorPos;
16: goto 23
17: StackMap locals:
StackMap stack:
aload 0
getfield org.h2.mvstore.Cursor.keeper:Lorg/h2/mvstore/CursorPos;
astore 3
start local 3 18: aload 0
aload 0
getfield org.h2.mvstore.Cursor.keeper:Lorg/h2/mvstore/CursorPos;
getfield org.h2.mvstore.CursorPos.parent:Lorg/h2/mvstore/CursorPos;
putfield org.h2.mvstore.Cursor.keeper:Lorg/h2/mvstore/CursorPos;
19: aload 3
aload 0
getfield org.h2.mvstore.Cursor.cursorPos:Lorg/h2/mvstore/CursorPos;
putfield org.h2.mvstore.CursorPos.parent:Lorg/h2/mvstore/CursorPos;
20: aload 3
aload 1
putfield org.h2.mvstore.CursorPos.page:Lorg/h2/mvstore/Page;
21: aload 3
iconst_0
putfield org.h2.mvstore.CursorPos.index:I
22: aload 0
aload 3
putfield org.h2.mvstore.Cursor.cursorPos:Lorg/h2/mvstore/CursorPos;
end local 3 23: StackMap locals:
StackMap stack:
iconst_0
istore 2
24: StackMap locals:
StackMap stack:
aload 1
invokevirtual org.h2.mvstore.Page.isLeaf:()Z
ifeq 13
25: aload 1
iload 2
invokevirtual org.h2.mvstore.Page.getKey:(I)Ljava/lang/Object;
astore 3
start local 3 26: aload 0
getfield org.h2.mvstore.Cursor.to:Ljava/lang/Object;
ifnull 28
aload 1
getfield org.h2.mvstore.Page.map:Lorg/h2/mvstore/MVMap;
invokevirtual org.h2.mvstore.MVMap.getKeyType:()Lorg/h2/mvstore/type/DataType;
aload 3
aload 0
getfield org.h2.mvstore.Cursor.to:Ljava/lang/Object;
invokeinterface org.h2.mvstore.type.DataType.compare:(Ljava/lang/Object;Ljava/lang/Object;)I
ifle 28
27: iconst_0
ireturn
28: StackMap locals: java.lang.Object
StackMap stack:
aload 0
aload 0
aload 3
dup_x1
putfield org.h2.mvstore.Cursor.last:Ljava/lang/Object;
putfield org.h2.mvstore.Cursor.current:Ljava/lang/Object;
29: aload 0
aload 1
iload 2
invokevirtual org.h2.mvstore.Page.getValue:(I)Ljava/lang/Object;
putfield org.h2.mvstore.Cursor.lastValue:Ljava/lang/Object;
30: aload 0
aload 1
putfield org.h2.mvstore.Cursor.lastPage:Lorg/h2/mvstore/Page;
end local 3 31: StackMap locals:
StackMap stack:
aload 0
getfield org.h2.mvstore.Cursor.cursorPos:Lorg/h2/mvstore/CursorPos;
dup
getfield org.h2.mvstore.CursorPos.index:I
iconst_1
iadd
putfield org.h2.mvstore.CursorPos.index:I
end local 2 end local 1 32: StackMap locals:
StackMap stack:
aload 0
getfield org.h2.mvstore.Cursor.current:Ljava/lang/Object;
ifnull 2
33: StackMap locals:
StackMap stack:
aload 0
getfield org.h2.mvstore.Cursor.current:Ljava/lang/Object;
ifnull 34
iconst_1
ireturn
StackMap locals:
StackMap stack:
34: iconst_0
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 35 0 this Lorg/h2/mvstore/Cursor<TK;TV;>;
3 32 1 page Lorg/h2/mvstore/Page;
4 32 2 index I
8 13 3 tmp Lorg/h2/mvstore/CursorPos;
18 23 3 tmp Lorg/h2/mvstore/CursorPos;
26 31 3 key TK;
public K next();
descriptor: ()Ljava/lang/Object;
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
invokevirtual org.h2.mvstore.Cursor.hasNext:()Z
ifne 2
1: new java.util.NoSuchElementException
dup
invokespecial java.util.NoSuchElementException.<init>:()V
athrow
2: StackMap locals:
StackMap stack:
aload 0
aconst_null
putfield org.h2.mvstore.Cursor.current:Ljava/lang/Object;
3: aload 0
getfield org.h2.mvstore.Cursor.last:Ljava/lang/Object;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lorg/h2/mvstore/Cursor<TK;TV;>;
Signature: ()TK;
public K getKey();
descriptor: ()Ljava/lang/Object;
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield org.h2.mvstore.Cursor.last:Ljava/lang/Object;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/h2/mvstore/Cursor<TK;TV;>;
Signature: ()TK;
public V getValue();
descriptor: ()Ljava/lang/Object;
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield org.h2.mvstore.Cursor.lastValue:Ljava/lang/Object;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/h2/mvstore/Cursor<TK;TV;>;
Signature: ()TV;
org.h2.mvstore.Page getPage();
descriptor: ()Lorg/h2/mvstore/Page;
flags: (0x0000)
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield org.h2.mvstore.Cursor.lastPage:Lorg/h2/mvstore/Page;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/h2/mvstore/Cursor<TK;TV;>;
public void skip(long);
descriptor: (J)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=6, locals=9, args_size=2
start local 0 start local 1 0: lload 1
ldc 10
lcmp
ifge 5
1: goto 3
2: StackMap locals:
StackMap stack:
aload 0
invokevirtual org.h2.mvstore.Cursor.next:()Ljava/lang/Object;
pop
3: StackMap locals:
StackMap stack:
lload 1
dup2
lconst_1
lsub
lstore 1
lconst_0
lcmp
ifle 17
aload 0
invokevirtual org.h2.mvstore.Cursor.hasNext:()Z
ifne 2
4: goto 17
StackMap locals:
StackMap stack:
5: aload 0
invokevirtual org.h2.mvstore.Cursor.hasNext:()Z
ifeq 17
6: getstatic org.h2.mvstore.Cursor.$assertionsDisabled:Z
ifne 7
aload 0
getfield org.h2.mvstore.Cursor.cursorPos:Lorg/h2/mvstore/CursorPos;
ifnonnull 7
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
7: StackMap locals:
StackMap stack:
aload 0
getfield org.h2.mvstore.Cursor.cursorPos:Lorg/h2/mvstore/CursorPos;
astore 3
start local 3 8: goto 10
start local 4 StackMap locals: org.h2.mvstore.CursorPos org.h2.mvstore.CursorPos
StackMap stack:
9: aload 4
astore 3
end local 4 StackMap locals:
StackMap stack:
10: aload 3
getfield org.h2.mvstore.CursorPos.parent:Lorg/h2/mvstore/CursorPos;
dup
astore 4
start local 4 11: ifnonnull 9
12: aload 3
getfield org.h2.mvstore.CursorPos.page:Lorg/h2/mvstore/Page;
astore 5
start local 5 13: aload 5
getfield org.h2.mvstore.Page.map:Lorg/h2/mvstore/MVMap;
astore 6
start local 6 14: aload 6
aload 0
invokevirtual org.h2.mvstore.Cursor.next:()Ljava/lang/Object;
invokevirtual org.h2.mvstore.MVMap.getKeyIndex:(Ljava/lang/Object;)J
lstore 7
start local 7 15: aload 0
aload 6
lload 7
lload 1
ladd
invokevirtual org.h2.mvstore.MVMap.getKey:(J)Ljava/lang/Object;
putfield org.h2.mvstore.Cursor.last:Ljava/lang/Object;
16: aload 0
aload 5
aload 0
getfield org.h2.mvstore.Cursor.last:Ljava/lang/Object;
invokestatic org.h2.mvstore.Cursor.traverseDown:(Lorg/h2/mvstore/Page;Ljava/lang/Object;)Lorg/h2/mvstore/CursorPos;
putfield org.h2.mvstore.Cursor.cursorPos:Lorg/h2/mvstore/CursorPos;
end local 7 end local 6 end local 5 end local 4 end local 3 17: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 18 0 this Lorg/h2/mvstore/Cursor<TK;TV;>;
0 18 1 n J
8 17 3 cp Lorg/h2/mvstore/CursorPos;
9 10 4 parent Lorg/h2/mvstore/CursorPos;
11 17 4 parent Lorg/h2/mvstore/CursorPos;
13 17 5 root Lorg/h2/mvstore/Page;
14 17 6 map Lorg/h2/mvstore/MVMap<TK;*>;
15 17 7 index J
MethodParameters:
Name Flags
n
public void remove();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: ldc "Removal is not supported"
1: invokestatic org.h2.mvstore.DataUtils.newUnsupportedOperationException:(Ljava/lang/String;)Ljava/lang/UnsupportedOperationException;
athrow
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lorg/h2/mvstore/Cursor<TK;TV;>;
private static org.h2.mvstore.CursorPos traverseDown(org.h2.mvstore.Page, java.lang.Object);
descriptor: (Lorg/h2/mvstore/Page;Ljava/lang/Object;)Lorg/h2/mvstore/CursorPos;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=5, locals=4, args_size=2
start local 0 start local 1 0: aconst_null
astore 2
start local 2 1: goto 9
2: StackMap locals: org.h2.mvstore.CursorPos
StackMap stack:
iconst_0
istore 3
start local 3 3: aload 1
ifnull 7
4: aload 0
aload 1
invokevirtual org.h2.mvstore.Page.binarySearch:(Ljava/lang/Object;)I
iconst_1
iadd
istore 3
5: iload 3
ifge 7
6: iload 3
ineg
istore 3
7: StackMap locals: int
StackMap stack:
new org.h2.mvstore.CursorPos
dup
aload 0
iload 3
aload 2
invokespecial org.h2.mvstore.CursorPos.<init>:(Lorg/h2/mvstore/Page;ILorg/h2/mvstore/CursorPos;)V
astore 2
8: aload 0
iload 3
invokevirtual org.h2.mvstore.Page.getChildPage:(I)Lorg/h2/mvstore/Page;
astore 0
end local 3 9: StackMap locals:
StackMap stack:
aload 0
invokevirtual org.h2.mvstore.Page.isLeaf:()Z
ifeq 2
10: iconst_0
istore 3
start local 3 11: aload 1
ifnull 15
12: aload 0
aload 1
invokevirtual org.h2.mvstore.Page.binarySearch:(Ljava/lang/Object;)I
istore 3
13: iload 3
ifge 15
14: iload 3
ineg
iconst_1
isub
istore 3
15: StackMap locals: int
StackMap stack:
new org.h2.mvstore.CursorPos
dup
aload 0
iload 3
aload 2
invokespecial org.h2.mvstore.CursorPos.<init>:(Lorg/h2/mvstore/Page;ILorg/h2/mvstore/CursorPos;)V
areturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 16 0 p Lorg/h2/mvstore/Page;
0 16 1 key Ljava/lang/Object;
1 16 2 cursorPos Lorg/h2/mvstore/CursorPos;
3 9 3 index I
11 16 3 index I
MethodParameters:
Name Flags
p
key
}
Signature: <K:Ljava/lang/Object;V:Ljava/lang/Object;>Ljava/lang/Object;Ljava/util/Iterator<TK;>;
SourceFile: "Cursor.java"