class java.math.BitSieve
minor version: 0
major version: 59
flags: flags: (0x0020) ACC_SUPER
this_class: java.math.BitSieve
super_class: java.lang.Object
{
private long[] bits;
descriptor: [J
flags: (0x0002) ACC_PRIVATE
private int length;
descriptor: I
flags: (0x0002) ACC_PRIVATE
private static java.math.BitSieve smallSieve;
descriptor: Ljava/math/BitSieve;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=2, locals=0, args_size=0
0: .line 62
new java.math.BitSieve
dup
invokespecial java.math.BitSieve.<init>:()V
putstatic java.math.BitSieve.smallSieve:Ljava/math/BitSieve;
return
LocalVariableTable:
Start End Slot Name Signature
private void <init>();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=3, args_size=1
start local 0 // java.math.BitSieve this
0: .line 75
aload 0 /* this */
invokespecial java.lang.Object.<init>:()V
1: .line 76
aload 0 /* this */
sipush 9600
putfield java.math.BitSieve.length:I
2: .line 77
aload 0 /* this */
aload 0 /* this */
getfield java.math.BitSieve.length:I
iconst_1
isub
invokestatic java.math.BitSieve.unitIndex:(I)I
iconst_1
iadd
newarray 11
putfield java.math.BitSieve.bits:[J
3: .line 80
aload 0 /* this */
iconst_0
invokevirtual java.math.BitSieve.set:(I)V
4: .line 81
iconst_1
istore 1 /* nextIndex */
start local 1 // int nextIndex
5: .line 82
iconst_3
istore 2 /* nextPrime */
start local 2 // int nextPrime
6: .line 86
StackMap locals: java.math.BitSieve int int
StackMap stack:
aload 0 /* this */
aload 0 /* this */
getfield java.math.BitSieve.length:I
iload 1 /* nextIndex */
iload 2 /* nextPrime */
iadd
iload 2 /* nextPrime */
invokevirtual java.math.BitSieve.sieveSingle:(III)V
7: .line 87
aload 0 /* this */
aload 0 /* this */
getfield java.math.BitSieve.length:I
iload 1 /* nextIndex */
iconst_1
iadd
invokevirtual java.math.BitSieve.sieveSearch:(II)I
istore 1 /* nextIndex */
8: .line 88
iconst_2
iload 1 /* nextIndex */
imul
iconst_1
iadd
istore 2 /* nextPrime */
9: .line 89
iload 1 /* nextIndex */
ifle 11
iload 2 /* nextPrime */
aload 0 /* this */
getfield java.math.BitSieve.length:I
10: .line 85
if_icmplt 6
11: .line 90
StackMap locals:
StackMap stack:
return
end local 2 // int nextPrime
end local 1 // int nextIndex
end local 0 // java.math.BitSieve this
LocalVariableTable:
Start End Slot Name Signature
0 12 0 this Ljava/math/BitSieve;
5 12 1 nextIndex I
6 12 2 nextPrime I
void <init>(java.math.BigInteger, int);
descriptor: (Ljava/math/BigInteger;I)V
flags: (0x0000)
Code:
stack=4, locals=8, args_size=3
start local 0 // java.math.BitSieve this
start local 1 // java.math.BigInteger base
start local 2 // int searchLen
0: .line 97
aload 0 /* this */
invokespecial java.lang.Object.<init>:()V
1: .line 105
aload 0 /* this */
iload 2 /* searchLen */
iconst_1
isub
invokestatic java.math.BitSieve.unitIndex:(I)I
iconst_1
iadd
newarray 11
putfield java.math.BitSieve.bits:[J
2: .line 106
aload 0 /* this */
iload 2 /* searchLen */
putfield java.math.BitSieve.length:I
3: .line 107
iconst_0
istore 3 /* start */
start local 3 // int start
4: .line 109
getstatic java.math.BitSieve.smallSieve:Ljava/math/BitSieve;
getstatic java.math.BitSieve.smallSieve:Ljava/math/BitSieve;
getfield java.math.BitSieve.length:I
iload 3 /* start */
invokevirtual java.math.BitSieve.sieveSearch:(II)I
istore 4 /* step */
start local 4 // int step
5: .line 110
iload 4 /* step */
iconst_2
imul
iconst_1
iadd
istore 5 /* convertedStep */
start local 5 // int convertedStep
6: .line 113
new java.math.MutableBigInteger
dup
aload 1 /* base */
invokespecial java.math.MutableBigInteger.<init>:(Ljava/math/BigInteger;)V
astore 6 /* b */
start local 6 // java.math.MutableBigInteger b
7: .line 114
new java.math.MutableBigInteger
dup
invokespecial java.math.MutableBigInteger.<init>:()V
astore 7 /* q */
start local 7 // java.math.MutableBigInteger q
8: .line 117
StackMap locals: java.math.BitSieve java.math.BigInteger int int int int java.math.MutableBigInteger java.math.MutableBigInteger
StackMap stack:
aload 6 /* b */
iload 5 /* convertedStep */
aload 7 /* q */
invokevirtual java.math.MutableBigInteger.divideOneWord:(ILjava/math/MutableBigInteger;)I
istore 3 /* start */
9: .line 120
iload 5 /* convertedStep */
iload 3 /* start */
isub
istore 3 /* start */
10: .line 121
iload 3 /* start */
iconst_2
irem
ifne 12
11: .line 122
iload 3 /* start */
iload 5 /* convertedStep */
iadd
istore 3 /* start */
12: .line 123
StackMap locals:
StackMap stack:
aload 0 /* this */
iload 2 /* searchLen */
iload 3 /* start */
iconst_1
isub
iconst_2
idiv
iload 5 /* convertedStep */
invokevirtual java.math.BitSieve.sieveSingle:(III)V
13: .line 126
getstatic java.math.BitSieve.smallSieve:Ljava/math/BitSieve;
getstatic java.math.BitSieve.smallSieve:Ljava/math/BitSieve;
getfield java.math.BitSieve.length:I
iload 4 /* step */
iconst_1
iadd
invokevirtual java.math.BitSieve.sieveSearch:(II)I
istore 4 /* step */
14: .line 127
iload 4 /* step */
iconst_2
imul
iconst_1
iadd
istore 5 /* convertedStep */
15: .line 128
iload 4 /* step */
16: .line 115
ifgt 8
17: .line 129
return
end local 7 // java.math.MutableBigInteger q
end local 6 // java.math.MutableBigInteger b
end local 5 // int convertedStep
end local 4 // int step
end local 3 // int start
end local 2 // int searchLen
end local 1 // java.math.BigInteger base
end local 0 // java.math.BitSieve this
LocalVariableTable:
Start End Slot Name Signature
0 18 0 this Ljava/math/BitSieve;
0 18 1 base Ljava/math/BigInteger;
0 18 2 searchLen I
4 18 3 start I
5 18 4 step I
6 18 5 convertedStep I
7 18 6 b Ljava/math/MutableBigInteger;
8 18 7 q Ljava/math/MutableBigInteger;
MethodParameters:
Name Flags
base
searchLen
private static int unitIndex(int);
descriptor: (I)I
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=2, locals=1, args_size=1
start local 0 // int bitIndex
0: .line 135
iload 0 /* bitIndex */
bipush 6
iushr
ireturn
end local 0 // int bitIndex
LocalVariableTable:
Start End Slot Name Signature
0 1 0 bitIndex I
MethodParameters:
Name Flags
bitIndex
private static long bit(int);
descriptor: (I)J
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=4, locals=1, args_size=1
start local 0 // int bitIndex
0: .line 142
lconst_1
iload 0 /* bitIndex */
bipush 63
iand
lshl
lreturn
end local 0 // int bitIndex
LocalVariableTable:
Start End Slot Name Signature
0 1 0 bitIndex I
MethodParameters:
Name Flags
bitIndex
private boolean get(int);
descriptor: (I)Z
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=3, args_size=2
start local 0 // java.math.BitSieve this
start local 1 // int bitIndex
0: .line 149
iload 1 /* bitIndex */
invokestatic java.math.BitSieve.unitIndex:(I)I
istore 2 /* unitIndex */
start local 2 // int unitIndex
1: .line 150
aload 0 /* this */
getfield java.math.BitSieve.bits:[J
iload 2 /* unitIndex */
laload
iload 1 /* bitIndex */
invokestatic java.math.BitSieve.bit:(I)J
land
lconst_0
lcmp
ifeq 2
iconst_1
ireturn
StackMap locals: int
StackMap stack:
2: iconst_0
ireturn
end local 2 // int unitIndex
end local 1 // int bitIndex
end local 0 // java.math.BitSieve this
LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Ljava/math/BitSieve;
0 3 1 bitIndex I
1 3 2 unitIndex I
MethodParameters:
Name Flags
bitIndex
private void set(int);
descriptor: (I)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=6, locals=3, args_size=2
start local 0 // java.math.BitSieve this
start local 1 // int bitIndex
0: .line 157
iload 1 /* bitIndex */
invokestatic java.math.BitSieve.unitIndex:(I)I
istore 2 /* unitIndex */
start local 2 // int unitIndex
1: .line 158
aload 0 /* this */
getfield java.math.BitSieve.bits:[J
iload 2 /* unitIndex */
dup2
laload
iload 1 /* bitIndex */
invokestatic java.math.BitSieve.bit:(I)J
lor
lastore
2: .line 159
return
end local 2 // int unitIndex
end local 1 // int bitIndex
end local 0 // java.math.BitSieve this
LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Ljava/math/BitSieve;
0 3 1 bitIndex I
1 3 2 unitIndex I
MethodParameters:
Name Flags
bitIndex
private int sieveSearch(int, int);
descriptor: (II)I
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=4, args_size=3
start local 0 // java.math.BitSieve this
start local 1 // int limit
start local 2 // int start
0: .line 167
iload 2 /* start */
iload 1 /* limit */
if_icmplt 2
1: .line 168
iconst_m1
ireturn
2: .line 170
StackMap locals:
StackMap stack:
iload 2 /* start */
istore 3 /* index */
start local 3 // int index
3: .line 172
StackMap locals: int
StackMap stack:
aload 0 /* this */
iload 3 /* index */
invokevirtual java.math.BitSieve.get:(I)Z
ifne 5
4: .line 173
iload 3 /* index */
ireturn
5: .line 174
StackMap locals:
StackMap stack:
iinc 3 /* index */ 1
6: .line 175
iload 3 /* index */
iload 1 /* limit */
iconst_1
isub
7: .line 171
if_icmplt 3
8: .line 176
iconst_m1
ireturn
end local 3 // int index
end local 2 // int start
end local 1 // int limit
end local 0 // java.math.BitSieve this
LocalVariableTable:
Start End Slot Name Signature
0 9 0 this Ljava/math/BitSieve;
0 9 1 limit I
0 9 2 start I
3 9 3 index I
MethodParameters:
Name Flags
limit
start
private void sieveSingle(int, int, int);
descriptor: (III)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=4, args_size=4
start local 0 // java.math.BitSieve this
start local 1 // int limit
start local 2 // int start
start local 3 // int step
0: .line 185
goto 3
1: .line 186
StackMap locals:
StackMap stack:
aload 0 /* this */
iload 2 /* start */
invokevirtual java.math.BitSieve.set:(I)V
2: .line 187
iload 2 /* start */
iload 3 /* step */
iadd
istore 2 /* start */
3: .line 185
StackMap locals:
StackMap stack:
iload 2 /* start */
iload 1 /* limit */
if_icmplt 1
4: .line 189
return
end local 3 // int step
end local 2 // int start
end local 1 // int limit
end local 0 // java.math.BitSieve this
LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Ljava/math/BitSieve;
0 5 1 limit I
0 5 2 start I
0 5 3 step I
MethodParameters:
Name Flags
limit
start
step
java.math.BigInteger retrieve(java.math.BigInteger, int, java.util.Random);
descriptor: (Ljava/math/BigInteger;ILjava/util/Random;)Ljava/math/BigInteger;
flags: (0x0000)
Code:
stack=4, locals=10, args_size=4
start local 0 // java.math.BitSieve this
start local 1 // java.math.BigInteger initValue
start local 2 // int certainty
start local 3 // java.util.Random random
0: .line 196
iconst_1
istore 4 /* offset */
start local 4 // int offset
1: .line 197
iconst_0
istore 5 /* i */
start local 5 // int i
2: goto 17
3: .line 198
StackMap locals: int int
StackMap stack:
aload 0 /* this */
getfield java.math.BitSieve.bits:[J
iload 5 /* i */
laload
ldc -1
lxor
lstore 6 /* nextLong */
start local 6 // long nextLong
4: .line 199
iconst_0
istore 8 /* j */
start local 8 // int j
5: goto 15
6: .line 200
StackMap locals: long int
StackMap stack:
lload 6 /* nextLong */
lconst_1
land
lconst_1
lcmp
ifne 12
7: .line 201
aload 1 /* initValue */
8: .line 202
iload 4 /* offset */
i2l
invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
9: .line 201
invokevirtual java.math.BigInteger.add:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
astore 9 /* candidate */
start local 9 // java.math.BigInteger candidate
10: .line 203
aload 9 /* candidate */
iload 2 /* certainty */
aload 3 /* random */
invokevirtual java.math.BigInteger.primeToCertainty:(ILjava/util/Random;)Z
ifeq 12
11: .line 204
aload 9 /* candidate */
areturn
end local 9 // java.math.BigInteger candidate
12: .line 206
StackMap locals:
StackMap stack:
lload 6 /* nextLong */
iconst_1
lushr
lstore 6 /* nextLong */
13: .line 207
iinc 4 /* offset */ 2
14: .line 199
iinc 8 /* j */ 1
StackMap locals:
StackMap stack:
15: iload 8 /* j */
bipush 64
if_icmplt 6
end local 8 // int j
end local 6 // long nextLong
16: .line 197
iinc 5 /* i */ 1
StackMap locals:
StackMap stack:
17: iload 5 /* i */
aload 0 /* this */
getfield java.math.BitSieve.bits:[J
arraylength
if_icmplt 3
end local 5 // int i
18: .line 210
aconst_null
areturn
end local 4 // int offset
end local 3 // java.util.Random random
end local 2 // int certainty
end local 1 // java.math.BigInteger initValue
end local 0 // java.math.BitSieve this
LocalVariableTable:
Start End Slot Name Signature
0 19 0 this Ljava/math/BitSieve;
0 19 1 initValue Ljava/math/BigInteger;
0 19 2 certainty I
0 19 3 random Ljava/util/Random;
1 19 4 offset I
2 18 5 i I
4 16 6 nextLong J
5 16 8 j I
10 12 9 candidate Ljava/math/BigInteger;
MethodParameters:
Name Flags
initValue
certainty
random
}
SourceFile: "BitSieve.java"