public class org.hsqldb.lib.ArrayCounter
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: org.hsqldb.lib.ArrayCounter
super_class: java.lang.Object
{
public void <init>();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 // org.hsqldb.lib.ArrayCounter this
0: .line 42
aload 0 /* this */
invokespecial java.lang.Object.<init>:()V
return
end local 0 // org.hsqldb.lib.ArrayCounter this
LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/hsqldb/lib/ArrayCounter;
public static int[] countSegments(int[], int, int, int, int, int);
descriptor: ([IIIIII)[I
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=4, locals=10, args_size=6
start local 0 // int[] array
start local 1 // int elementCount
start local 2 // int segments
start local 3 // int interval
start local 4 // int start
start local 5 // int limit
0: .line 62
iload 2 /* segments */
newarray 10
astore 6 /* counts */
start local 6 // int[] counts
1: .line 66
iload 3 /* interval */
ifgt 3
2: .line 67
aload 6 /* counts */
areturn
3: .line 70
StackMap locals: int[]
StackMap stack:
iconst_0
istore 9 /* i */
start local 9 // int i
4: goto 11
5: .line 71
StackMap locals: int[] int int int int int int[] top top int
StackMap stack:
aload 0 /* array */
iload 9 /* i */
iaload
istore 8 /* element */
start local 8 // int element
6: .line 73
iload 8 /* element */
iload 4 /* start */
if_icmplt 10
iload 8 /* element */
iload 5 /* limit */
if_icmplt 8
7: .line 74
goto 10
8: .line 77
StackMap locals: int[] int int int int int int[] top int int
StackMap stack:
iload 8 /* element */
iload 4 /* start */
isub
iload 3 /* interval */
idiv
istore 7 /* index */
start local 7 // int index
9: .line 79
aload 6 /* counts */
iload 7 /* index */
dup2
iaload
iconst_1
iadd
iastore
end local 7 // int index
10: .line 70
StackMap locals:
StackMap stack:
iinc 9 /* i */ 1
end local 8 // int element
StackMap locals: int[] int int int int int int[] top top int
StackMap stack:
11: iload 9 /* i */
iload 1 /* elementCount */
if_icmplt 5
end local 9 // int i
12: .line 82
aload 6 /* counts */
areturn
end local 6 // int[] counts
end local 5 // int limit
end local 4 // int start
end local 3 // int interval
end local 2 // int segments
end local 1 // int elementCount
end local 0 // int[] array
LocalVariableTable:
Start End Slot Name Signature
0 13 0 array [I
0 13 1 elementCount I
0 13 2 segments I
0 13 3 interval I
0 13 4 start I
0 13 5 limit I
1 13 6 counts [I
9 10 7 index I
6 11 8 element I
4 12 9 i I
MethodParameters:
Name Flags
array
elementCount
segments
interval
start
limit
public static int rank(int[], int, int, int, int, int);
descriptor: ([IIIIII)I
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=6, locals=11, args_size=6
start local 0 // int[] array
start local 1 // int elements
start local 2 // int target
start local 3 // int start
start local 4 // int limit
start local 5 // int margin
0: .line 104
iconst_0
istore 6 /* elementCount */
start local 6 // int elementCount
1: .line 105
iload 4 /* limit */
istore 7 /* currentLimit */
start local 7 // int currentLimit
2: .line 108
StackMap locals: int int
StackMap stack:
sipush 256
iload 3 /* start */
iload 7 /* currentLimit */
invokestatic org.hsqldb.lib.ArrayCounter.calcInterval:(III)I
istore 8 /* interval */
start local 8 // int interval
3: .line 109
aload 0 /* array */
iload 1 /* elements */
sipush 256
iload 8 /* interval */
4: .line 110
iload 3 /* start */
iload 7 /* currentLimit */
5: .line 109
invokestatic org.hsqldb.lib.ArrayCounter.countSegments:([IIIIII)[I
astore 9 /* counts */
start local 9 // int[] counts
6: .line 112
iconst_0
istore 10 /* i */
start local 10 // int i
7: goto 12
8: .line 113
StackMap locals: int int[] int
StackMap stack:
iload 6 /* elementCount */
aload 9 /* counts */
iload 10 /* i */
iaload
iadd
iload 2 /* target */
if_icmpge 13
9: .line 114
iload 6 /* elementCount */
aload 9 /* counts */
iload 10 /* i */
iaload
iadd
istore 6 /* elementCount */
10: .line 115
iload 3 /* start */
iload 8 /* interval */
iadd
istore 3 /* start */
11: .line 112
iinc 10 /* i */ 1
StackMap locals:
StackMap stack:
12: iload 10 /* i */
aload 9 /* counts */
arraylength
if_icmplt 8
end local 10 // int i
13: .line 121
StackMap locals:
StackMap stack:
iload 6 /* elementCount */
iload 5 /* margin */
iadd
iload 2 /* target */
if_icmplt 15
14: .line 122
iload 3 /* start */
ireturn
15: .line 125
StackMap locals:
StackMap stack:
iload 8 /* interval */
iconst_1
if_icmpgt 17
16: .line 126
iload 3 /* start */
ireturn
17: .line 129
StackMap locals:
StackMap stack:
iload 3 /* start */
iload 8 /* interval */
iadd
iload 4 /* limit */
if_icmpge 18
iload 3 /* start */
iload 8 /* interval */
iadd
goto 19
18: .line 130
StackMap locals:
StackMap stack:
iload 4 /* limit */
19: .line 129
StackMap locals:
StackMap stack: int
istore 7 /* currentLimit */
end local 9 // int[] counts
end local 8 // int interval
20: .line 107
goto 2
end local 7 // int currentLimit
end local 6 // int elementCount
end local 5 // int margin
end local 4 // int limit
end local 3 // int start
end local 2 // int target
end local 1 // int elements
end local 0 // int[] array
LocalVariableTable:
Start End Slot Name Signature
0 21 0 array [I
0 21 1 elements I
0 21 2 target I
0 21 3 start I
0 21 4 limit I
0 21 5 margin I
1 21 6 elementCount I
2 21 7 currentLimit I
3 20 8 interval I
6 20 9 counts [I
7 13 10 i I
MethodParameters:
Name Flags
array
elements
target
start
limit
margin
static int calcInterval(int, int, int);
descriptor: (III)I
flags: (0x0008) ACC_STATIC
Code:
stack=2, locals=5, args_size=3
start local 0 // int segments
start local 1 // int start
start local 2 // int limit
0: .line 141
iload 2 /* limit */
iload 1 /* start */
isub
istore 3 /* range */
start local 3 // int range
1: .line 143
iload 3 /* range */
ifgt 3
2: .line 144
iconst_0
ireturn
3: .line 147
StackMap locals: int
StackMap stack:
iload 3 /* range */
iload 0 /* segments */
irem
ifne 4
iconst_0
goto 5
4: .line 148
StackMap locals:
StackMap stack:
iconst_1
5: .line 147
StackMap locals:
StackMap stack: int
istore 4 /* partSegment */
start local 4 // int partSegment
6: .line 150
iload 3 /* range */
iload 0 /* segments */
idiv
iload 4 /* partSegment */
iadd
ireturn
end local 4 // int partSegment
end local 3 // int range
end local 2 // int limit
end local 1 // int start
end local 0 // int segments
LocalVariableTable:
Start End Slot Name Signature
0 7 0 segments I
0 7 1 start I
0 7 2 limit I
1 7 3 range I
6 7 4 partSegment I
MethodParameters:
Name Flags
segments
start
limit
}
SourceFile: "ArrayCounter.java"