public final class org.bson.internal.UnsignedLongs
minor version: 0
major version: 59
flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
this_class: org.bson.internal.UnsignedLongs
super_class: java.lang.Object
{
private static final long MAX_VALUE;
descriptor: J
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: -1
private static final long[] MAX_VALUE_DIVS;
descriptor: [J
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static final int[] MAX_VALUE_MODS;
descriptor: [I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static final int[] MAX_SAFE_DIGITS;
descriptor: [I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=6, locals=2, args_size=0
0: bipush 37
newarray 11
putstatic org.bson.internal.UnsignedLongs.MAX_VALUE_DIVS:[J
1: bipush 37
newarray 10
putstatic org.bson.internal.UnsignedLongs.MAX_VALUE_MODS:[I
2: bipush 37
newarray 10
putstatic org.bson.internal.UnsignedLongs.MAX_SAFE_DIGITS:[I
3: new java.math.BigInteger
dup
ldc "10000000000000000"
bipush 16
invokespecial java.math.BigInteger.<init>:(Ljava/lang/String;I)V
astore 0
start local 0 4: iconst_2
istore 1
start local 1 5: goto 10
6: StackMap locals: java.math.BigInteger int
StackMap stack:
getstatic org.bson.internal.UnsignedLongs.MAX_VALUE_DIVS:[J
iload 1
ldc -1
iload 1
i2l
invokestatic org.bson.internal.UnsignedLongs.divide:(JJ)J
lastore
7: getstatic org.bson.internal.UnsignedLongs.MAX_VALUE_MODS:[I
iload 1
ldc -1
iload 1
i2l
invokestatic org.bson.internal.UnsignedLongs.remainder:(JJ)J
l2i
iastore
8: getstatic org.bson.internal.UnsignedLongs.MAX_SAFE_DIGITS:[I
iload 1
aload 0
iload 1
invokevirtual java.math.BigInteger.toString:(I)Ljava/lang/String;
invokevirtual java.lang.String.length:()I
iconst_1
isub
iastore
9: iinc 1 1
StackMap locals:
StackMap stack:
10: iload 1
bipush 36
if_icmple 6
end local 1 end local 0 11: return
LocalVariableTable:
Start End Slot Name Signature
4 11 0 overflow Ljava/math/BigInteger;
5 11 1 i I
public static int compare(long, long);
descriptor: (JJ)I
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=6, locals=4, args_size=2
start local 0 start local 2 0: lload 0
ldc -9223372036854775808
ladd
lload 2
ldc -9223372036854775808
ladd
invokestatic org.bson.internal.UnsignedLongs.compareLongs:(JJ)I
ireturn
end local 2 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 first J
0 1 2 second J
MethodParameters:
Name Flags
first final
second final
public static java.lang.String toString(long);
descriptor: (J)Ljava/lang/String;
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=6, locals=6, args_size=1
start local 0 0: lload 0
lconst_0
lcmp
iflt 2
1: lload 0
invokestatic java.lang.Long.toString:(J)Ljava/lang/String;
areturn
2: StackMap locals:
StackMap stack:
lload 0
iconst_1
lushr
ldc 5
ldiv
lstore 2
start local 2 3: lload 0
lload 2
ldc 10
lmul
lsub
lstore 4
start local 4 4: new java.lang.StringBuilder
dup
lload 2
invokestatic java.lang.Long.toString:(J)Ljava/lang/String;
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
lload 4
invokevirtual java.lang.StringBuilder.append:(J)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
areturn
end local 4 end local 2 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 value J
3 5 2 quotient J
4 5 4 remainder J
MethodParameters:
Name Flags
value final
public static long parse(java.lang.String);
descriptor: (Ljava/lang/String;)J
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=5, locals=7, args_size=1
start local 0 0: aload 0
invokevirtual java.lang.String.length:()I
ifne 2
1: new java.lang.NumberFormatException
dup
ldc "empty string"
invokespecial java.lang.NumberFormatException.<init>:(Ljava/lang/String;)V
athrow
2: StackMap locals:
StackMap stack:
bipush 10
istore 1
start local 1 3: getstatic org.bson.internal.UnsignedLongs.MAX_SAFE_DIGITS:[I
iload 1
iaload
iconst_1
isub
istore 2
start local 2 4: lconst_0
lstore 3
start local 3 5: iconst_0
istore 5
start local 5 6: goto 14
7: StackMap locals: java.lang.String int int long int
StackMap stack:
aload 0
iload 5
invokevirtual java.lang.String.charAt:(I)C
iload 1
invokestatic java.lang.Character.digit:(CI)I
istore 6
start local 6 8: iload 6
iconst_m1
if_icmpne 10
9: new java.lang.NumberFormatException
dup
aload 0
invokespecial java.lang.NumberFormatException.<init>:(Ljava/lang/String;)V
athrow
10: StackMap locals: int
StackMap stack:
iload 5
iload 2
if_icmple 12
lload 3
iload 6
iload 1
invokestatic org.bson.internal.UnsignedLongs.overflowInParse:(JII)Z
ifeq 12
11: new java.lang.NumberFormatException
dup
new java.lang.StringBuilder
dup
ldc "Too large for unsigned long: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 0
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokespecial java.lang.NumberFormatException.<init>:(Ljava/lang/String;)V
athrow
12: StackMap locals:
StackMap stack:
lload 3
iload 1
i2l
lmul
iload 6
i2l
ladd
lstore 3
end local 6 13: iinc 5 1
StackMap locals:
StackMap stack:
14: iload 5
aload 0
invokevirtual java.lang.String.length:()I
if_icmplt 7
end local 5 15: lload 3
lreturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 16 0 string Ljava/lang/String;
3 16 1 radix I
4 16 2 maxSafePos I
5 16 3 value J
6 15 5 pos I
8 13 6 digit I
MethodParameters:
Name Flags
string final
private static boolean overflowInParse(long, int, int);
descriptor: (JII)Z
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=4, locals=4, args_size=3
start local 0 start local 2 start local 3 0: lload 0
lconst_0
lcmp
iflt 7
1: lload 0
getstatic org.bson.internal.UnsignedLongs.MAX_VALUE_DIVS:[J
iload 3
laload
lcmp
ifge 3
2: iconst_0
ireturn
3: StackMap locals:
StackMap stack:
lload 0
getstatic org.bson.internal.UnsignedLongs.MAX_VALUE_DIVS:[J
iload 3
laload
lcmp
ifle 5
4: iconst_1
ireturn
5: StackMap locals:
StackMap stack:
iload 2
getstatic org.bson.internal.UnsignedLongs.MAX_VALUE_MODS:[I
iload 3
iaload
if_icmple 6
iconst_1
ireturn
StackMap locals:
StackMap stack:
6: iconst_0
ireturn
7: StackMap locals:
StackMap stack:
iconst_1
ireturn
end local 3 end local 2 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 current J
0 8 2 digit I
0 8 3 radix I
MethodParameters:
Name Flags
current final
digit final
radix final
private static int compareLongs(long, long);
descriptor: (JJ)I
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=4, locals=4, args_size=2
start local 0 start local 2 0: lload 0
lload 2
lcmp
ifge 1
iconst_m1
goto 3
StackMap locals:
StackMap stack:
1: lload 0
lload 2
lcmp
ifne 2
iconst_0
goto 3
StackMap locals:
StackMap stack:
2: iconst_1
StackMap locals:
StackMap stack: int
3: ireturn
end local 2 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 x J
0 4 2 y J
MethodParameters:
Name Flags
x final
y final
private static long divide(long, long);
descriptor: (JJ)J
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=6, locals=8, args_size=2
start local 0 start local 2 0: lload 2
lconst_0
lcmp
ifge 4
1: lload 0
lload 2
invokestatic org.bson.internal.UnsignedLongs.compare:(JJ)I
ifge 3
2: lconst_0
lreturn
3: StackMap locals:
StackMap stack:
lconst_1
lreturn
4: StackMap locals:
StackMap stack:
lload 0
lconst_0
lcmp
iflt 6
5: lload 0
lload 2
ldiv
lreturn
6: StackMap locals:
StackMap stack:
lload 0
iconst_1
lushr
lload 2
ldiv
iconst_1
lshl
lstore 4
start local 4 7: lload 0
lload 4
lload 2
lmul
lsub
lstore 6
start local 6 8: lload 4
lload 6
lload 2
invokestatic org.bson.internal.UnsignedLongs.compare:(JJ)I
iflt 9
iconst_1
goto 10
StackMap locals: long long long long
StackMap stack: long
9: iconst_0
StackMap locals: long long long long
StackMap stack: long int
10: i2l
ladd
lreturn
end local 6 end local 4 end local 2 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 11 0 dividend J
0 11 2 divisor J
7 11 4 quotient J
8 11 6 rem J
MethodParameters:
Name Flags
dividend final
divisor final
private static long remainder(long, long);
descriptor: (JJ)J
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=6, locals=8, args_size=2
start local 0 start local 2 0: lload 2
lconst_0
lcmp
ifge 4
1: lload 0
lload 2
invokestatic org.bson.internal.UnsignedLongs.compare:(JJ)I
ifge 3
2: lload 0
lreturn
3: StackMap locals:
StackMap stack:
lload 0
lload 2
lsub
lreturn
4: StackMap locals:
StackMap stack:
lload 0
lconst_0
lcmp
iflt 6
5: lload 0
lload 2
lrem
lreturn
6: StackMap locals:
StackMap stack:
lload 0
iconst_1
lushr
lload 2
ldiv
iconst_1
lshl
lstore 4
start local 4 7: lload 0
lload 4
lload 2
lmul
lsub
lstore 6
start local 6 8: lload 6
lload 6
lload 2
invokestatic org.bson.internal.UnsignedLongs.compare:(JJ)I
iflt 9
lload 2
goto 10
StackMap locals: long long long long
StackMap stack: long
9: lconst_0
StackMap locals: long long long long
StackMap stack: long long
10: lsub
lreturn
end local 6 end local 4 end local 2 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 11 0 dividend J
0 11 2 divisor J
7 11 4 quotient J
8 11 6 rem J
MethodParameters:
Name Flags
dividend final
divisor final
private void <init>();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lorg/bson/internal/UnsignedLongs;
}
SourceFile: "UnsignedLongs.java"