public class java.math.BigDecimal extends java.lang.Number implements java.lang.Comparable<java.math.BigDecimal>
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: java.math.BigDecimal
super_class: java.lang.Number
{
private final java.math.BigInteger intVal;
descriptor: Ljava/math/BigInteger;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final int scale;
descriptor: I
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private transient int precision;
descriptor: I
flags: (0x0082) ACC_PRIVATE, ACC_TRANSIENT
private transient java.lang.String stringCache;
descriptor: Ljava/lang/String;
flags: (0x0082) ACC_PRIVATE, ACC_TRANSIENT
static final long INFLATED;
descriptor: J
flags: (0x0018) ACC_STATIC, ACC_FINAL
ConstantValue: -9223372036854775808
private static final java.math.BigInteger INFLATED_BIGINT;
descriptor: Ljava/math/BigInteger;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private final transient long intCompact;
descriptor: J
flags: (0x0092) ACC_PRIVATE, ACC_FINAL, ACC_TRANSIENT
private static final int MAX_COMPACT_DIGITS;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 18
private static final long serialVersionUID;
descriptor: J
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 6108874887143696463
private static final java.lang.ThreadLocal<java.math.BigDecimal$StringBuilderHelper> threadLocalStringBuilderHelper;
descriptor: Ljava/lang/ThreadLocal;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
Signature: Ljava/lang/ThreadLocal<Ljava/math/BigDecimal$StringBuilderHelper;>;
private static final java.math.BigDecimal[] ZERO_THROUGH_TEN;
descriptor: [Ljava/math/BigDecimal;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static final java.math.BigDecimal[] ZERO_SCALED_BY;
descriptor: [Ljava/math/BigDecimal;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static final long HALF_LONG_MAX_VALUE;
descriptor: J
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 4611686018427387903
private static final long HALF_LONG_MIN_VALUE;
descriptor: J
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: -4611686018427387904
public static final java.math.BigDecimal ZERO;
descriptor: Ljava/math/BigDecimal;
flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
public static final java.math.BigDecimal ONE;
descriptor: Ljava/math/BigDecimal;
flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
public static final java.math.BigDecimal TEN;
descriptor: Ljava/math/BigDecimal;
flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
private static final java.math.BigDecimal ONE_TENTH;
descriptor: Ljava/math/BigDecimal;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static final java.math.BigDecimal ONE_HALF;
descriptor: Ljava/math/BigDecimal;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
public static final int ROUND_UP;
descriptor: I
flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
ConstantValue: 0
RuntimeVisibleAnnotations:
java.lang.Deprecated(since = "9")
public static final int ROUND_DOWN;
descriptor: I
flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
ConstantValue: 1
RuntimeVisibleAnnotations:
java.lang.Deprecated(since = "9")
public static final int ROUND_CEILING;
descriptor: I
flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
ConstantValue: 2
RuntimeVisibleAnnotations:
java.lang.Deprecated(since = "9")
public static final int ROUND_FLOOR;
descriptor: I
flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
ConstantValue: 3
RuntimeVisibleAnnotations:
java.lang.Deprecated(since = "9")
public static final int ROUND_HALF_UP;
descriptor: I
flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
ConstantValue: 4
RuntimeVisibleAnnotations:
java.lang.Deprecated(since = "9")
public static final int ROUND_HALF_DOWN;
descriptor: I
flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
ConstantValue: 5
RuntimeVisibleAnnotations:
java.lang.Deprecated(since = "9")
public static final int ROUND_HALF_EVEN;
descriptor: I
flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
ConstantValue: 6
RuntimeVisibleAnnotations:
java.lang.Deprecated(since = "9")
public static final int ROUND_UNNECESSARY;
descriptor: I
flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
ConstantValue: 7
RuntimeVisibleAnnotations:
java.lang.Deprecated(since = "9")
private static final double[] DOUBLE_10_POW;
descriptor: [D
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static final float[] FLOAT_10_POW;
descriptor: [F
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static final long[] LONG_TEN_POWERS_TABLE;
descriptor: [J
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static volatile java.math.BigInteger[] BIG_TEN_POWERS_TABLE;
descriptor: [Ljava/math/BigInteger;
flags: (0x004a) ACC_PRIVATE, ACC_STATIC, ACC_VOLATILE
private static final int BIG_TEN_POWERS_TABLE_INITLEN;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static final int BIG_TEN_POWERS_TABLE_MAX;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static final long[] THRESHOLDS_TABLE;
descriptor: [J
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static final long DIV_NUM_BASE;
descriptor: J
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 4294967296
private static final long[][] LONGLONG_TEN_POWERS_TABLE;
descriptor: [[J
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
static final boolean $assertionsDisabled;
descriptor: Z
flags: (0x1018) ACC_STATIC, ACC_FINAL, ACC_SYNTHETIC
private static volatile int[] $SWITCH_TABLE$java$math$RoundingMode;
descriptor: [I
flags: (0x104a) ACC_PRIVATE, ACC_STATIC, ACC_VOLATILE, ACC_SYNTHETIC
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=10, locals=0, args_size=0
0: ldc Ljava/math/BigDecimal;
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 java.math.BigDecimal.$assertionsDisabled:Z
3: ldc -9223372036854775808
invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
putstatic java.math.BigDecimal.INFLATED_BIGINT:Ljava/math/BigInteger;
4: new java.math.BigDecimal$1
dup
invokespecial java.math.BigDecimal$1.<init>:()V
putstatic java.math.BigDecimal.threadLocalStringBuilderHelper:Ljava/lang/ThreadLocal;
5: bipush 11
anewarray java.math.BigDecimal
dup
iconst_0
6: new java.math.BigDecimal
dup
getstatic java.math.BigInteger.ZERO:Ljava/math/BigInteger;
lconst_0
iconst_0
iconst_1
invokespecial java.math.BigDecimal.<init>:(Ljava/math/BigInteger;JII)V
aastore
dup
iconst_1
7: new java.math.BigDecimal
dup
getstatic java.math.BigInteger.ONE:Ljava/math/BigInteger;
lconst_1
iconst_0
iconst_1
invokespecial java.math.BigDecimal.<init>:(Ljava/math/BigInteger;JII)V
aastore
dup
iconst_2
8: new java.math.BigDecimal
dup
getstatic java.math.BigInteger.TWO:Ljava/math/BigInteger;
ldc 2
iconst_0
iconst_1
invokespecial java.math.BigDecimal.<init>:(Ljava/math/BigInteger;JII)V
aastore
dup
iconst_3
9: new java.math.BigDecimal
dup
ldc 3
invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
ldc 3
iconst_0
iconst_1
invokespecial java.math.BigDecimal.<init>:(Ljava/math/BigInteger;JII)V
aastore
dup
iconst_4
10: new java.math.BigDecimal
dup
ldc 4
invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
ldc 4
iconst_0
iconst_1
invokespecial java.math.BigDecimal.<init>:(Ljava/math/BigInteger;JII)V
aastore
dup
iconst_5
11: new java.math.BigDecimal
dup
ldc 5
invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
ldc 5
iconst_0
iconst_1
invokespecial java.math.BigDecimal.<init>:(Ljava/math/BigInteger;JII)V
aastore
dup
bipush 6
12: new java.math.BigDecimal
dup
ldc 6
invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
ldc 6
iconst_0
iconst_1
invokespecial java.math.BigDecimal.<init>:(Ljava/math/BigInteger;JII)V
aastore
dup
bipush 7
13: new java.math.BigDecimal
dup
ldc 7
invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
ldc 7
iconst_0
iconst_1
invokespecial java.math.BigDecimal.<init>:(Ljava/math/BigInteger;JII)V
aastore
dup
bipush 8
14: new java.math.BigDecimal
dup
ldc 8
invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
ldc 8
iconst_0
iconst_1
invokespecial java.math.BigDecimal.<init>:(Ljava/math/BigInteger;JII)V
aastore
dup
bipush 9
15: new java.math.BigDecimal
dup
ldc 9
invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
ldc 9
iconst_0
iconst_1
invokespecial java.math.BigDecimal.<init>:(Ljava/math/BigInteger;JII)V
aastore
dup
bipush 10
16: new java.math.BigDecimal
dup
getstatic java.math.BigInteger.TEN:Ljava/math/BigInteger;
ldc 10
iconst_0
iconst_2
invokespecial java.math.BigDecimal.<init>:(Ljava/math/BigInteger;JII)V
aastore
17: putstatic java.math.BigDecimal.ZERO_THROUGH_TEN:[Ljava/math/BigDecimal;
18: bipush 16
anewarray java.math.BigDecimal
dup
iconst_0
19: getstatic java.math.BigDecimal.ZERO_THROUGH_TEN:[Ljava/math/BigDecimal;
iconst_0
aaload
aastore
dup
iconst_1
20: new java.math.BigDecimal
dup
getstatic java.math.BigInteger.ZERO:Ljava/math/BigInteger;
lconst_0
iconst_1
iconst_1
invokespecial java.math.BigDecimal.<init>:(Ljava/math/BigInteger;JII)V
aastore
dup
iconst_2
21: new java.math.BigDecimal
dup
getstatic java.math.BigInteger.ZERO:Ljava/math/BigInteger;
lconst_0
iconst_2
iconst_1
invokespecial java.math.BigDecimal.<init>:(Ljava/math/BigInteger;JII)V
aastore
dup
iconst_3
22: new java.math.BigDecimal
dup
getstatic java.math.BigInteger.ZERO:Ljava/math/BigInteger;
lconst_0
iconst_3
iconst_1
invokespecial java.math.BigDecimal.<init>:(Ljava/math/BigInteger;JII)V
aastore
dup
iconst_4
23: new java.math.BigDecimal
dup
getstatic java.math.BigInteger.ZERO:Ljava/math/BigInteger;
lconst_0
iconst_4
iconst_1
invokespecial java.math.BigDecimal.<init>:(Ljava/math/BigInteger;JII)V
aastore
dup
iconst_5
24: new java.math.BigDecimal
dup
getstatic java.math.BigInteger.ZERO:Ljava/math/BigInteger;
lconst_0
iconst_5
iconst_1
invokespecial java.math.BigDecimal.<init>:(Ljava/math/BigInteger;JII)V
aastore
dup
bipush 6
25: new java.math.BigDecimal
dup
getstatic java.math.BigInteger.ZERO:Ljava/math/BigInteger;
lconst_0
bipush 6
iconst_1
invokespecial java.math.BigDecimal.<init>:(Ljava/math/BigInteger;JII)V
aastore
dup
bipush 7
26: new java.math.BigDecimal
dup
getstatic java.math.BigInteger.ZERO:Ljava/math/BigInteger;
lconst_0
bipush 7
iconst_1
invokespecial java.math.BigDecimal.<init>:(Ljava/math/BigInteger;JII)V
aastore
dup
bipush 8
27: new java.math.BigDecimal
dup
getstatic java.math.BigInteger.ZERO:Ljava/math/BigInteger;
lconst_0
bipush 8
iconst_1
invokespecial java.math.BigDecimal.<init>:(Ljava/math/BigInteger;JII)V
aastore
dup
bipush 9
28: new java.math.BigDecimal
dup
getstatic java.math.BigInteger.ZERO:Ljava/math/BigInteger;
lconst_0
bipush 9
iconst_1
invokespecial java.math.BigDecimal.<init>:(Ljava/math/BigInteger;JII)V
aastore
dup
bipush 10
29: new java.math.BigDecimal
dup
getstatic java.math.BigInteger.ZERO:Ljava/math/BigInteger;
lconst_0
bipush 10
iconst_1
invokespecial java.math.BigDecimal.<init>:(Ljava/math/BigInteger;JII)V
aastore
dup
bipush 11
30: new java.math.BigDecimal
dup
getstatic java.math.BigInteger.ZERO:Ljava/math/BigInteger;
lconst_0
bipush 11
iconst_1
invokespecial java.math.BigDecimal.<init>:(Ljava/math/BigInteger;JII)V
aastore
dup
bipush 12
31: new java.math.BigDecimal
dup
getstatic java.math.BigInteger.ZERO:Ljava/math/BigInteger;
lconst_0
bipush 12
iconst_1
invokespecial java.math.BigDecimal.<init>:(Ljava/math/BigInteger;JII)V
aastore
dup
bipush 13
32: new java.math.BigDecimal
dup
getstatic java.math.BigInteger.ZERO:Ljava/math/BigInteger;
lconst_0
bipush 13
iconst_1
invokespecial java.math.BigDecimal.<init>:(Ljava/math/BigInteger;JII)V
aastore
dup
bipush 14
33: new java.math.BigDecimal
dup
getstatic java.math.BigInteger.ZERO:Ljava/math/BigInteger;
lconst_0
bipush 14
iconst_1
invokespecial java.math.BigDecimal.<init>:(Ljava/math/BigInteger;JII)V
aastore
dup
bipush 15
34: new java.math.BigDecimal
dup
getstatic java.math.BigInteger.ZERO:Ljava/math/BigInteger;
lconst_0
bipush 15
iconst_1
invokespecial java.math.BigDecimal.<init>:(Ljava/math/BigInteger;JII)V
aastore
35: putstatic java.math.BigDecimal.ZERO_SCALED_BY:[Ljava/math/BigDecimal;
36: getstatic java.math.BigDecimal.ZERO_THROUGH_TEN:[Ljava/math/BigDecimal;
iconst_0
aaload
37: putstatic java.math.BigDecimal.ZERO:Ljava/math/BigDecimal;
38: getstatic java.math.BigDecimal.ZERO_THROUGH_TEN:[Ljava/math/BigDecimal;
iconst_1
aaload
39: putstatic java.math.BigDecimal.ONE:Ljava/math/BigDecimal;
40: getstatic java.math.BigDecimal.ZERO_THROUGH_TEN:[Ljava/math/BigDecimal;
bipush 10
aaload
41: putstatic java.math.BigDecimal.TEN:Ljava/math/BigDecimal;
42: lconst_1
iconst_1
invokestatic java.math.BigDecimal.valueOf:(JI)Ljava/math/BigDecimal;
putstatic java.math.BigDecimal.ONE_TENTH:Ljava/math/BigDecimal;
43: ldc 5
iconst_1
invokestatic java.math.BigDecimal.valueOf:(JI)Ljava/math/BigDecimal;
putstatic java.math.BigDecimal.ONE_HALF:Ljava/math/BigDecimal;
44: bipush 23
newarray 7
dup
iconst_0
45: dconst_1
dastore
dup
iconst_1
ldc 10.0
dastore
dup
iconst_2
ldc 100.0
dastore
dup
iconst_3
ldc 1000.0
dastore
dup
iconst_4
ldc 10000.0
dastore
dup
iconst_5
ldc 100000.0
dastore
dup
bipush 6
46: ldc 1000000.0
dastore
dup
bipush 7
ldc 1.0E7
dastore
dup
bipush 8
ldc 1.0E8
dastore
dup
bipush 9
ldc 1.0E9
dastore
dup
bipush 10
ldc 1.0E10
dastore
dup
bipush 11
ldc 1.0E11
dastore
dup
bipush 12
47: ldc 1.0E12
dastore
dup
bipush 13
ldc 1.0E13
dastore
dup
bipush 14
ldc 1.0E14
dastore
dup
bipush 15
ldc 1.0E15
dastore
dup
bipush 16
ldc 1.0E16
dastore
dup
bipush 17
ldc 1.0E17
dastore
dup
bipush 18
48: ldc 1.0E18
dastore
dup
bipush 19
ldc 1.0E19
dastore
dup
bipush 20
ldc 1.0E20
dastore
dup
bipush 21
ldc 1.0E21
dastore
dup
bipush 22
ldc 1.0E22
dastore
49: putstatic java.math.BigDecimal.DOUBLE_10_POW:[D
50: bipush 11
newarray 6
dup
iconst_0
51: fconst_1
fastore
dup
iconst_1
ldc 10.0
fastore
dup
iconst_2
ldc 100.0
fastore
dup
iconst_3
ldc 1000.0
fastore
dup
iconst_4
ldc 10000.0
fastore
dup
iconst_5
ldc 100000.0
fastore
dup
bipush 6
52: ldc 1000000.0
fastore
dup
bipush 7
ldc 1.0E7
fastore
dup
bipush 8
ldc 1.0E8
fastore
dup
bipush 9
ldc 1.0E9
fastore
dup
bipush 10
ldc 1.0E10
fastore
53: putstatic java.math.BigDecimal.FLOAT_10_POW:[F
54: bipush 19
newarray 11
dup
iconst_0
55: lconst_1
lastore
dup
iconst_1
56: ldc 10
lastore
dup
iconst_2
57: ldc 100
lastore
dup
iconst_3
58: ldc 1000
lastore
dup
iconst_4
59: ldc 10000
lastore
dup
iconst_5
60: ldc 100000
lastore
dup
bipush 6
61: ldc 1000000
lastore
dup
bipush 7
62: ldc 10000000
lastore
dup
bipush 8
63: ldc 100000000
lastore
dup
bipush 9
64: ldc 1000000000
lastore
dup
bipush 10
65: ldc 10000000000
lastore
dup
bipush 11
66: ldc 100000000000
lastore
dup
bipush 12
67: ldc 1000000000000
lastore
dup
bipush 13
68: ldc 10000000000000
lastore
dup
bipush 14
69: ldc 100000000000000
lastore
dup
bipush 15
70: ldc 1000000000000000
lastore
dup
bipush 16
71: ldc 10000000000000000
lastore
dup
bipush 17
72: ldc 100000000000000000
lastore
dup
bipush 18
73: ldc 1000000000000000000
lastore
74: putstatic java.math.BigDecimal.LONG_TEN_POWERS_TABLE:[J
75: bipush 19
anewarray java.math.BigInteger
dup
iconst_0
76: getstatic java.math.BigInteger.ONE:Ljava/math/BigInteger;
aastore
dup
iconst_1
77: ldc 10
invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
aastore
dup
iconst_2
78: ldc 100
invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
aastore
dup
iconst_3
79: ldc 1000
invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
aastore
dup
iconst_4
80: ldc 10000
invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
aastore
dup
iconst_5
81: ldc 100000
invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
aastore
dup
bipush 6
82: ldc 1000000
invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
aastore
dup
bipush 7
83: ldc 10000000
invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
aastore
dup
bipush 8
84: ldc 100000000
invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
aastore
dup
bipush 9
85: ldc 1000000000
invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
aastore
dup
bipush 10
86: ldc 10000000000
invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
aastore
dup
bipush 11
87: ldc 100000000000
invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
aastore
dup
bipush 12
88: ldc 1000000000000
invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
aastore
dup
bipush 13
89: ldc 10000000000000
invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
aastore
dup
bipush 14
90: ldc 100000000000000
invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
aastore
dup
bipush 15
91: ldc 1000000000000000
invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
aastore
dup
bipush 16
92: ldc 10000000000000000
invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
aastore
dup
bipush 17
93: ldc 100000000000000000
invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
aastore
dup
bipush 18
94: ldc 1000000000000000000
invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
aastore
95: putstatic java.math.BigDecimal.BIG_TEN_POWERS_TABLE:[Ljava/math/BigInteger;
96: getstatic java.math.BigDecimal.BIG_TEN_POWERS_TABLE:[Ljava/math/BigInteger;
arraylength
97: putstatic java.math.BigDecimal.BIG_TEN_POWERS_TABLE_INITLEN:I
98: bipush 16
getstatic java.math.BigDecimal.BIG_TEN_POWERS_TABLE_INITLEN:I
imul
99: putstatic java.math.BigDecimal.BIG_TEN_POWERS_TABLE_MAX:I
100: bipush 19
newarray 11
dup
iconst_0
101: ldc 9223372036854775807
lastore
dup
iconst_1
102: ldc 922337203685477580
lastore
dup
iconst_2
103: ldc 92233720368547758
lastore
dup
iconst_3
104: ldc 9223372036854775
lastore
dup
iconst_4
105: ldc 922337203685477
lastore
dup
iconst_5
106: ldc 92233720368547
lastore
dup
bipush 6
107: ldc 9223372036854
lastore
dup
bipush 7
108: ldc 922337203685
lastore
dup
bipush 8
109: ldc 92233720368
lastore
dup
bipush 9
110: ldc 9223372036
lastore
dup
bipush 10
111: ldc 922337203
lastore
dup
bipush 11
112: ldc 92233720
lastore
dup
bipush 12
113: ldc 9223372
lastore
dup
bipush 13
114: ldc 922337
lastore
dup
bipush 14
115: ldc 92233
lastore
dup
bipush 15
116: ldc 9223
lastore
dup
bipush 16
117: ldc 922
lastore
dup
bipush 17
118: ldc 92
lastore
dup
bipush 18
119: ldc 9
lastore
120: putstatic java.math.BigDecimal.THRESHOLDS_TABLE:[J
121: bipush 20
anewarray long[]
dup
iconst_0
122: iconst_2
newarray 11
dup
iconst_1
ldc -8446744073709551616
lastore
aastore
dup
iconst_1
123: iconst_2
newarray 11
dup
iconst_0
ldc 5
lastore
dup
iconst_1
ldc 7766279631452241920
lastore
aastore
dup
iconst_2
124: iconst_2
newarray 11
dup
iconst_0
ldc 54
lastore
dup
iconst_1
ldc 3875820019684212736
lastore
aastore
dup
iconst_3
125: iconst_2
newarray 11
dup
iconst_0
ldc 542
lastore
dup
iconst_1
ldc 1864712049423024128
lastore
aastore
dup
iconst_4
126: iconst_2
newarray 11
dup
iconst_0
ldc 5421
lastore
dup
iconst_1
ldc 200376420520689664
lastore
aastore
dup
iconst_5
127: iconst_2
newarray 11
dup
iconst_0
ldc 54210
lastore
dup
iconst_1
ldc 2003764205206896640
lastore
aastore
dup
bipush 6
128: iconst_2
newarray 11
dup
iconst_0
ldc 542101
lastore
dup
iconst_1
ldc 1590897978359414784
lastore
aastore
dup
bipush 7
129: iconst_2
newarray 11
dup
iconst_0
ldc 5421010
lastore
dup
iconst_1
ldc -2537764290115403776
lastore
aastore
dup
bipush 8
130: iconst_2
newarray 11
dup
iconst_0
ldc 54210108
lastore
dup
iconst_1
ldc -6930898827444486144
lastore
aastore
dup
bipush 9
131: iconst_2
newarray 11
dup
iconst_0
ldc 542101086
lastore
dup
iconst_1
ldc 4477988020393345024
lastore
aastore
dup
bipush 10
132: iconst_2
newarray 11
dup
iconst_0
ldc 5421010862
lastore
dup
iconst_1
ldc 7886392056514347008
lastore
aastore
dup
bipush 11
133: iconst_2
newarray 11
dup
iconst_0
ldc 54210108624
lastore
dup
iconst_1
ldc 5076944270305263616
lastore
aastore
dup
bipush 12
134: iconst_2
newarray 11
dup
iconst_0
ldc 542101086242
lastore
dup
iconst_1
ldc -4570789518076018688
lastore
aastore
dup
bipush 13
135: iconst_2
newarray 11
dup
iconst_0
ldc 5421010862427
lastore
dup
iconst_1
ldc -8814407033341083648
lastore
aastore
dup
bipush 14
136: iconst_2
newarray 11
dup
iconst_0
ldc 54210108624275
lastore
dup
iconst_1
ldc 4089650035136921600
lastore
aastore
dup
bipush 15
137: iconst_2
newarray 11
dup
iconst_0
ldc 542101086242752
lastore
dup
iconst_1
ldc 4003012203950112768
lastore
aastore
dup
bipush 16
138: iconst_2
newarray 11
dup
iconst_0
ldc 5421010862427522
lastore
dup
iconst_1
ldc 3136633892082024448
lastore
aastore
dup
bipush 17
139: iconst_2
newarray 11
dup
iconst_0
ldc 54210108624275221
lastore
dup
iconst_1
ldc -5527149226598858752
lastore
aastore
dup
bipush 18
140: iconst_2
newarray 11
dup
iconst_0
ldc 542101086242752217
lastore
dup
iconst_1
ldc 68739955140067328
lastore
aastore
dup
bipush 19
141: iconst_2
newarray 11
dup
iconst_0
ldc 5421010862427522170
lastore
dup
iconst_1
ldc 687399551400673280
lastore
aastore
142: putstatic java.math.BigDecimal.LONGLONG_TEN_POWERS_TABLE:[[J
143: return
LocalVariableTable:
Start End Slot Name Signature
void <init>(java.math.BigInteger, long, int, int);
descriptor: (Ljava/math/BigInteger;JII)V
flags: (0x0000)
Code:
stack=3, locals=6, args_size=5
start local 0 start local 1 start local 2 start local 4 start local 5 0: aload 0
invokespecial java.lang.Number.<init>:()V
1: aload 0
iload 4
putfield java.math.BigDecimal.scale:I
2: aload 0
iload 5
putfield java.math.BigDecimal.precision:I
3: aload 0
lload 2
putfield java.math.BigDecimal.intCompact:J
4: aload 0
aload 1
putfield java.math.BigDecimal.intVal:Ljava/math/BigInteger;
5: return
end local 5 end local 4 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Ljava/math/BigDecimal;
0 6 1 intVal Ljava/math/BigInteger;
0 6 2 val J
0 6 4 scale I
0 6 5 prec I
MethodParameters:
Name Flags
intVal
val
scale
prec
public void <init>(char[], int, int);
descriptor: ([CII)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=4, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 0
aload 1
iload 2
iload 3
getstatic java.math.MathContext.UNLIMITED:Ljava/math/MathContext;
invokespecial java.math.BigDecimal.<init>:([CIILjava/math/MathContext;)V
1: return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Ljava/math/BigDecimal;
0 2 1 in [C
0 2 2 offset I
0 2 3 len I
MethodParameters:
Name Flags
in
offset
len
public void <init>(char[], int, int, java.math.MathContext);
descriptor: ([CIILjava/math/MathContext;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=20, args_size=5
start local 0 start local 1 start local 2 start local 3 start local 4 0: aload 0
invokespecial java.lang.Number.<init>:()V
1: iload 2
iload 3
aload 1
arraylength
invokestatic java.util.Objects.checkFromIndexSize:(III)I
pop
2: goto 7
StackMap locals: java.math.BigDecimal char[] int int java.math.MathContext
StackMap stack: java.lang.IndexOutOfBoundsException
3: pop
4: new java.lang.NumberFormatException
dup
5: ldc "Bad offset or len arguments for char[] input."
6: invokespecial java.lang.NumberFormatException.<init>:(Ljava/lang/String;)V
athrow
7: StackMap locals:
StackMap stack:
iconst_0
istore 5
start local 5 8: iconst_0
istore 6
start local 6 9: lconst_0
lstore 7
start local 7 10: aconst_null
astore 9
start local 9 11: iconst_0
istore 10
start local 10 12: aload 1
iload 2
caload
bipush 45
if_icmpne 17
13: iconst_1
istore 10
14: iinc 2 1
15: iinc 3 -1
16: goto 20
StackMap locals: java.math.BigDecimal char[] int int java.math.MathContext int int long java.math.BigInteger int
StackMap stack:
17: aload 1
iload 2
caload
bipush 43
if_icmpne 20
18: iinc 2 1
19: iinc 3 -1
20: StackMap locals:
StackMap stack:
iconst_0
istore 11
start local 11 21: lconst_0
lstore 12
start local 12 22: iload 3
bipush 18
if_icmpgt 23
iconst_1
goto 24
StackMap locals: int long
StackMap stack:
23: iconst_0
StackMap locals:
StackMap stack: int
24: istore 15
start local 15 25: iconst_0
istore 16
start local 16 26: iload 15
ifeq 93
27: goto 75
28: StackMap locals: java.math.BigDecimal char[] int int java.math.MathContext int int long java.math.BigInteger int int long top int int
StackMap stack:
aload 1
iload 2
caload
istore 14
start local 14 29: iload 14
bipush 48
if_icmpne 38
30: iload 5
ifne 32
31: iconst_1
istore 5
goto 35
32: StackMap locals: java.math.BigDecimal char[] int int java.math.MathContext int int long java.math.BigInteger int int long int int int
StackMap stack:
lload 7
lconst_0
lcmp
ifeq 35
33: lload 7
ldc 10
lmul
lstore 7
34: iinc 5 1
35: StackMap locals:
StackMap stack:
iload 11
ifeq 74
36: iinc 6 1
37: goto 74
StackMap locals:
StackMap stack:
38: iload 14
bipush 49
if_icmplt 46
iload 14
bipush 57
if_icmpgt 46
39: iload 14
bipush 48
isub
istore 17
start local 17 40: iload 5
iconst_1
if_icmpne 41
lload 7
lconst_0
lcmp
ifeq 42
41: StackMap locals: int
StackMap stack:
iinc 5 1
42: StackMap locals:
StackMap stack:
lload 7
ldc 10
lmul
iload 17
i2l
ladd
lstore 7
43: iload 11
ifeq 74
44: iinc 6 1
end local 17 45: goto 74
StackMap locals:
StackMap stack:
46: iload 14
bipush 46
if_icmpne 51
47: iload 11
ifeq 49
48: new java.lang.NumberFormatException
dup
ldc "Character array contains more than one decimal point."
invokespecial java.lang.NumberFormatException.<init>:(Ljava/lang/String;)V
athrow
49: StackMap locals:
StackMap stack:
iconst_1
istore 11
50: goto 74
StackMap locals:
StackMap stack:
51: iload 14
invokestatic java.lang.Character.isDigit:(C)Z
ifeq 66
52: iload 14
bipush 10
invokestatic java.lang.Character.digit:(CI)I
istore 17
start local 17 53: iload 17
ifne 60
54: iload 5
ifne 56
55: iconst_1
istore 5
goto 63
56: StackMap locals: int
StackMap stack:
lload 7
lconst_0
lcmp
ifeq 63
57: lload 7
ldc 10
lmul
lstore 7
58: iinc 5 1
59: goto 63
60: StackMap locals:
StackMap stack:
iload 5
iconst_1
if_icmpne 61
lload 7
lconst_0
lcmp
ifeq 62
61: StackMap locals:
StackMap stack:
iinc 5 1
62: StackMap locals:
StackMap stack:
lload 7
ldc 10
lmul
iload 17
i2l
ladd
lstore 7
63: StackMap locals:
StackMap stack:
iload 11
ifeq 74
64: iinc 6 1
end local 17 65: goto 74
StackMap locals:
StackMap stack:
66: iload 14
bipush 101
if_icmpeq 67
iload 14
bipush 69
if_icmpne 70
67: StackMap locals:
StackMap stack:
aload 1
iload 2
iload 3
invokestatic java.math.BigDecimal.parseExp:([CII)J
lstore 12
68: lload 12
l2i
i2l
lload 12
lcmp
ifeq 76
69: new java.lang.NumberFormatException
dup
ldc "Exponent overflow."
invokespecial java.lang.NumberFormatException.<init>:(Ljava/lang/String;)V
athrow
70: StackMap locals:
StackMap stack:
new java.lang.NumberFormatException
dup
new java.lang.StringBuilder
dup
ldc "Character "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
iload 14
invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
71: ldc " is neither a decimal digit number, decimal point, nor"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
72: ldc " \"e\" notation exponential mark."
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
73: invokespecial java.lang.NumberFormatException.<init>:(Ljava/lang/String;)V
athrow
74: StackMap locals:
StackMap stack:
iinc 2 1
iinc 3 -1
end local 14 StackMap locals: java.math.BigDecimal char[] int int java.math.MathContext int int long java.math.BigInteger int int long top int int
StackMap stack:
75: iload 3
ifgt 28
76: StackMap locals:
StackMap stack:
iload 5
ifne 78
77: new java.lang.NumberFormatException
dup
ldc "No digits found."
invokespecial java.lang.NumberFormatException.<init>:(Ljava/lang/String;)V
athrow
78: StackMap locals:
StackMap stack:
lload 12
lconst_0
lcmp
ifeq 80
79: aload 0
iload 6
lload 12
invokevirtual java.math.BigDecimal.adjustScale:(IJ)I
istore 6
80: StackMap locals:
StackMap stack:
iload 10
ifeq 81
lload 7
lneg
goto 82
StackMap locals:
StackMap stack:
81: lload 7
StackMap locals:
StackMap stack: long
82: lstore 7
83: aload 4
getfield java.math.MathContext.precision:I
istore 17
start local 17 84: iload 5
iload 17
isub
istore 18
start local 18 85: iload 17
ifle 161
iload 18
ifle 161
86: goto 91
87: StackMap locals: int int
StackMap stack:
iload 6
i2l
iload 18
i2l
lsub
invokestatic java.math.BigDecimal.checkScaleNonZero:(J)I
istore 6
88: lload 7
getstatic java.math.BigDecimal.LONG_TEN_POWERS_TABLE:[J
iload 18
laload
aload 4
getfield java.math.MathContext.roundingMode:Ljava/math/RoundingMode;
getfield java.math.RoundingMode.oldMode:I
invokestatic java.math.BigDecimal.divideAndRound:(JJI)J
lstore 7
89: lload 7
invokestatic java.math.BigDecimal.longDigitLength:(J)I
istore 5
90: iload 5
iload 17
isub
istore 18
91: StackMap locals:
StackMap stack:
iload 18
ifgt 87
end local 18 end local 17 92: goto 161
93: StackMap locals:
StackMap stack:
iload 3
newarray 5
astore 17
start local 17 94: goto 124
95: StackMap locals: char[]
StackMap stack:
aload 1
iload 2
caload
istore 14
start local 14 96: iload 14
bipush 48
if_icmplt 97
iload 14
bipush 57
if_icmple 98
StackMap locals: java.math.BigDecimal char[] int int java.math.MathContext int int long java.math.BigInteger int int long int int int char[]
StackMap stack:
97: iload 14
invokestatic java.lang.Character.isDigit:(C)Z
ifeq 113
98: StackMap locals:
StackMap stack:
iload 14
bipush 48
if_icmpeq 99
iload 14
bipush 10
invokestatic java.lang.Character.digit:(CI)I
ifne 107
99: StackMap locals:
StackMap stack:
iload 5
ifne 103
100: aload 17
iload 16
iload 14
castore
101: iconst_1
istore 5
102: goto 110
StackMap locals:
StackMap stack:
103: iload 16
ifeq 110
104: aload 17
iload 16
iinc 16 1
iload 14
castore
105: iinc 5 1
106: goto 110
107: StackMap locals:
StackMap stack:
iload 5
iconst_1
if_icmpne 108
iload 16
ifeq 109
108: StackMap locals:
StackMap stack:
iinc 5 1
109: StackMap locals:
StackMap stack:
aload 17
iload 16
iinc 16 1
iload 14
castore
110: StackMap locals:
StackMap stack:
iload 11
ifeq 123
111: iinc 6 1
112: goto 123
113: StackMap locals:
StackMap stack:
iload 14
bipush 46
if_icmpne 118
114: iload 11
ifeq 116
115: new java.lang.NumberFormatException
dup
ldc "Character array contains more than one decimal point."
invokespecial java.lang.NumberFormatException.<init>:(Ljava/lang/String;)V
athrow
116: StackMap locals:
StackMap stack:
iconst_1
istore 11
117: goto 123
118: StackMap locals:
StackMap stack:
iload 14
bipush 101
if_icmpeq 120
iload 14
bipush 69
if_icmpeq 120
119: new java.lang.NumberFormatException
dup
ldc "Character array is missing \"e\" notation exponential mark."
invokespecial java.lang.NumberFormatException.<init>:(Ljava/lang/String;)V
athrow
120: StackMap locals:
StackMap stack:
aload 1
iload 2
iload 3
invokestatic java.math.BigDecimal.parseExp:([CII)J
lstore 12
121: lload 12
l2i
i2l
lload 12
lcmp
ifeq 125
122: new java.lang.NumberFormatException
dup
ldc "Exponent overflow."
invokespecial java.lang.NumberFormatException.<init>:(Ljava/lang/String;)V
athrow
123: StackMap locals:
StackMap stack:
iinc 2 1
iinc 3 -1
end local 14 StackMap locals: java.math.BigDecimal char[] int int java.math.MathContext int int long java.math.BigInteger int int long top int int char[]
StackMap stack:
124: iload 3
ifgt 95
125: StackMap locals:
StackMap stack:
iload 5
ifne 127
126: new java.lang.NumberFormatException
dup
ldc "No digits found."
invokespecial java.lang.NumberFormatException.<init>:(Ljava/lang/String;)V
athrow
127: StackMap locals:
StackMap stack:
lload 12
lconst_0
lcmp
ifeq 129
128: aload 0
iload 6
lload 12
invokevirtual java.math.BigDecimal.adjustScale:(IJ)I
istore 6
129: StackMap locals:
StackMap stack:
new java.math.BigInteger
dup
aload 17
iload 10
ifeq 130
iconst_m1
goto 131
StackMap locals: java.math.BigDecimal char[] int int java.math.MathContext int int long java.math.BigInteger int int long top int int char[]
StackMap stack: new 129 new 129 char[]
130: iconst_1
StackMap locals: java.math.BigDecimal char[] int int java.math.MathContext int int long java.math.BigInteger int int long top int int char[]
StackMap stack: new 129 new 129 char[] int
131: iload 5
invokespecial java.math.BigInteger.<init>:([CII)V
astore 9
132: aload 9
invokestatic java.math.BigDecimal.compactValFor:(Ljava/math/BigInteger;)J
lstore 7
133: aload 4
getfield java.math.MathContext.precision:I
istore 18
start local 18 134: iload 18
ifle 161
iload 5
iload 18
if_icmple 161
135: lload 7
ldc -9223372036854775808
lcmp
ifne 147
136: iload 5
iload 18
isub
istore 19
start local 19 137: goto 146
138: StackMap locals: int int
StackMap stack:
iload 6
i2l
iload 19
i2l
lsub
invokestatic java.math.BigDecimal.checkScaleNonZero:(J)I
istore 6
139: aload 9
iload 19
aload 4
getfield java.math.MathContext.roundingMode:Ljava/math/RoundingMode;
getfield java.math.RoundingMode.oldMode:I
invokestatic java.math.BigDecimal.divideAndRoundByTenPow:(Ljava/math/BigInteger;II)Ljava/math/BigInteger;
astore 9
140: aload 9
invokestatic java.math.BigDecimal.compactValFor:(Ljava/math/BigInteger;)J
lstore 7
141: lload 7
ldc -9223372036854775808
lcmp
ifeq 144
142: lload 7
invokestatic java.math.BigDecimal.longDigitLength:(J)I
istore 5
143: goto 147
144: StackMap locals:
StackMap stack:
aload 9
invokestatic java.math.BigDecimal.bigDigitLength:(Ljava/math/BigInteger;)I
istore 5
145: iload 5
iload 18
isub
istore 19
146: StackMap locals:
StackMap stack:
iload 19
ifgt 138
end local 19 147: StackMap locals:
StackMap stack:
lload 7
ldc -9223372036854775808
lcmp
ifeq 161
148: iload 5
iload 18
isub
istore 19
start local 19 149: goto 154
150: StackMap locals: int
StackMap stack:
iload 6
i2l
iload 19
i2l
lsub
invokestatic java.math.BigDecimal.checkScaleNonZero:(J)I
istore 6
151: lload 7
getstatic java.math.BigDecimal.LONG_TEN_POWERS_TABLE:[J
iload 19
laload
aload 4
getfield java.math.MathContext.roundingMode:Ljava/math/RoundingMode;
getfield java.math.RoundingMode.oldMode:I
invokestatic java.math.BigDecimal.divideAndRound:(JJI)J
lstore 7
152: lload 7
invokestatic java.math.BigDecimal.longDigitLength:(J)I
istore 5
153: iload 5
iload 18
isub
istore 19
154: StackMap locals:
StackMap stack:
iload 19
ifgt 150
155: aconst_null
astore 9
end local 19 end local 18 end local 17 end local 16 end local 15 end local 12 end local 11 end local 10 156: goto 161
StackMap locals: java.math.BigDecimal char[] int int java.math.MathContext int int long java.math.BigInteger
StackMap stack: java.lang.RuntimeException
157: astore 10
start local 10 158: new java.lang.NumberFormatException
dup
invokespecial java.lang.NumberFormatException.<init>:()V
astore 11
start local 11 159: aload 11
aload 10
invokevirtual java.lang.NumberFormatException.initCause:(Ljava/lang/Throwable;)Ljava/lang/Throwable;
pop
160: aload 11
athrow
end local 11 end local 10 161: StackMap locals:
StackMap stack:
aload 0
iload 6
putfield java.math.BigDecimal.scale:I
162: aload 0
iload 5
putfield java.math.BigDecimal.precision:I
163: aload 0
lload 7
putfield java.math.BigDecimal.intCompact:J
164: aload 0
aload 9
putfield java.math.BigDecimal.intVal:Ljava/math/BigInteger;
165: return
end local 9 end local 7 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 166 0 this Ljava/math/BigDecimal;
0 166 1 in [C
0 166 2 offset I
0 166 3 len I
0 166 4 mc Ljava/math/MathContext;
8 166 5 prec I
9 166 6 scl I
10 166 7 rs J
11 166 9 rb Ljava/math/BigInteger;
12 156 10 isneg Z
21 156 11 dot Z
22 156 12 exp J
29 75 14 c C
96 124 14 c C
25 156 15 isCompact Z
26 156 16 idx I
40 45 17 digit I
53 65 17 digit I
84 92 17 mcp I
85 92 18 drop I
94 156 17 coeff [C
134 156 18 mcp I
137 147 19 drop I
149 156 19 drop I
158 161 10 e Ljava/lang/RuntimeException;
159 161 11 nfe Ljava/lang/NumberFormatException;
Exception table:
from to target type
1 2 3 Class java.lang.IndexOutOfBoundsException
11 156 157 Class java.lang.ArrayIndexOutOfBoundsException
11 156 157 Class java.lang.NegativeArraySizeException
MethodParameters:
Name Flags
in
offset
len
mc
private int adjustScale(int, long);
descriptor: (IJ)I
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=6, args_size=3
start local 0 start local 1 start local 2 0: iload 1
i2l
lload 2
lsub
lstore 4
start local 4 1: lload 4
ldc 2147483647
lcmp
ifgt 2
lload 4
ldc -2147483648
lcmp
ifge 3
2: StackMap locals: long
StackMap stack:
new java.lang.NumberFormatException
dup
ldc "Scale out of range."
invokespecial java.lang.NumberFormatException.<init>:(Ljava/lang/String;)V
athrow
3: StackMap locals:
StackMap stack:
lload 4
l2i
istore 1
4: iload 1
ireturn
end local 4 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Ljava/math/BigDecimal;
0 5 1 scl I
0 5 2 exp J
1 5 4 adjustedScale J
MethodParameters:
Name Flags
scl
exp
private static long parseExp(char[], int, int);
descriptor: ([CII)J
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=4, locals=8, args_size=3
start local 0 start local 1 start local 2 0: lconst_0
lstore 3
start local 3 1: iinc 1 1
2: aload 0
iload 1
caload
istore 5
start local 5 3: iinc 2 -1
4: iload 5
bipush 45
if_icmpne 5
iconst_1
goto 6
StackMap locals: long int
StackMap stack:
5: iconst_0
StackMap locals:
StackMap stack: int
6: istore 6
start local 6 7: iload 6
ifne 8
iload 5
bipush 43
if_icmpne 11
8: StackMap locals: int
StackMap stack:
iinc 1 1
9: aload 0
iload 1
caload
istore 5
10: iinc 2 -1
11: StackMap locals:
StackMap stack:
iload 2
ifgt 16
12: new java.lang.NumberFormatException
dup
ldc "No exponent digits."
invokespecial java.lang.NumberFormatException.<init>:(Ljava/lang/String;)V
athrow
13: StackMap locals:
StackMap stack:
iinc 1 1
14: aload 0
iload 1
caload
istore 5
15: iinc 2 -1
16: StackMap locals:
StackMap stack:
iload 2
bipush 10
if_icmple 17
iload 5
bipush 48
if_icmpeq 13
iload 5
bipush 10
invokestatic java.lang.Character.digit:(CI)I
ifeq 13
17: StackMap locals:
StackMap stack:
iload 2
bipush 10
if_icmple 19
18: new java.lang.NumberFormatException
dup
ldc "Too many nonzero exponent digits."
invokespecial java.lang.NumberFormatException.<init>:(Ljava/lang/String;)V
athrow
19: StackMap locals:
StackMap stack:
iload 5
bipush 48
if_icmplt 22
iload 5
bipush 57
if_icmpgt 22
20: iload 5
bipush 48
isub
istore 7
start local 7 21: goto 25
end local 7 22: StackMap locals:
StackMap stack:
iload 5
bipush 10
invokestatic java.lang.Character.digit:(CI)I
istore 7
start local 7 23: iload 7
ifge 25
24: new java.lang.NumberFormatException
dup
ldc "Not a digit."
invokespecial java.lang.NumberFormatException.<init>:(Ljava/lang/String;)V
athrow
25: StackMap locals: int
StackMap stack:
lload 3
ldc 10
lmul
iload 7
i2l
ladd
lstore 3
26: iload 2
iconst_1
if_icmpne 28
27: goto 31
28: StackMap locals:
StackMap stack:
iinc 1 1
29: aload 0
iload 1
caload
istore 5
end local 7 30: iinc 2 -1
goto 19
31: StackMap locals:
StackMap stack:
iload 6
ifeq 33
32: lload 3
lneg
lstore 3
33: StackMap locals:
StackMap stack:
lload 3
lreturn
end local 6 end local 5 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 34 0 in [C
0 34 1 offset I
0 34 2 len I
1 34 3 exp J
3 34 5 c C
7 34 6 negexp Z
21 22 7 v I
23 30 7 v I
MethodParameters:
Name Flags
in
offset
len
public void <init>(char[]);
descriptor: ([C)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=2, args_size=2
start local 0 start local 1 0: aload 0
aload 1
iconst_0
aload 1
arraylength
invokespecial java.math.BigDecimal.<init>:([CII)V
1: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Ljava/math/BigDecimal;
0 2 1 in [C
MethodParameters:
Name Flags
in
public void <init>(char[], java.math.MathContext);
descriptor: ([CLjava/math/MathContext;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 0
aload 1
iconst_0
aload 1
arraylength
aload 2
invokespecial java.math.BigDecimal.<init>:([CIILjava/math/MathContext;)V
1: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Ljava/math/BigDecimal;
0 2 1 in [C
0 2 2 mc Ljava/math/MathContext;
MethodParameters:
Name Flags
in
mc
public void <init>(java.lang.String);
descriptor: (Ljava/lang/String;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=2, args_size=2
start local 0 start local 1 0: aload 0
aload 1
invokevirtual java.lang.String.toCharArray:()[C
iconst_0
aload 1
invokevirtual java.lang.String.length:()I
invokespecial java.math.BigDecimal.<init>:([CII)V
1: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Ljava/math/BigDecimal;
0 2 1 val Ljava/lang/String;
MethodParameters:
Name Flags
val
public void <init>(java.lang.String, java.math.MathContext);
descriptor: (Ljava/lang/String;Ljava/math/MathContext;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 0
aload 1
invokevirtual java.lang.String.toCharArray:()[C
iconst_0
aload 1
invokevirtual java.lang.String.length:()I
aload 2
invokespecial java.math.BigDecimal.<init>:([CIILjava/math/MathContext;)V
1: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Ljava/math/BigDecimal;
0 2 1 val Ljava/lang/String;
0 2 2 mc Ljava/math/MathContext;
MethodParameters:
Name Flags
val
mc
public void <init>(double);
descriptor: (D)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=3, args_size=2
start local 0 start local 1 0: aload 0
dload 1
getstatic java.math.MathContext.UNLIMITED:Ljava/math/MathContext;
invokespecial java.math.BigDecimal.<init>:(DLjava/math/MathContext;)V
1: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Ljava/math/BigDecimal;
0 2 1 val D
MethodParameters:
Name Flags
val
public void <init>(double, java.math.MathContext);
descriptor: (DLjava/math/MathContext;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=18, args_size=3
start local 0 start local 1 start local 3 0: aload 0
invokespecial java.lang.Number.<init>:()V
1: dload 1
invokestatic java.lang.Double.isInfinite:(D)Z
ifne 2
dload 1
invokestatic java.lang.Double.isNaN:(D)Z
ifeq 3
2: StackMap locals: java.math.BigDecimal double java.math.MathContext
StackMap stack:
new java.lang.NumberFormatException
dup
ldc "Infinite or NaN"
invokespecial java.lang.NumberFormatException.<init>:(Ljava/lang/String;)V
athrow
3: StackMap locals:
StackMap stack:
dload 1
invokestatic java.lang.Double.doubleToLongBits:(D)J
lstore 4
start local 4 4: lload 4
bipush 63
lshr
lconst_0
lcmp
ifne 5
iconst_1
goto 6
StackMap locals: long
StackMap stack:
5: iconst_m1
StackMap locals:
StackMap stack: int
6: istore 6
start local 6 7: lload 4
bipush 52
lshr
ldc 2047
land
l2i
istore 7
start local 7 8: iload 7
ifne 10
9: lload 4
ldc 4503599627370495
land
iconst_1
lshl
goto 11
10: StackMap locals: int int
StackMap stack:
lload 4
ldc 4503599627370495
land
ldc 4503599627370496
lor
11: StackMap locals:
StackMap stack: long
lstore 8
start local 8 12: iinc 7 -1075
13: lload 8
lconst_0
lcmp
ifne 21
14: aload 0
getstatic java.math.BigInteger.ZERO:Ljava/math/BigInteger;
putfield java.math.BigDecimal.intVal:Ljava/math/BigInteger;
15: aload 0
iconst_0
putfield java.math.BigDecimal.scale:I
16: aload 0
lconst_0
putfield java.math.BigDecimal.intCompact:J
17: aload 0
iconst_1
putfield java.math.BigDecimal.precision:I
18: return
19: StackMap locals: long
StackMap stack:
lload 8
iconst_1
lshr
lstore 8
20: iinc 7 1
21: StackMap locals:
StackMap stack:
lload 8
lconst_1
land
lconst_0
lcmp
ifeq 19
22: iconst_0
istore 10
start local 10 23: iload 6
i2l
lload 8
lmul
lstore 12
start local 12 24: iload 7
ifne 29
25: lload 12
ldc -9223372036854775808
lcmp
ifne 26
getstatic java.math.BigDecimal.INFLATED_BIGINT:Ljava/math/BigInteger;
goto 27
StackMap locals: java.math.BigDecimal double java.math.MathContext long int int long int top long
StackMap stack:
26: aconst_null
StackMap locals:
StackMap stack: java.math.BigInteger
27: astore 11
start local 11 28: goto 35
end local 11 29: StackMap locals:
StackMap stack:
iload 7
ifge 33
30: ldc 5
invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
iload 7
ineg
invokevirtual java.math.BigInteger.pow:(I)Ljava/math/BigInteger;
lload 12
invokevirtual java.math.BigInteger.multiply:(J)Ljava/math/BigInteger;
astore 11
start local 11 31: iload 7
ineg
istore 10
32: goto 34
end local 11 33: StackMap locals:
StackMap stack:
getstatic java.math.BigInteger.TWO:Ljava/math/BigInteger;
iload 7
invokevirtual java.math.BigInteger.pow:(I)Ljava/math/BigInteger;
lload 12
invokevirtual java.math.BigInteger.multiply:(J)Ljava/math/BigInteger;
astore 11
start local 11 34: StackMap locals: java.math.BigDecimal double java.math.MathContext long int int long int java.math.BigInteger long
StackMap stack:
aload 11
invokestatic java.math.BigDecimal.compactValFor:(Ljava/math/BigInteger;)J
lstore 12
35: StackMap locals:
StackMap stack:
iconst_0
istore 14
start local 14 36: aload 3
getfield java.math.MathContext.precision:I
istore 15
start local 15 37: iload 15
ifle 61
38: aload 3
getfield java.math.MathContext.roundingMode:Ljava/math/RoundingMode;
getfield java.math.RoundingMode.oldMode:I
istore 16
start local 16 39: lload 12
ldc -9223372036854775808
lcmp
ifne 51
40: aload 11
invokestatic java.math.BigDecimal.bigDigitLength:(Ljava/math/BigInteger;)I
istore 14
41: iload 14
iload 15
isub
istore 17
start local 17 42: goto 50
43: StackMap locals: java.math.BigDecimal double java.math.MathContext long int int long int java.math.BigInteger long int int int int
StackMap stack:
iload 10
i2l
iload 17
i2l
lsub
invokestatic java.math.BigDecimal.checkScaleNonZero:(J)I
istore 10
44: aload 11
iload 17
iload 16
invokestatic java.math.BigDecimal.divideAndRoundByTenPow:(Ljava/math/BigInteger;II)Ljava/math/BigInteger;
astore 11
45: aload 11
invokestatic java.math.BigDecimal.compactValFor:(Ljava/math/BigInteger;)J
lstore 12
46: lload 12
ldc -9223372036854775808
lcmp
ifeq 48
47: goto 51
48: StackMap locals:
StackMap stack:
aload 11
invokestatic java.math.BigDecimal.bigDigitLength:(Ljava/math/BigInteger;)I
istore 14
49: iload 14
iload 15
isub
istore 17
50: StackMap locals:
StackMap stack:
iload 17
ifgt 43
end local 17 51: StackMap locals:
StackMap stack:
lload 12
ldc -9223372036854775808
lcmp
ifeq 61
52: lload 12
invokestatic java.math.BigDecimal.longDigitLength:(J)I
istore 14
53: iload 14
iload 15
isub
istore 17
start local 17 54: goto 59
55: StackMap locals: int
StackMap stack:
iload 10
i2l
iload 17
i2l
lsub
invokestatic java.math.BigDecimal.checkScaleNonZero:(J)I
istore 10
56: lload 12
getstatic java.math.BigDecimal.LONG_TEN_POWERS_TABLE:[J
iload 17
laload
aload 3
getfield java.math.MathContext.roundingMode:Ljava/math/RoundingMode;
getfield java.math.RoundingMode.oldMode:I
invokestatic java.math.BigDecimal.divideAndRound:(JJI)J
lstore 12
57: lload 12
invokestatic java.math.BigDecimal.longDigitLength:(J)I
istore 14
58: iload 14
iload 15
isub
istore 17
59: StackMap locals:
StackMap stack:
iload 17
ifgt 55
60: aconst_null
astore 11
end local 17 end local 16 61: StackMap locals:
StackMap stack:
aload 0
aload 11
putfield java.math.BigDecimal.intVal:Ljava/math/BigInteger;
62: aload 0
lload 12
putfield java.math.BigDecimal.intCompact:J
63: aload 0
iload 10
putfield java.math.BigDecimal.scale:I
64: aload 0
iload 14
putfield java.math.BigDecimal.precision:I
65: return
end local 15 end local 14 end local 12 end local 11 end local 10 end local 8 end local 7 end local 6 end local 4 end local 3 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 66 0 this Ljava/math/BigDecimal;
0 66 1 val D
0 66 3 mc Ljava/math/MathContext;
4 66 4 valBits J
7 66 6 sign I
8 66 7 exponent I
12 66 8 significand J
23 66 10 scl I
28 29 11 rb Ljava/math/BigInteger;
31 33 11 rb Ljava/math/BigInteger;
34 66 11 rb Ljava/math/BigInteger;
24 66 12 compactVal J
36 66 14 prec I
37 66 15 mcp I
39 61 16 mode I
42 51 17 drop I
54 61 17 drop I
MethodParameters:
Name Flags
val
mc
public void <init>(java.math.BigInteger);
descriptor: (Ljava/math/BigInteger;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=2, args_size=2
start local 0 start local 1 0: aload 0
invokespecial java.lang.Number.<init>:()V
1: aload 0
iconst_0
putfield java.math.BigDecimal.scale:I
2: aload 0
aload 1
putfield java.math.BigDecimal.intVal:Ljava/math/BigInteger;
3: aload 0
aload 1
invokestatic java.math.BigDecimal.compactValFor:(Ljava/math/BigInteger;)J
putfield java.math.BigDecimal.intCompact:J
4: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Ljava/math/BigDecimal;
0 5 1 val Ljava/math/BigInteger;
MethodParameters:
Name Flags
val
public void <init>(java.math.BigInteger, java.math.MathContext);
descriptor: (Ljava/math/BigInteger;Ljava/math/MathContext;)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
iconst_0
aload 2
invokespecial java.math.BigDecimal.<init>:(Ljava/math/BigInteger;ILjava/math/MathContext;)V
1: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Ljava/math/BigDecimal;
0 2 1 val Ljava/math/BigInteger;
0 2 2 mc Ljava/math/MathContext;
MethodParameters:
Name Flags
val
mc
public void <init>(java.math.BigInteger, int);
descriptor: (Ljava/math/BigInteger;I)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 0
invokespecial java.lang.Number.<init>:()V
1: aload 0
aload 1
putfield java.math.BigDecimal.intVal:Ljava/math/BigInteger;
2: aload 0
aload 1
invokestatic java.math.BigDecimal.compactValFor:(Ljava/math/BigInteger;)J
putfield java.math.BigDecimal.intCompact:J
3: aload 0
iload 2
putfield java.math.BigDecimal.scale:I
4: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Ljava/math/BigDecimal;
0 5 1 unscaledVal Ljava/math/BigInteger;
0 5 2 scale I
MethodParameters:
Name Flags
unscaledVal
scale
public void <init>(java.math.BigInteger, int, java.math.MathContext);
descriptor: (Ljava/math/BigInteger;ILjava/math/MathContext;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=10, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 0
invokespecial java.lang.Number.<init>:()V
1: aload 1
invokestatic java.math.BigDecimal.compactValFor:(Ljava/math/BigInteger;)J
lstore 4
start local 4 2: aload 3
getfield java.math.MathContext.precision:I
istore 6
start local 6 3: iconst_0
istore 7
start local 7 4: iload 6
ifle 28
5: aload 3
getfield java.math.MathContext.roundingMode:Ljava/math/RoundingMode;
getfield java.math.RoundingMode.oldMode:I
istore 8
start local 8 6: lload 4
ldc -9223372036854775808
lcmp
ifne 18
7: aload 1
invokestatic java.math.BigDecimal.bigDigitLength:(Ljava/math/BigInteger;)I
istore 7
8: iload 7
iload 6
isub
istore 9
start local 9 9: goto 17
10: StackMap locals: java.math.BigDecimal java.math.BigInteger int java.math.MathContext long int int int int
StackMap stack:
iload 2
i2l
iload 9
i2l
lsub
invokestatic java.math.BigDecimal.checkScaleNonZero:(J)I
istore 2
11: aload 1
iload 9
iload 8
invokestatic java.math.BigDecimal.divideAndRoundByTenPow:(Ljava/math/BigInteger;II)Ljava/math/BigInteger;
astore 1
12: aload 1
invokestatic java.math.BigDecimal.compactValFor:(Ljava/math/BigInteger;)J
lstore 4
13: lload 4
ldc -9223372036854775808
lcmp
ifeq 15
14: goto 18
15: StackMap locals:
StackMap stack:
aload 1
invokestatic java.math.BigDecimal.bigDigitLength:(Ljava/math/BigInteger;)I
istore 7
16: iload 7
iload 6
isub
istore 9
17: StackMap locals:
StackMap stack:
iload 9
ifgt 10
end local 9 18: StackMap locals:
StackMap stack:
lload 4
ldc -9223372036854775808
lcmp
ifeq 28
19: lload 4
invokestatic java.math.BigDecimal.longDigitLength:(J)I
istore 7
20: iload 7
iload 6
isub
istore 9
start local 9 21: goto 26
22: StackMap locals: int
StackMap stack:
iload 2
i2l
iload 9
i2l
lsub
invokestatic java.math.BigDecimal.checkScaleNonZero:(J)I
istore 2
23: lload 4
getstatic java.math.BigDecimal.LONG_TEN_POWERS_TABLE:[J
iload 9
laload
iload 8
invokestatic java.math.BigDecimal.divideAndRound:(JJI)J
lstore 4
24: lload 4
invokestatic java.math.BigDecimal.longDigitLength:(J)I
istore 7
25: iload 7
iload 6
isub
istore 9
26: StackMap locals:
StackMap stack:
iload 9
ifgt 22
27: aconst_null
astore 1
end local 9 end local 8 28: StackMap locals:
StackMap stack:
aload 0
aload 1
putfield java.math.BigDecimal.intVal:Ljava/math/BigInteger;
29: aload 0
lload 4
putfield java.math.BigDecimal.intCompact:J
30: aload 0
iload 2
putfield java.math.BigDecimal.scale:I
31: aload 0
iload 7
putfield java.math.BigDecimal.precision:I
32: return
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 33 0 this Ljava/math/BigDecimal;
0 33 1 unscaledVal Ljava/math/BigInteger;
0 33 2 scale I
0 33 3 mc Ljava/math/MathContext;
2 33 4 compactVal J
3 33 6 mcp I
4 33 7 prec I
6 28 8 mode I
9 18 9 drop I
21 28 9 drop I
MethodParameters:
Name Flags
unscaledVal
scale
mc
public void <init>(int);
descriptor: (I)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=2, args_size=2
start local 0 start local 1 0: aload 0
invokespecial java.lang.Number.<init>:()V
1: aload 0
iload 1
i2l
putfield java.math.BigDecimal.intCompact:J
2: aload 0
iconst_0
putfield java.math.BigDecimal.scale:I
3: aload 0
aconst_null
putfield java.math.BigDecimal.intVal:Ljava/math/BigInteger;
4: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Ljava/math/BigDecimal;
0 5 1 val I
MethodParameters:
Name Flags
val
public void <init>(int, java.math.MathContext);
descriptor: (ILjava/math/MathContext;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=9, args_size=3
start local 0 start local 1 start local 2 0: aload 0
invokespecial java.lang.Number.<init>:()V
1: aload 2
getfield java.math.MathContext.precision:I
istore 3
start local 3 2: iload 1
i2l
lstore 4
start local 4 3: iconst_0
istore 6
start local 6 4: iconst_0
istore 7
start local 7 5: iload 3
ifle 14
6: lload 4
invokestatic java.math.BigDecimal.longDigitLength:(J)I
istore 7
7: iload 7
iload 3
isub
istore 8
start local 8 8: goto 13
9: StackMap locals: java.math.BigDecimal int java.math.MathContext int long int int int
StackMap stack:
iload 6
i2l
iload 8
i2l
lsub
invokestatic java.math.BigDecimal.checkScaleNonZero:(J)I
istore 6
10: lload 4
getstatic java.math.BigDecimal.LONG_TEN_POWERS_TABLE:[J
iload 8
laload
aload 2
getfield java.math.MathContext.roundingMode:Ljava/math/RoundingMode;
getfield java.math.RoundingMode.oldMode:I
invokestatic java.math.BigDecimal.divideAndRound:(JJI)J
lstore 4
11: lload 4
invokestatic java.math.BigDecimal.longDigitLength:(J)I
istore 7
12: iload 7
iload 3
isub
istore 8
13: StackMap locals:
StackMap stack:
iload 8
ifgt 9
end local 8 14: StackMap locals:
StackMap stack:
aload 0
aconst_null
putfield java.math.BigDecimal.intVal:Ljava/math/BigInteger;
15: aload 0
lload 4
putfield java.math.BigDecimal.intCompact:J
16: aload 0
iload 6
putfield java.math.BigDecimal.scale:I
17: aload 0
iload 7
putfield java.math.BigDecimal.precision:I
18: return
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 19 0 this Ljava/math/BigDecimal;
0 19 1 val I
0 19 2 mc Ljava/math/MathContext;
2 19 3 mcp I
3 19 4 compactVal J
4 19 6 scl I
5 19 7 prec I
8 14 8 drop I
MethodParameters:
Name Flags
val
mc
public void <init>(long);
descriptor: (J)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=3, args_size=2
start local 0 start local 1 0: aload 0
invokespecial java.lang.Number.<init>:()V
1: aload 0
lload 1
putfield java.math.BigDecimal.intCompact:J
2: aload 0
lload 1
ldc -9223372036854775808
lcmp
ifne 3
getstatic java.math.BigDecimal.INFLATED_BIGINT:Ljava/math/BigInteger;
goto 4
StackMap locals: java.math.BigDecimal long
StackMap stack: java.math.BigDecimal
3: aconst_null
StackMap locals: java.math.BigDecimal long
StackMap stack: java.math.BigDecimal java.math.BigInteger
4: putfield java.math.BigDecimal.intVal:Ljava/math/BigInteger;
5: aload 0
iconst_0
putfield java.math.BigDecimal.scale:I
6: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 this Ljava/math/BigDecimal;
0 7 1 val J
MethodParameters:
Name Flags
val
public void <init>(long, java.math.MathContext);
descriptor: (JLjava/math/MathContext;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=10, args_size=3
start local 0 start local 1 start local 3 0: aload 0
invokespecial java.lang.Number.<init>:()V
1: aload 3
getfield java.math.MathContext.precision:I
istore 4
start local 4 2: aload 3
getfield java.math.MathContext.roundingMode:Ljava/math/RoundingMode;
getfield java.math.RoundingMode.oldMode:I
istore 5
start local 5 3: iconst_0
istore 6
start local 6 4: iconst_0
istore 7
start local 7 5: lload 1
ldc -9223372036854775808
lcmp
ifne 6
getstatic java.math.BigDecimal.INFLATED_BIGINT:Ljava/math/BigInteger;
goto 7
StackMap locals: java.math.BigDecimal long java.math.MathContext int int int int
StackMap stack:
6: aconst_null
StackMap locals:
StackMap stack: java.math.BigInteger
7: astore 8
start local 8 8: iload 4
ifle 31
9: lload 1
ldc -9223372036854775808
lcmp
ifne 21
10: bipush 19
istore 6
11: iload 6
iload 4
isub
istore 9
start local 9 12: goto 20
13: StackMap locals: java.math.BigInteger int
StackMap stack:
iload 7
i2l
iload 9
i2l
lsub
invokestatic java.math.BigDecimal.checkScaleNonZero:(J)I
istore 7
14: aload 8
iload 9
iload 5
invokestatic java.math.BigDecimal.divideAndRoundByTenPow:(Ljava/math/BigInteger;II)Ljava/math/BigInteger;
astore 8
15: aload 8
invokestatic java.math.BigDecimal.compactValFor:(Ljava/math/BigInteger;)J
lstore 1
16: lload 1
ldc -9223372036854775808
lcmp
ifeq 18
17: goto 21
18: StackMap locals:
StackMap stack:
aload 8
invokestatic java.math.BigDecimal.bigDigitLength:(Ljava/math/BigInteger;)I
istore 6
19: iload 6
iload 4
isub
istore 9
20: StackMap locals:
StackMap stack:
iload 9
ifgt 13
end local 9 21: StackMap locals:
StackMap stack:
lload 1
ldc -9223372036854775808
lcmp
ifeq 31
22: lload 1
invokestatic java.math.BigDecimal.longDigitLength:(J)I
istore 6
23: iload 6
iload 4
isub
istore 9
start local 9 24: goto 29
25: StackMap locals: int
StackMap stack:
iload 7
i2l
iload 9
i2l
lsub
invokestatic java.math.BigDecimal.checkScaleNonZero:(J)I
istore 7
26: lload 1
getstatic java.math.BigDecimal.LONG_TEN_POWERS_TABLE:[J
iload 9
laload
aload 3
getfield java.math.MathContext.roundingMode:Ljava/math/RoundingMode;
getfield java.math.RoundingMode.oldMode:I
invokestatic java.math.BigDecimal.divideAndRound:(JJI)J
lstore 1
27: lload 1
invokestatic java.math.BigDecimal.longDigitLength:(J)I
istore 6
28: iload 6
iload 4
isub
istore 9
29: StackMap locals:
StackMap stack:
iload 9
ifgt 25
30: aconst_null
astore 8
end local 9 31: StackMap locals:
StackMap stack:
aload 0
aload 8
putfield java.math.BigDecimal.intVal:Ljava/math/BigInteger;
32: aload 0
lload 1
putfield java.math.BigDecimal.intCompact:J
33: aload 0
iload 7
putfield java.math.BigDecimal.scale:I
34: aload 0
iload 6
putfield java.math.BigDecimal.precision:I
35: return
end local 8 end local 7 end local 6 end local 5 end local 4 end local 3 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 36 0 this Ljava/math/BigDecimal;
0 36 1 val J
0 36 3 mc Ljava/math/MathContext;
2 36 4 mcp I
3 36 5 mode I
4 36 6 prec I
5 36 7 scl I
8 36 8 rb Ljava/math/BigInteger;
12 21 9 drop I
24 31 9 drop I
MethodParameters:
Name Flags
val
mc
public static java.math.BigDecimal valueOf(long, int);
descriptor: (JI)Ljava/math/BigDecimal;
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=7, locals=3, args_size=2
start local 0 start local 2 0: iload 2
ifne 2
1: lload 0
invokestatic java.math.BigDecimal.valueOf:(J)Ljava/math/BigDecimal;
areturn
2: StackMap locals:
StackMap stack:
lload 0
lconst_0
lcmp
ifne 4
3: iload 2
invokestatic java.math.BigDecimal.zeroValueOf:(I)Ljava/math/BigDecimal;
areturn
4: StackMap locals:
StackMap stack:
new java.math.BigDecimal
dup
lload 0
ldc -9223372036854775808
lcmp
ifne 6
5: getstatic java.math.BigDecimal.INFLATED_BIGINT:Ljava/math/BigInteger;
goto 7
StackMap locals: long int
StackMap stack: new 4 new 4
6: aconst_null
7: StackMap locals: long int
StackMap stack: new 4 new 4 java.math.BigInteger
lload 0
iload 2
iconst_0
8: invokespecial java.math.BigDecimal.<init>:(Ljava/math/BigInteger;JII)V
areturn
end local 2 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 9 0 unscaledVal J
0 9 2 scale I
MethodParameters:
Name Flags
unscaledVal
scale
public static java.math.BigDecimal valueOf(long);
descriptor: (J)Ljava/math/BigDecimal;
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=7, locals=2, args_size=1
start local 0 0: lload 0
lconst_0
lcmp
iflt 2
lload 0
getstatic java.math.BigDecimal.ZERO_THROUGH_TEN:[Ljava/math/BigDecimal;
arraylength
i2l
lcmp
ifge 2
1: getstatic java.math.BigDecimal.ZERO_THROUGH_TEN:[Ljava/math/BigDecimal;
lload 0
l2i
aaload
areturn
2: StackMap locals:
StackMap stack:
lload 0
ldc -9223372036854775808
lcmp
ifeq 4
3: new java.math.BigDecimal
dup
aconst_null
lload 0
iconst_0
iconst_0
invokespecial java.math.BigDecimal.<init>:(Ljava/math/BigInteger;JII)V
areturn
4: StackMap locals:
StackMap stack:
new java.math.BigDecimal
dup
getstatic java.math.BigDecimal.INFLATED_BIGINT:Ljava/math/BigInteger;
lload 0
iconst_0
iconst_0
invokespecial java.math.BigDecimal.<init>:(Ljava/math/BigInteger;JII)V
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 val J
MethodParameters:
Name Flags
val
static java.math.BigDecimal valueOf(long, int, int);
descriptor: (JII)Ljava/math/BigDecimal;
flags: (0x0008) ACC_STATIC
Code:
stack=7, locals=4, args_size=3
start local 0 start local 2 start local 3 0: iload 2
ifne 2
lload 0
lconst_0
lcmp
iflt 2
lload 0
getstatic java.math.BigDecimal.ZERO_THROUGH_TEN:[Ljava/math/BigDecimal;
arraylength
i2l
lcmp
ifge 2
1: getstatic java.math.BigDecimal.ZERO_THROUGH_TEN:[Ljava/math/BigDecimal;
lload 0
l2i
aaload
areturn
2: StackMap locals:
StackMap stack:
lload 0
lconst_0
lcmp
ifne 4
3: iload 2
invokestatic java.math.BigDecimal.zeroValueOf:(I)Ljava/math/BigDecimal;
areturn
4: StackMap locals:
StackMap stack:
new java.math.BigDecimal
dup
lload 0
ldc -9223372036854775808
lcmp
ifne 5
getstatic java.math.BigDecimal.INFLATED_BIGINT:Ljava/math/BigInteger;
goto 6
StackMap locals: long int int
StackMap stack: new 4 new 4
5: aconst_null
6: StackMap locals: long int int
StackMap stack: new 4 new 4 java.math.BigInteger
lload 0
iload 2
iload 3
7: invokespecial java.math.BigDecimal.<init>:(Ljava/math/BigInteger;JII)V
areturn
end local 3 end local 2 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 unscaledVal J
0 8 2 scale I
0 8 3 prec I
MethodParameters:
Name Flags
unscaledVal
scale
prec
static java.math.BigDecimal valueOf(java.math.BigInteger, int, int);
descriptor: (Ljava/math/BigInteger;II)Ljava/math/BigDecimal;
flags: (0x0008) ACC_STATIC
Code:
stack=7, locals=5, args_size=3
start local 0 start local 1 start local 2 0: aload 0
invokestatic java.math.BigDecimal.compactValFor:(Ljava/math/BigInteger;)J
lstore 3
start local 3 1: lload 3
lconst_0
lcmp
ifne 3
2: iload 1
invokestatic java.math.BigDecimal.zeroValueOf:(I)Ljava/math/BigDecimal;
areturn
3: StackMap locals: long
StackMap stack:
iload 1
ifne 5
lload 3
lconst_0
lcmp
iflt 5
lload 3
getstatic java.math.BigDecimal.ZERO_THROUGH_TEN:[Ljava/math/BigDecimal;
arraylength
i2l
lcmp
ifge 5
4: getstatic java.math.BigDecimal.ZERO_THROUGH_TEN:[Ljava/math/BigDecimal;
lload 3
l2i
aaload
areturn
5: StackMap locals:
StackMap stack:
new java.math.BigDecimal
dup
aload 0
lload 3
iload 1
iload 2
invokespecial java.math.BigDecimal.<init>:(Ljava/math/BigInteger;JII)V
areturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 intVal Ljava/math/BigInteger;
0 6 1 scale I
0 6 2 prec I
1 6 3 val J
MethodParameters:
Name Flags
intVal
scale
prec
static java.math.BigDecimal zeroValueOf(int);
descriptor: (I)Ljava/math/BigDecimal;
flags: (0x0008) ACC_STATIC
Code:
stack=7, locals=1, args_size=1
start local 0 0: iload 0
iflt 2
iload 0
getstatic java.math.BigDecimal.ZERO_SCALED_BY:[Ljava/math/BigDecimal;
arraylength
if_icmpge 2
1: getstatic java.math.BigDecimal.ZERO_SCALED_BY:[Ljava/math/BigDecimal;
iload 0
aaload
areturn
2: StackMap locals:
StackMap stack:
new java.math.BigDecimal
dup
getstatic java.math.BigInteger.ZERO:Ljava/math/BigInteger;
lconst_0
iload 0
iconst_1
invokespecial java.math.BigDecimal.<init>:(Ljava/math/BigInteger;JII)V
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 scale I
MethodParameters:
Name Flags
scale
public static java.math.BigDecimal valueOf(double);
descriptor: (D)Ljava/math/BigDecimal;
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=4, locals=2, args_size=1
start local 0 0: new java.math.BigDecimal
dup
dload 0
invokestatic java.lang.Double.toString:(D)Ljava/lang/String;
invokespecial java.math.BigDecimal.<init>:(Ljava/lang/String;)V
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 val D
MethodParameters:
Name Flags
val
public java.math.BigDecimal add(java.math.BigDecimal);
descriptor: (Ljava/math/BigDecimal;)Ljava/math/BigDecimal;
flags: (0x0001) ACC_PUBLIC
Code:
stack=6, locals=2, args_size=2
start local 0 start local 1 0: aload 0
getfield java.math.BigDecimal.intCompact:J
ldc -9223372036854775808
lcmp
ifeq 4
1: aload 1
getfield java.math.BigDecimal.intCompact:J
ldc -9223372036854775808
lcmp
ifeq 3
2: aload 0
getfield java.math.BigDecimal.intCompact:J
aload 0
getfield java.math.BigDecimal.scale:I
aload 1
getfield java.math.BigDecimal.intCompact:J
aload 1
getfield java.math.BigDecimal.scale:I
invokestatic java.math.BigDecimal.add:(JIJI)Ljava/math/BigDecimal;
areturn
3: StackMap locals:
StackMap stack:
aload 0
getfield java.math.BigDecimal.intCompact:J
aload 0
getfield java.math.BigDecimal.scale:I
aload 1
getfield java.math.BigDecimal.intVal:Ljava/math/BigInteger;
aload 1
getfield java.math.BigDecimal.scale:I
invokestatic java.math.BigDecimal.add:(JILjava/math/BigInteger;I)Ljava/math/BigDecimal;
areturn
4: StackMap locals:
StackMap stack:
aload 1
getfield java.math.BigDecimal.intCompact:J
ldc -9223372036854775808
lcmp
ifeq 6
5: aload 1
getfield java.math.BigDecimal.intCompact:J
aload 1
getfield java.math.BigDecimal.scale:I
aload 0
getfield java.math.BigDecimal.intVal:Ljava/math/BigInteger;
aload 0
getfield java.math.BigDecimal.scale:I
invokestatic java.math.BigDecimal.add:(JILjava/math/BigInteger;I)Ljava/math/BigDecimal;
areturn
6: StackMap locals:
StackMap stack:
aload 0
getfield java.math.BigDecimal.intVal:Ljava/math/BigInteger;
aload 0
getfield java.math.BigDecimal.scale:I
aload 1
getfield java.math.BigDecimal.intVal:Ljava/math/BigInteger;
aload 1
getfield java.math.BigDecimal.scale:I
invokestatic java.math.BigDecimal.add:(Ljava/math/BigInteger;ILjava/math/BigInteger;I)Ljava/math/BigDecimal;
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 this Ljava/math/BigDecimal;
0 7 1 augend Ljava/math/BigDecimal;
MethodParameters:
Name Flags
augend
public java.math.BigDecimal add(java.math.BigDecimal, java.math.MathContext);
descriptor: (Ljava/math/BigDecimal;Ljava/math/MathContext;)Ljava/math/BigDecimal;
flags: (0x0001) ACC_PUBLIC
Code:
stack=6, locals=10, args_size=3
start local 0 start local 1 start local 2 0: aload 2
getfield java.math.MathContext.precision:I
ifne 2
1: aload 0
aload 1
invokevirtual java.math.BigDecimal.add:(Ljava/math/BigDecimal;)Ljava/math/BigDecimal;
areturn
2: StackMap locals:
StackMap stack:
aload 0
astore 3
start local 3 3: aload 3
invokevirtual java.math.BigDecimal.signum:()I
ifne 4
iconst_1
goto 5
StackMap locals: java.math.BigDecimal
StackMap stack:
4: iconst_0
StackMap locals:
StackMap stack: int
5: istore 4
start local 4 6: aload 1
invokevirtual java.math.BigDecimal.signum:()I
ifne 7
iconst_1
goto 8
StackMap locals: int
StackMap stack:
7: iconst_0
StackMap locals:
StackMap stack: int
8: istore 5
start local 5 9: iload 4
ifne 10
iload 5
ifeq 25
10: StackMap locals: int
StackMap stack:
aload 3
invokevirtual java.math.BigDecimal.scale:()I
aload 1
invokevirtual java.math.BigDecimal.scale:()I
invokestatic java.lang.Math.max:(II)I
istore 6
start local 6 11: iload 4
ifeq 13
iload 5
ifeq 13
12: iload 6
invokestatic java.math.BigDecimal.zeroValueOf:(I)Ljava/math/BigDecimal;
areturn
13: StackMap locals: int
StackMap stack:
iload 4
ifeq 14
aload 1
aload 2
invokestatic java.math.BigDecimal.doRound:(Ljava/math/BigDecimal;Ljava/math/MathContext;)Ljava/math/BigDecimal;
goto 15
StackMap locals:
StackMap stack:
14: aload 3
aload 2
invokestatic java.math.BigDecimal.doRound:(Ljava/math/BigDecimal;Ljava/math/MathContext;)Ljava/math/BigDecimal;
StackMap locals:
StackMap stack: java.math.BigDecimal
15: astore 7
start local 7 16: aload 7
invokevirtual java.math.BigDecimal.scale:()I
iload 6
if_icmpne 18
17: aload 7
areturn
18: StackMap locals: java.math.BigDecimal
StackMap stack:
aload 7
invokevirtual java.math.BigDecimal.scale:()I
iload 6
if_icmple 20
19: aload 7
getfield java.math.BigDecimal.intVal:Ljava/math/BigInteger;
aload 7
getfield java.math.BigDecimal.intCompact:J
aload 7
getfield java.math.BigDecimal.scale:I
iload 6
invokestatic java.math.BigDecimal.stripZerosToMatchScale:(Ljava/math/BigInteger;JII)Ljava/math/BigDecimal;
areturn
20: StackMap locals:
StackMap stack:
aload 2
getfield java.math.MathContext.precision:I
aload 7
invokevirtual java.math.BigDecimal.precision:()I
isub
istore 8
start local 8 21: iload 6
aload 7
invokevirtual java.math.BigDecimal.scale:()I
isub
istore 9
start local 9 22: iload 8
iload 9
if_icmplt 24
23: aload 7
iload 6
invokevirtual java.math.BigDecimal.setScale:(I)Ljava/math/BigDecimal;
areturn
24: StackMap locals: int int
StackMap stack:
aload 7
aload 7
invokevirtual java.math.BigDecimal.scale:()I
iload 8
iadd
invokevirtual java.math.BigDecimal.setScale:(I)Ljava/math/BigDecimal;
areturn
end local 9 end local 8 end local 7 end local 6 end local 5 end local 4 25: StackMap locals: java.math.BigDecimal java.math.BigDecimal java.math.MathContext java.math.BigDecimal
StackMap stack:
aload 3
getfield java.math.BigDecimal.scale:I
i2l
aload 1
getfield java.math.BigDecimal.scale:I
i2l
lsub
lstore 4
start local 4 26: lload 4
lconst_0
lcmp
ifeq 31
27: aload 0
aload 3
aload 1
lload 4
aload 2
invokevirtual java.math.BigDecimal.preAlign:(Ljava/math/BigDecimal;Ljava/math/BigDecimal;JLjava/math/MathContext;)[Ljava/math/BigDecimal;
astore 6
start local 6 28: aload 6
invokestatic java.math.BigDecimal.matchScale:([Ljava/math/BigDecimal;)V
29: aload 6
iconst_0
aaload
astore 3
30: aload 6
iconst_1
aaload
astore 1
end local 6 31: StackMap locals: long
StackMap stack:
aload 3
invokevirtual java.math.BigDecimal.inflated:()Ljava/math/BigInteger;
aload 1
invokevirtual java.math.BigDecimal.inflated:()Ljava/math/BigInteger;
invokevirtual java.math.BigInteger.add:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
aload 3
getfield java.math.BigDecimal.scale:I
aload 2
invokestatic java.math.BigDecimal.doRound:(Ljava/math/BigInteger;ILjava/math/MathContext;)Ljava/math/BigDecimal;
areturn
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 32 0 this Ljava/math/BigDecimal;
0 32 1 augend Ljava/math/BigDecimal;
0 32 2 mc Ljava/math/MathContext;
3 32 3 lhs Ljava/math/BigDecimal;
6 25 4 lhsIsZero Z
9 25 5 augendIsZero Z
11 25 6 preferredScale I
16 25 7 result Ljava/math/BigDecimal;
21 25 8 precisionDiff I
22 25 9 scaleDiff I
26 32 4 padding J
28 31 6 arg [Ljava/math/BigDecimal;
MethodParameters:
Name Flags
augend
mc
private java.math.BigDecimal[] preAlign(java.math.BigDecimal, java.math.BigDecimal, long, java.math.MathContext);
descriptor: (Ljava/math/BigDecimal;Ljava/math/BigDecimal;JLjava/math/MathContext;)[Ljava/math/BigDecimal;
flags: (0x0002) ACC_PRIVATE
Code:
stack=7, locals=13, args_size=5
start local 0 start local 1 start local 2 start local 3 start local 5 0: getstatic java.math.BigDecimal.$assertionsDisabled:Z
ifne 1
lload 3
lconst_0
lcmp
ifne 1
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
1: StackMap locals:
StackMap stack:
lload 3
lconst_0
lcmp
ifge 5
2: aload 1
astore 6
start local 6 3: aload 2
astore 7
start local 7 4: goto 7
end local 7 end local 6 5: StackMap locals:
StackMap stack:
aload 2
astore 6
start local 6 6: aload 1
astore 7
start local 7 7: StackMap locals: java.math.BigDecimal java.math.BigDecimal
StackMap stack:
aload 6
getfield java.math.BigDecimal.scale:I
i2l
aload 6
invokevirtual java.math.BigDecimal.precision:()I
i2l
lsub
aload 5
getfield java.math.MathContext.precision:I
i2l
ladd
lstore 8
start local 8 8: aload 7
getfield java.math.BigDecimal.scale:I
i2l
aload 7
invokevirtual java.math.BigDecimal.precision:()I
i2l
lsub
lconst_1
ladd
lstore 10
start local 10 9: lload 10
aload 6
getfield java.math.BigDecimal.scale:I
iconst_2
iadd
i2l
lcmp
ifle 12
10: lload 10
lload 8
ldc 2
ladd
lcmp
ifle 12
11: aload 7
invokevirtual java.math.BigDecimal.signum:()I
i2l
aload 0
aload 6
getfield java.math.BigDecimal.scale:I
i2l
lload 8
invokestatic java.lang.Math.max:(JJ)J
ldc 3
ladd
invokevirtual java.math.BigDecimal.checkScale:(J)I
invokestatic java.math.BigDecimal.valueOf:(JI)Ljava/math/BigDecimal;
astore 7
12: StackMap locals: long long
StackMap stack:
iconst_2
anewarray java.math.BigDecimal
dup
iconst_0
aload 6
aastore
dup
iconst_1
aload 7
aastore
astore 12
start local 12 13: aload 12
areturn
end local 12 end local 10 end local 8 end local 7 end local 6 end local 5 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 14 0 this Ljava/math/BigDecimal;
0 14 1 lhs Ljava/math/BigDecimal;
0 14 2 augend Ljava/math/BigDecimal;
0 14 3 padding J
0 14 5 mc Ljava/math/MathContext;
3 5 6 big Ljava/math/BigDecimal;
6 14 6 big Ljava/math/BigDecimal;
4 5 7 small Ljava/math/BigDecimal;
7 14 7 small Ljava/math/BigDecimal;
8 14 8 estResultUlpScale J
9 14 10 smallHighDigitPos J
13 14 12 result [Ljava/math/BigDecimal;
MethodParameters:
Name Flags
lhs
augend
padding
mc
public java.math.BigDecimal subtract(java.math.BigDecimal);
descriptor: (Ljava/math/BigDecimal;)Ljava/math/BigDecimal;
flags: (0x0001) ACC_PUBLIC
Code:
stack=6, locals=2, args_size=2
start local 0 start local 1 0: aload 0
getfield java.math.BigDecimal.intCompact:J
ldc -9223372036854775808
lcmp
ifeq 4
1: aload 1
getfield java.math.BigDecimal.intCompact:J
ldc -9223372036854775808
lcmp
ifeq 3
2: aload 0
getfield java.math.BigDecimal.intCompact:J
aload 0
getfield java.math.BigDecimal.scale:I
aload 1
getfield java.math.BigDecimal.intCompact:J
lneg
aload 1
getfield java.math.BigDecimal.scale:I
invokestatic java.math.BigDecimal.add:(JIJI)Ljava/math/BigDecimal;
areturn
3: StackMap locals:
StackMap stack:
aload 0
getfield java.math.BigDecimal.intCompact:J
aload 0
getfield java.math.BigDecimal.scale:I
aload 1
getfield java.math.BigDecimal.intVal:Ljava/math/BigInteger;
invokevirtual java.math.BigInteger.negate:()Ljava/math/BigInteger;
aload 1
getfield java.math.BigDecimal.scale:I
invokestatic java.math.BigDecimal.add:(JILjava/math/BigInteger;I)Ljava/math/BigDecimal;
areturn
4: StackMap locals:
StackMap stack:
aload 1
getfield java.math.BigDecimal.intCompact:J
ldc -9223372036854775808
lcmp
ifeq 6
5: aload 1
getfield java.math.BigDecimal.intCompact:J
lneg
aload 1
getfield java.math.BigDecimal.scale:I
aload 0
getfield java.math.BigDecimal.intVal:Ljava/math/BigInteger;
aload 0
getfield java.math.BigDecimal.scale:I
invokestatic java.math.BigDecimal.add:(JILjava/math/BigInteger;I)Ljava/math/BigDecimal;
areturn
6: StackMap locals:
StackMap stack:
aload 0
getfield java.math.BigDecimal.intVal:Ljava/math/BigInteger;
aload 0
getfield java.math.BigDecimal.scale:I
aload 1
getfield java.math.BigDecimal.intVal:Ljava/math/BigInteger;
invokevirtual java.math.BigInteger.negate:()Ljava/math/BigInteger;
aload 1
getfield java.math.BigDecimal.scale:I
invokestatic java.math.BigDecimal.add:(Ljava/math/BigInteger;ILjava/math/BigInteger;I)Ljava/math/BigDecimal;
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 this Ljava/math/BigDecimal;
0 7 1 subtrahend Ljava/math/BigDecimal;
MethodParameters:
Name Flags
subtrahend
public java.math.BigDecimal subtract(java.math.BigDecimal, java.math.MathContext);
descriptor: (Ljava/math/BigDecimal;Ljava/math/MathContext;)Ljava/math/BigDecimal;
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 2
getfield java.math.MathContext.precision:I
ifne 2
1: aload 0
aload 1
invokevirtual java.math.BigDecimal.subtract:(Ljava/math/BigDecimal;)Ljava/math/BigDecimal;
areturn
2: StackMap locals:
StackMap stack:
aload 0
aload 1
invokevirtual java.math.BigDecimal.negate:()Ljava/math/BigDecimal;
aload 2
invokevirtual java.math.BigDecimal.add:(Ljava/math/BigDecimal;Ljava/math/MathContext;)Ljava/math/BigDecimal;
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Ljava/math/BigDecimal;
0 3 1 subtrahend Ljava/math/BigDecimal;
0 3 2 mc Ljava/math/MathContext;
MethodParameters:
Name Flags
subtrahend
mc
public java.math.BigDecimal multiply(java.math.BigDecimal);
descriptor: (Ljava/math/BigDecimal;)Ljava/math/BigDecimal;
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=3, args_size=2
start local 0 start local 1 0: aload 0
aload 0
getfield java.math.BigDecimal.scale:I
i2l
aload 1
getfield java.math.BigDecimal.scale:I
i2l
ladd
invokevirtual java.math.BigDecimal.checkScale:(J)I
istore 2
start local 2 1: aload 0
getfield java.math.BigDecimal.intCompact:J
ldc -9223372036854775808
lcmp
ifeq 5
2: aload 1
getfield java.math.BigDecimal.intCompact:J
ldc -9223372036854775808
lcmp
ifeq 4
3: aload 0
getfield java.math.BigDecimal.intCompact:J
aload 1
getfield java.math.BigDecimal.intCompact:J
iload 2
invokestatic java.math.BigDecimal.multiply:(JJI)Ljava/math/BigDecimal;
areturn
4: StackMap locals: int
StackMap stack:
aload 0
getfield java.math.BigDecimal.intCompact:J
aload 1
getfield java.math.BigDecimal.intVal:Ljava/math/BigInteger;
iload 2
invokestatic java.math.BigDecimal.multiply:(JLjava/math/BigInteger;I)Ljava/math/BigDecimal;
areturn
5: StackMap locals:
StackMap stack:
aload 1
getfield java.math.BigDecimal.intCompact:J
ldc -9223372036854775808
lcmp
ifeq 7
6: aload 1
getfield java.math.BigDecimal.intCompact:J
aload 0
getfield java.math.BigDecimal.intVal:Ljava/math/BigInteger;
iload 2
invokestatic java.math.BigDecimal.multiply:(JLjava/math/BigInteger;I)Ljava/math/BigDecimal;
areturn
7: StackMap locals:
StackMap stack:
aload 0
getfield java.math.BigDecimal.intVal:Ljava/math/BigInteger;
aload 1
getfield java.math.BigDecimal.intVal:Ljava/math/BigInteger;
iload 2
invokestatic java.math.BigDecimal.multiply:(Ljava/math/BigInteger;Ljava/math/BigInteger;I)Ljava/math/BigDecimal;
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 this Ljava/math/BigDecimal;
0 8 1 multiplicand Ljava/math/BigDecimal;
1 8 2 productScale I
MethodParameters:
Name Flags
multiplicand
public java.math.BigDecimal multiply(java.math.BigDecimal, java.math.MathContext);
descriptor: (Ljava/math/BigDecimal;Ljava/math/MathContext;)Ljava/math/BigDecimal;
flags: (0x0001) ACC_PUBLIC
Code:
stack=6, locals=4, args_size=3
start local 0 start local 1 start local 2 0: aload 2
getfield java.math.MathContext.precision:I
ifne 2
1: aload 0
aload 1
invokevirtual java.math.BigDecimal.multiply:(Ljava/math/BigDecimal;)Ljava/math/BigDecimal;
areturn
2: StackMap locals:
StackMap stack:
aload 0
aload 0
getfield java.math.BigDecimal.scale:I
i2l
aload 1
getfield java.math.BigDecimal.scale:I
i2l
ladd
invokevirtual java.math.BigDecimal.checkScale:(J)I
istore 3
start local 3 3: aload 0
getfield java.math.BigDecimal.intCompact:J
ldc -9223372036854775808
lcmp
ifeq 7
4: aload 1
getfield java.math.BigDecimal.intCompact:J
ldc -9223372036854775808
lcmp
ifeq 6
5: aload 0
getfield java.math.BigDecimal.intCompact:J
aload 1
getfield java.math.BigDecimal.intCompact:J
iload 3
aload 2
invokestatic java.math.BigDecimal.multiplyAndRound:(JJILjava/math/MathContext;)Ljava/math/BigDecimal;
areturn
6: StackMap locals: int
StackMap stack:
aload 0
getfield java.math.BigDecimal.intCompact:J
aload 1
getfield java.math.BigDecimal.intVal:Ljava/math/BigInteger;
iload 3
aload 2
invokestatic java.math.BigDecimal.multiplyAndRound:(JLjava/math/BigInteger;ILjava/math/MathContext;)Ljava/math/BigDecimal;
areturn
7: StackMap locals:
StackMap stack:
aload 1
getfield java.math.BigDecimal.intCompact:J
ldc -9223372036854775808
lcmp
ifeq 9
8: aload 1
getfield java.math.BigDecimal.intCompact:J
aload 0
getfield java.math.BigDecimal.intVal:Ljava/math/BigInteger;
iload 3
aload 2
invokestatic java.math.BigDecimal.multiplyAndRound:(JLjava/math/BigInteger;ILjava/math/MathContext;)Ljava/math/BigDecimal;
areturn
9: StackMap locals:
StackMap stack:
aload 0
getfield java.math.BigDecimal.intVal:Ljava/math/BigInteger;
aload 1
getfield java.math.BigDecimal.intVal:Ljava/math/BigInteger;
iload 3
aload 2
invokestatic java.math.BigDecimal.multiplyAndRound:(Ljava/math/BigInteger;Ljava/math/BigInteger;ILjava/math/MathContext;)Ljava/math/BigDecimal;
areturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 10 0 this Ljava/math/BigDecimal;
0 10 1 multiplicand Ljava/math/BigDecimal;
0 10 2 mc Ljava/math/MathContext;
3 10 3 productScale I
MethodParameters:
Name Flags
multiplicand
mc
public java.math.BigDecimal divide(java.math.BigDecimal, int, int);
descriptor: (Ljava/math/BigDecimal;II)Ljava/math/BigDecimal;
flags: (0x0001) ACC_PUBLIC
Code:
stack=8, locals=4, args_size=4
start local 0 start local 1 start local 2 start local 3 0: iload 3
iflt 1
iload 3
bipush 7
if_icmple 2
1: StackMap locals:
StackMap stack:
new java.lang.IllegalArgumentException
dup
ldc "Invalid rounding mode"
invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
athrow
2: StackMap locals:
StackMap stack:
aload 0
getfield java.math.BigDecimal.intCompact:J
ldc -9223372036854775808
lcmp
ifeq 6
3: aload 1
getfield java.math.BigDecimal.intCompact:J
ldc -9223372036854775808
lcmp
ifeq 5
4: aload 0
getfield java.math.BigDecimal.intCompact:J
aload 0
getfield java.math.BigDecimal.scale:I
aload 1
getfield java.math.BigDecimal.intCompact:J
aload 1
getfield java.math.BigDecimal.scale:I
iload 2
iload 3
invokestatic java.math.BigDecimal.divide:(JIJIII)Ljava/math/BigDecimal;
areturn
5: StackMap locals:
StackMap stack:
aload 0
getfield java.math.BigDecimal.intCompact:J
aload 0
getfield java.math.BigDecimal.scale:I
aload 1
getfield java.math.BigDecimal.intVal:Ljava/math/BigInteger;
aload 1
getfield java.math.BigDecimal.scale:I
iload 2
iload 3
invokestatic java.math.BigDecimal.divide:(JILjava/math/BigInteger;III)Ljava/math/BigDecimal;
areturn
6: StackMap locals:
StackMap stack:
aload 1
getfield java.math.BigDecimal.intCompact:J
ldc -9223372036854775808
lcmp
ifeq 8
7: aload 0
getfield java.math.BigDecimal.intVal:Ljava/math/BigInteger;
aload 0
getfield java.math.BigDecimal.scale:I
aload 1
getfield java.math.BigDecimal.intCompact:J
aload 1
getfield java.math.BigDecimal.scale:I
iload 2
iload 3
invokestatic java.math.BigDecimal.divide:(Ljava/math/BigInteger;IJIII)Ljava/math/BigDecimal;
areturn
8: StackMap locals:
StackMap stack:
aload 0
getfield java.math.BigDecimal.intVal:Ljava/math/BigInteger;
aload 0
getfield java.math.BigDecimal.scale:I
aload 1
getfield java.math.BigDecimal.intVal:Ljava/math/BigInteger;
aload 1
getfield java.math.BigDecimal.scale:I
iload 2
iload 3
invokestatic java.math.BigDecimal.divide:(Ljava/math/BigInteger;ILjava/math/BigInteger;III)Ljava/math/BigDecimal;
areturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 9 0 this Ljava/math/BigDecimal;
0 9 1 divisor Ljava/math/BigDecimal;
0 9 2 scale I
0 9 3 roundingMode I
RuntimeVisibleAnnotations:
java.lang.Deprecated(since = "9")
MethodParameters:
Name Flags
divisor
scale
roundingMode
public java.math.BigDecimal divide(java.math.BigDecimal, int, java.math.RoundingMode);
descriptor: (Ljava/math/BigDecimal;ILjava/math/RoundingMode;)Ljava/math/BigDecimal;
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=4, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 0
aload 1
iload 2
aload 3
getfield java.math.RoundingMode.oldMode:I
invokevirtual java.math.BigDecimal.divide:(Ljava/math/BigDecimal;II)Ljava/math/BigDecimal;
areturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Ljava/math/BigDecimal;
0 1 1 divisor Ljava/math/BigDecimal;
0 1 2 scale I
0 1 3 roundingMode Ljava/math/RoundingMode;
MethodParameters:
Name Flags
divisor
scale
roundingMode
public java.math.BigDecimal divide(java.math.BigDecimal, int);
descriptor: (Ljava/math/BigDecimal;I)Ljava/math/BigDecimal;
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 0
getfield java.math.BigDecimal.scale:I
iload 2
invokevirtual java.math.BigDecimal.divide:(Ljava/math/BigDecimal;II)Ljava/math/BigDecimal;
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Ljava/math/BigDecimal;
0 1 1 divisor Ljava/math/BigDecimal;
0 1 2 roundingMode I
RuntimeVisibleAnnotations:
java.lang.Deprecated(since = "9")
MethodParameters:
Name Flags
divisor
roundingMode
public java.math.BigDecimal divide(java.math.BigDecimal, java.math.RoundingMode);
descriptor: (Ljava/math/BigDecimal;Ljava/math/RoundingMode;)Ljava/math/BigDecimal;
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 0
getfield java.math.BigDecimal.scale:I
aload 2
getfield java.math.RoundingMode.oldMode:I
invokevirtual java.math.BigDecimal.divide:(Ljava/math/BigDecimal;II)Ljava/math/BigDecimal;
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Ljava/math/BigDecimal;
0 1 1 divisor Ljava/math/BigDecimal;
0 1 2 roundingMode Ljava/math/RoundingMode;
MethodParameters:
Name Flags
divisor
roundingMode
public java.math.BigDecimal divide(java.math.BigDecimal);
descriptor: (Ljava/math/BigDecimal;)Ljava/math/BigDecimal;
flags: (0x0001) ACC_PUBLIC
Code:
stack=8, locals=6, args_size=2
start local 0 start local 1 0: aload 1
invokevirtual java.math.BigDecimal.signum:()I
ifne 4
1: aload 0
invokevirtual java.math.BigDecimal.signum:()I
ifne 3
2: new java.lang.ArithmeticException
dup
ldc "Division undefined"
invokespecial java.lang.ArithmeticException.<init>:(Ljava/lang/String;)V
athrow
3: StackMap locals:
StackMap stack:
new java.lang.ArithmeticException
dup
ldc "Division by zero"
invokespecial java.lang.ArithmeticException.<init>:(Ljava/lang/String;)V
athrow
4: StackMap locals:
StackMap stack:
aload 0
getfield java.math.BigDecimal.scale:I
i2l
aload 1
getfield java.math.BigDecimal.scale:I
i2l
lsub
invokestatic java.math.BigDecimal.saturateLong:(J)I
istore 2
start local 2 5: aload 0
invokevirtual java.math.BigDecimal.signum:()I
ifne 7
6: iload 2
invokestatic java.math.BigDecimal.zeroValueOf:(I)Ljava/math/BigDecimal;
areturn
7: StackMap locals: int
StackMap stack:
new java.math.MathContext
dup
aload 0
invokevirtual java.math.BigDecimal.precision:()I
i2l
8: ldc 10.0
aload 1
invokevirtual java.math.BigDecimal.precision:()I
i2d
dmul
ldc 3.0
ddiv
invokestatic java.lang.Math.ceil:(D)D
d2l
ladd
9: ldc 2147483647
10: invokestatic java.lang.Math.min:(JJ)J
l2i
11: getstatic java.math.RoundingMode.UNNECESSARY:Ljava/math/RoundingMode;
12: invokespecial java.math.MathContext.<init>:(ILjava/math/RoundingMode;)V
astore 3
start local 3 13: aload 0
aload 1
aload 3
invokevirtual java.math.BigDecimal.divide:(Ljava/math/BigDecimal;Ljava/math/MathContext;)Ljava/math/BigDecimal;
astore 4
start local 4 14: goto 17
end local 4 StackMap locals: java.math.BigDecimal java.math.BigDecimal int java.math.MathContext
StackMap stack: java.lang.ArithmeticException
15: pop
16: new java.lang.ArithmeticException
dup
ldc "Non-terminating decimal expansion; no exact representable decimal result."
invokespecial java.lang.ArithmeticException.<init>:(Ljava/lang/String;)V
athrow
start local 4 17: StackMap locals: java.math.BigDecimal
StackMap stack:
aload 4
invokevirtual java.math.BigDecimal.scale:()I
istore 5
start local 5 18: iload 2
iload 5
if_icmple 20
19: aload 4
iload 2
bipush 7
invokevirtual java.math.BigDecimal.setScale:(II)Ljava/math/BigDecimal;
areturn
20: StackMap locals: int
StackMap stack:
aload 4
areturn
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 21 0 this Ljava/math/BigDecimal;
0 21 1 divisor Ljava/math/BigDecimal;
5 21 2 preferredScale I
13 21 3 mc Ljava/math/MathContext;
14 15 4 quotient Ljava/math/BigDecimal;
17 21 4 quotient Ljava/math/BigDecimal;
18 21 5 quotientScale I
Exception table:
from to target type
13 14 15 Class java.lang.ArithmeticException
MethodParameters:
Name Flags
divisor
public java.math.BigDecimal divide(java.math.BigDecimal, java.math.MathContext);
descriptor: (Ljava/math/BigDecimal;Ljava/math/MathContext;)Ljava/math/BigDecimal;
flags: (0x0001) ACC_PUBLIC
Code:
stack=9, locals=9, args_size=3
start local 0 start local 1 start local 2 0: aload 2
getfield java.math.MathContext.precision:I
istore 3
start local 3 1: iload 3
ifne 3
2: aload 0
aload 1
invokevirtual java.math.BigDecimal.divide:(Ljava/math/BigDecimal;)Ljava/math/BigDecimal;
areturn
3: StackMap locals: int
StackMap stack:
aload 0
astore 4
start local 4 4: aload 4
getfield java.math.BigDecimal.scale:I
i2l
aload 1
getfield java.math.BigDecimal.scale:I
i2l
lsub
lstore 5
start local 5 5: aload 1
invokevirtual java.math.BigDecimal.signum:()I
ifne 9
6: aload 4
invokevirtual java.math.BigDecimal.signum:()I
ifne 8
7: new java.lang.ArithmeticException
dup
ldc "Division undefined"
invokespecial java.lang.ArithmeticException.<init>:(Ljava/lang/String;)V
athrow
8: StackMap locals: java.math.BigDecimal long
StackMap stack:
new java.lang.ArithmeticException
dup
ldc "Division by zero"
invokespecial java.lang.ArithmeticException.<init>:(Ljava/lang/String;)V
athrow
9: StackMap locals:
StackMap stack:
aload 4
invokevirtual java.math.BigDecimal.signum:()I
ifne 11
10: lload 5
invokestatic java.math.BigDecimal.saturateLong:(J)I
invokestatic java.math.BigDecimal.zeroValueOf:(I)Ljava/math/BigDecimal;
areturn
11: StackMap locals:
StackMap stack:
aload 4
invokevirtual java.math.BigDecimal.precision:()I
istore 7
start local 7 12: aload 1
invokevirtual java.math.BigDecimal.precision:()I
istore 8
start local 8 13: aload 4
getfield java.math.BigDecimal.intCompact:J
ldc -9223372036854775808
lcmp
ifeq 17
14: aload 1
getfield java.math.BigDecimal.intCompact:J
ldc -9223372036854775808
lcmp
ifeq 16
15: aload 4
getfield java.math.BigDecimal.intCompact:J
iload 7
aload 1
getfield java.math.BigDecimal.intCompact:J
iload 8
lload 5
aload 2
invokestatic java.math.BigDecimal.divide:(JIJIJLjava/math/MathContext;)Ljava/math/BigDecimal;
areturn
16: StackMap locals: int int
StackMap stack:
aload 4
getfield java.math.BigDecimal.intCompact:J
iload 7
aload 1
getfield java.math.BigDecimal.intVal:Ljava/math/BigInteger;
iload 8
lload 5
aload 2
invokestatic java.math.BigDecimal.divide:(JILjava/math/BigInteger;IJLjava/math/MathContext;)Ljava/math/BigDecimal;
areturn
17: StackMap locals:
StackMap stack:
aload 1
getfield java.math.BigDecimal.intCompact:J
ldc -9223372036854775808
lcmp
ifeq 19
18: aload 4
getfield java.math.BigDecimal.intVal:Ljava/math/BigInteger;
iload 7
aload 1
getfield java.math.BigDecimal.intCompact:J
iload 8
lload 5
aload 2
invokestatic java.math.BigDecimal.divide:(Ljava/math/BigInteger;IJIJLjava/math/MathContext;)Ljava/math/BigDecimal;
areturn
19: StackMap locals:
StackMap stack:
aload 4
getfield java.math.BigDecimal.intVal:Ljava/math/BigInteger;
iload 7
aload 1
getfield java.math.BigDecimal.intVal:Ljava/math/BigInteger;
iload 8
lload 5
aload 2
invokestatic java.math.BigDecimal.divide:(Ljava/math/BigInteger;ILjava/math/BigInteger;IJLjava/math/MathContext;)Ljava/math/BigDecimal;
areturn
end local 8 end local 7 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 20 0 this Ljava/math/BigDecimal;
0 20 1 divisor Ljava/math/BigDecimal;
0 20 2 mc Ljava/math/MathContext;
1 20 3 mcp I
4 20 4 dividend Ljava/math/BigDecimal;
5 20 5 preferredScale J
12 20 7 xscale I
13 20 8 yscale I
MethodParameters:
Name Flags
divisor
mc
public java.math.BigDecimal divideToIntegralValue(java.math.BigDecimal);
descriptor: (Ljava/math/BigDecimal;)Ljava/math/BigDecimal;
flags: (0x0001) ACC_PUBLIC
Code:
stack=6, locals=5, args_size=2
start local 0 start local 1 0: aload 0
getfield java.math.BigDecimal.scale:I
i2l
aload 1
getfield java.math.BigDecimal.scale:I
i2l
lsub
invokestatic java.math.BigDecimal.saturateLong:(J)I
istore 2
start local 2 1: aload 0
aload 1
invokevirtual java.math.BigDecimal.compareMagnitude:(Ljava/math/BigDecimal;)I
ifge 3
2: iload 2
invokestatic java.math.BigDecimal.zeroValueOf:(I)Ljava/math/BigDecimal;
areturn
3: StackMap locals: int
StackMap stack:
aload 0
invokevirtual java.math.BigDecimal.signum:()I
ifne 5
aload 1
invokevirtual java.math.BigDecimal.signum:()I
ifeq 5
4: aload 0
iload 2
bipush 7
invokevirtual java.math.BigDecimal.setScale:(II)Ljava/math/BigDecimal;
areturn
5: StackMap locals:
StackMap stack:
aload 0
invokevirtual java.math.BigDecimal.precision:()I
i2l
6: ldc 10.0
aload 1
invokevirtual java.math.BigDecimal.precision:()I
i2d
dmul
ldc 3.0
ddiv
invokestatic java.lang.Math.ceil:(D)D
d2l
7: ladd
8: aload 0
invokevirtual java.math.BigDecimal.scale:()I
i2l
aload 1
invokevirtual java.math.BigDecimal.scale:()I
i2l
lsub
invokestatic java.lang.Math.abs:(J)J
9: ladd
10: ldc 2
11: ladd
12: ldc 2147483647
13: invokestatic java.lang.Math.min:(JJ)J
l2i
istore 3
start local 3 14: aload 0
aload 1
new java.math.MathContext
dup
iload 3
15: getstatic java.math.RoundingMode.DOWN:Ljava/math/RoundingMode;
invokespecial java.math.MathContext.<init>:(ILjava/math/RoundingMode;)V
16: invokevirtual java.math.BigDecimal.divide:(Ljava/math/BigDecimal;Ljava/math/MathContext;)Ljava/math/BigDecimal;
astore 4
start local 4 17: aload 4
getfield java.math.BigDecimal.scale:I
ifle 20
18: aload 4
iconst_0
getstatic java.math.RoundingMode.DOWN:Ljava/math/RoundingMode;
invokevirtual java.math.BigDecimal.setScale:(ILjava/math/RoundingMode;)Ljava/math/BigDecimal;
astore 4
19: aload 4
getfield java.math.BigDecimal.intVal:Ljava/math/BigInteger;
aload 4
getfield java.math.BigDecimal.intCompact:J
aload 4
getfield java.math.BigDecimal.scale:I
iload 2
invokestatic java.math.BigDecimal.stripZerosToMatchScale:(Ljava/math/BigInteger;JII)Ljava/math/BigDecimal;
astore 4
20: StackMap locals: int java.math.BigDecimal
StackMap stack:
aload 4
getfield java.math.BigDecimal.scale:I
iload 2
if_icmpge 22
21: aload 4
iload 2
bipush 7
invokevirtual java.math.BigDecimal.setScale:(II)Ljava/math/BigDecimal;
astore 4
22: StackMap locals:
StackMap stack:
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 23 0 this Ljava/math/BigDecimal;
0 23 1 divisor Ljava/math/BigDecimal;
1 23 2 preferredScale I
14 23 3 maxDigits I
17 23 4 quotient Ljava/math/BigDecimal;
MethodParameters:
Name Flags
divisor
public java.math.BigDecimal divideToIntegralValue(java.math.BigDecimal, java.math.MathContext);
descriptor: (Ljava/math/BigDecimal;Ljava/math/MathContext;)Ljava/math/BigDecimal;
flags: (0x0001) ACC_PUBLIC
Code:
stack=6, locals=6, args_size=3
start local 0 start local 1 start local 2 0: aload 2
getfield java.math.MathContext.precision:I
ifeq 2
1: aload 0
aload 1
invokevirtual java.math.BigDecimal.compareMagnitude:(Ljava/math/BigDecimal;)I
ifge 3
2: StackMap locals:
StackMap stack:
aload 0
aload 1
invokevirtual java.math.BigDecimal.divideToIntegralValue:(Ljava/math/BigDecimal;)Ljava/math/BigDecimal;
areturn
3: StackMap locals:
StackMap stack:
aload 0
getfield java.math.BigDecimal.scale:I
i2l
aload 1
getfield java.math.BigDecimal.scale:I
i2l
lsub
invokestatic java.math.BigDecimal.saturateLong:(J)I
istore 3
start local 3 4: aload 0
aload 1
new java.math.MathContext
dup
aload 2
getfield java.math.MathContext.precision:I
getstatic java.math.RoundingMode.DOWN:Ljava/math/RoundingMode;
invokespecial java.math.MathContext.<init>:(ILjava/math/RoundingMode;)V
invokevirtual java.math.BigDecimal.divide:(Ljava/math/BigDecimal;Ljava/math/MathContext;)Ljava/math/BigDecimal;
astore 4
start local 4 5: aload 4
invokevirtual java.math.BigDecimal.scale:()I
ifge 9
6: aload 4
aload 1
invokevirtual java.math.BigDecimal.multiply:(Ljava/math/BigDecimal;)Ljava/math/BigDecimal;
astore 5
start local 5 7: aload 0
aload 5
invokevirtual java.math.BigDecimal.subtract:(Ljava/math/BigDecimal;)Ljava/math/BigDecimal;
aload 1
invokevirtual java.math.BigDecimal.compareMagnitude:(Ljava/math/BigDecimal;)I
iflt 11
8: new java.lang.ArithmeticException
dup
ldc "Division impossible"
invokespecial java.lang.ArithmeticException.<init>:(Ljava/lang/String;)V
athrow
end local 5 9: StackMap locals: int java.math.BigDecimal
StackMap stack:
aload 4
invokevirtual java.math.BigDecimal.scale:()I
ifle 11
10: aload 4
iconst_0
getstatic java.math.RoundingMode.DOWN:Ljava/math/RoundingMode;
invokevirtual java.math.BigDecimal.setScale:(ILjava/math/RoundingMode;)Ljava/math/BigDecimal;
astore 4
11: StackMap locals:
StackMap stack:
iload 3
aload 4
invokevirtual java.math.BigDecimal.scale:()I
if_icmple 17
12: aload 2
getfield java.math.MathContext.precision:I
aload 4
invokevirtual java.math.BigDecimal.precision:()I
isub
dup
istore 5
start local 5 13: ifle 17
14: aload 4
aload 4
invokevirtual java.math.BigDecimal.scale:()I
15: iload 5
iload 3
aload 4
getfield java.math.BigDecimal.scale:I
isub
invokestatic java.lang.Math.min:(II)I
iadd
16: invokevirtual java.math.BigDecimal.setScale:(I)Ljava/math/BigDecimal;
areturn
end local 5 17: StackMap locals:
StackMap stack:
aload 4
getfield java.math.BigDecimal.intVal:Ljava/math/BigInteger;
aload 4
getfield java.math.BigDecimal.intCompact:J
aload 4
getfield java.math.BigDecimal.scale:I
iload 3
invokestatic java.math.BigDecimal.stripZerosToMatchScale:(Ljava/math/BigInteger;JII)Ljava/math/BigDecimal;
areturn
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 18 0 this Ljava/math/BigDecimal;
0 18 1 divisor Ljava/math/BigDecimal;
0 18 2 mc Ljava/math/MathContext;
4 18 3 preferredScale I
5 18 4 result Ljava/math/BigDecimal;
7 9 5 product Ljava/math/BigDecimal;
13 17 5 precisionDiff I
MethodParameters:
Name Flags
divisor
mc
public java.math.BigDecimal remainder(java.math.BigDecimal);
descriptor: (Ljava/math/BigDecimal;)Ljava/math/BigDecimal;
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=3, args_size=2
start local 0 start local 1 0: aload 0
aload 1
invokevirtual java.math.BigDecimal.divideAndRemainder:(Ljava/math/BigDecimal;)[Ljava/math/BigDecimal;
astore 2
start local 2 1: aload 2
iconst_1
aaload
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Ljava/math/BigDecimal;
0 2 1 divisor Ljava/math/BigDecimal;
1 2 2 divrem [Ljava/math/BigDecimal;
MethodParameters:
Name Flags
divisor
public java.math.BigDecimal remainder(java.math.BigDecimal, java.math.MathContext);
descriptor: (Ljava/math/BigDecimal;Ljava/math/MathContext;)Ljava/math/BigDecimal;
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=4, args_size=3
start local 0 start local 1 start local 2 0: aload 0
aload 1
aload 2
invokevirtual java.math.BigDecimal.divideAndRemainder:(Ljava/math/BigDecimal;Ljava/math/MathContext;)[Ljava/math/BigDecimal;
astore 3
start local 3 1: aload 3
iconst_1
aaload
areturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Ljava/math/BigDecimal;
0 2 1 divisor Ljava/math/BigDecimal;
0 2 2 mc Ljava/math/MathContext;
1 2 3 divrem [Ljava/math/BigDecimal;
MethodParameters:
Name Flags
divisor
mc
public java.math.BigDecimal[] divideAndRemainder(java.math.BigDecimal);
descriptor: (Ljava/math/BigDecimal;)[Ljava/math/BigDecimal;
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=3, args_size=2
start local 0 start local 1 0: iconst_2
anewarray java.math.BigDecimal
astore 2
start local 2 1: aload 2
iconst_0
aload 0
aload 1
invokevirtual java.math.BigDecimal.divideToIntegralValue:(Ljava/math/BigDecimal;)Ljava/math/BigDecimal;
aastore
2: aload 2
iconst_1
aload 0
aload 2
iconst_0
aaload
aload 1
invokevirtual java.math.BigDecimal.multiply:(Ljava/math/BigDecimal;)Ljava/math/BigDecimal;
invokevirtual java.math.BigDecimal.subtract:(Ljava/math/BigDecimal;)Ljava/math/BigDecimal;
aastore
3: aload 2
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Ljava/math/BigDecimal;
0 4 1 divisor Ljava/math/BigDecimal;
1 4 2 result [Ljava/math/BigDecimal;
MethodParameters:
Name Flags
divisor
public java.math.BigDecimal[] divideAndRemainder(java.math.BigDecimal, java.math.MathContext);
descriptor: (Ljava/math/BigDecimal;Ljava/math/MathContext;)[Ljava/math/BigDecimal;
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=5, args_size=3
start local 0 start local 1 start local 2 0: aload 2
getfield java.math.MathContext.precision:I
ifne 2
1: aload 0
aload 1
invokevirtual java.math.BigDecimal.divideAndRemainder:(Ljava/math/BigDecimal;)[Ljava/math/BigDecimal;
areturn
2: StackMap locals:
StackMap stack:
iconst_2
anewarray java.math.BigDecimal
astore 3
start local 3 3: aload 0
astore 4
start local 4 4: aload 3
iconst_0
aload 4
aload 1
aload 2
invokevirtual java.math.BigDecimal.divideToIntegralValue:(Ljava/math/BigDecimal;Ljava/math/MathContext;)Ljava/math/BigDecimal;
aastore
5: aload 3
iconst_1
aload 4
aload 3
iconst_0
aaload
aload 1
invokevirtual java.math.BigDecimal.multiply:(Ljava/math/BigDecimal;)Ljava/math/BigDecimal;
invokevirtual java.math.BigDecimal.subtract:(Ljava/math/BigDecimal;)Ljava/math/BigDecimal;
aastore
6: aload 3
areturn
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 this Ljava/math/BigDecimal;
0 7 1 divisor Ljava/math/BigDecimal;
0 7 2 mc Ljava/math/MathContext;
3 7 3 result [Ljava/math/BigDecimal;
4 7 4 lhs Ljava/math/BigDecimal;
MethodParameters:
Name Flags
divisor
mc
public java.math.BigDecimal sqrt(java.math.MathContext);
descriptor: (Ljava/math/MathContext;)Ljava/math/BigDecimal;
flags: (0x0001) ACC_PUBLIC
Code:
stack=6, locals=20, args_size=2
start local 0 start local 1 0: aload 0
invokevirtual java.math.BigDecimal.signum:()I
istore 2
start local 2 1: iload 2
iconst_1
if_icmpne 57
2: aload 0
invokevirtual java.math.BigDecimal.scale:()I
iconst_2
idiv
istore 3
start local 3 3: lconst_0
iload 3
invokestatic java.math.BigDecimal.valueOf:(JI)Ljava/math/BigDecimal;
astore 4
start local 4 4: aload 0
invokevirtual java.math.BigDecimal.stripTrailingZeros:()Ljava/math/BigDecimal;
astore 5
start local 5 5: aload 5
invokevirtual java.math.BigDecimal.scale:()I
istore 6
start local 6 6: aload 5
invokevirtual java.math.BigDecimal.isPowerOfTen:()Z
ifeq 12
7: iload 6
iconst_2
irem
ifne 12
8: lconst_1
iload 6
iconst_2
idiv
invokestatic java.math.BigDecimal.valueOf:(JI)Ljava/math/BigDecimal;
astore 7
start local 7 9: aload 7
invokevirtual java.math.BigDecimal.scale:()I
iload 3
if_icmpeq 11
10: aload 7
aload 4
aload 1
invokevirtual java.math.BigDecimal.add:(Ljava/math/BigDecimal;Ljava/math/MathContext;)Ljava/math/BigDecimal;
astore 7
11: StackMap locals: java.math.BigDecimal java.math.MathContext int int java.math.BigDecimal java.math.BigDecimal int java.math.BigDecimal
StackMap stack:
aload 7
areturn
end local 7 12: StackMap locals:
StackMap stack:
iconst_0
istore 7
start local 7 13: aload 5
invokevirtual java.math.BigDecimal.scale:()I
aload 5
invokevirtual java.math.BigDecimal.precision:()I
isub
iconst_1
iadd
istore 8
start local 8 14: iload 8
iconst_2
irem
ifne 17
15: iload 8
istore 7
16: goto 18
17: StackMap locals: int int
StackMap stack:
iload 8
iconst_1
isub
istore 7
18: StackMap locals:
StackMap stack:
aload 5
iload 7
invokevirtual java.math.BigDecimal.scaleByPowerOfTen:(I)Ljava/math/BigDecimal;
astore 9
start local 9 19: getstatic java.math.BigDecimal.$assertionsDisabled:Z
ifne 22
20: getstatic java.math.BigDecimal.ONE_TENTH:Ljava/math/BigDecimal;
aload 9
invokevirtual java.math.BigDecimal.compareTo:(Ljava/math/BigDecimal;)I
ifgt 21
aload 9
getstatic java.math.BigDecimal.TEN:Ljava/math/BigDecimal;
invokevirtual java.math.BigDecimal.compareTo:(Ljava/math/BigDecimal;)I
iflt 22
StackMap locals: java.math.BigDecimal
StackMap stack:
21: new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
22: StackMap locals:
StackMap stack:
new java.math.BigDecimal
dup
aload 9
invokevirtual java.math.BigDecimal.doubleValue:()D
invokestatic java.lang.Math.sqrt:(D)D
invokespecial java.math.BigDecimal.<init>:(D)V
astore 10
start local 10 23: bipush 15
istore 11
start local 11 24: aload 1
invokevirtual java.math.MathContext.getPrecision:()I
istore 12
start local 12 25: iload 12
ifne 28
26: aload 5
invokevirtual java.math.BigDecimal.precision:()I
iconst_2
idiv
iconst_1
iadd
istore 13
start local 13 27: goto 29
end local 13 28: StackMap locals: java.math.BigDecimal int int
StackMap stack:
iload 12
istore 13
start local 13 29: StackMap locals: int
StackMap stack:
aload 10
astore 14
start local 14 30: aload 9
invokevirtual java.math.BigDecimal.precision:()I
istore 15
start local 15 31: StackMap locals: java.math.BigDecimal int
StackMap stack:
iload 11
iload 13
iconst_2
iadd
invokestatic java.lang.Math.max:(II)I
32: iload 15
33: invokestatic java.lang.Math.max:(II)I
istore 16
start local 16 34: new java.math.MathContext
dup
iload 16
getstatic java.math.RoundingMode.HALF_EVEN:Ljava/math/RoundingMode;
invokespecial java.math.MathContext.<init>:(ILjava/math/RoundingMode;)V
astore 17
start local 17 35: getstatic java.math.BigDecimal.ONE_HALF:Ljava/math/BigDecimal;
aload 14
aload 9
aload 14
aload 17
invokevirtual java.math.BigDecimal.divide:(Ljava/math/BigDecimal;Ljava/math/MathContext;)Ljava/math/BigDecimal;
aload 17
invokevirtual java.math.BigDecimal.add:(Ljava/math/BigDecimal;Ljava/math/MathContext;)Ljava/math/BigDecimal;
invokevirtual java.math.BigDecimal.multiply:(Ljava/math/BigDecimal;)Ljava/math/BigDecimal;
astore 14
36: iload 11
iconst_2
imul
istore 11
end local 17 end local 16 37: iload 11
iload 13
iconst_2
iadd
38: if_icmplt 31
39: aload 1
invokevirtual java.math.MathContext.getRoundingMode:()Ljava/math/RoundingMode;
astore 17
start local 17 40: aload 17
getstatic java.math.RoundingMode.UNNECESSARY:Ljava/math/RoundingMode;
if_acmpeq 41
iload 12
ifne 48
41: StackMap locals: java.math.BigDecimal java.math.MathContext int int java.math.BigDecimal java.math.BigDecimal int int int java.math.BigDecimal java.math.BigDecimal int int int java.math.BigDecimal int top java.math.RoundingMode
StackMap stack:
aload 17
getstatic java.math.RoundingMode.UNNECESSARY:Ljava/math/RoundingMode;
if_acmpne 42
getstatic java.math.RoundingMode.DOWN:Ljava/math/RoundingMode;
goto 43
StackMap locals:
StackMap stack:
42: aload 17
43: StackMap locals:
StackMap stack: java.math.RoundingMode
astore 18
start local 18 44: new java.math.MathContext
dup
iload 13
aload 18
invokespecial java.math.MathContext.<init>:(ILjava/math/RoundingMode;)V
astore 19
start local 19 45: aload 14
iload 7
ineg
iconst_2
idiv
invokevirtual java.math.BigDecimal.scaleByPowerOfTen:(I)Ljava/math/BigDecimal;
aload 19
invokevirtual java.math.BigDecimal.round:(Ljava/math/MathContext;)Ljava/math/BigDecimal;
astore 16
start local 16 46: aload 0
aload 16
aload 16
invokevirtual java.math.BigDecimal.multiply:(Ljava/math/BigDecimal;)Ljava/math/BigDecimal;
invokevirtual java.math.BigDecimal.subtract:(Ljava/math/BigDecimal;)Ljava/math/BigDecimal;
getstatic java.math.BigDecimal.ZERO:Ljava/math/BigDecimal;
invokevirtual java.math.BigDecimal.compareTo:(Ljava/math/BigDecimal;)I
ifeq 49
47: new java.lang.ArithmeticException
dup
ldc "Computed square root not exact."
invokespecial java.lang.ArithmeticException.<init>:(Ljava/lang/String;)V
athrow
end local 19 end local 18 end local 16 48: StackMap locals:
StackMap stack:
aload 14
iload 7
ineg
iconst_2
idiv
invokevirtual java.math.BigDecimal.scaleByPowerOfTen:(I)Ljava/math/BigDecimal;
aload 1
invokevirtual java.math.BigDecimal.round:(Ljava/math/MathContext;)Ljava/math/BigDecimal;
astore 16
start local 16 49: StackMap locals: java.math.BigDecimal java.math.MathContext int int java.math.BigDecimal java.math.BigDecimal int int int java.math.BigDecimal java.math.BigDecimal int int int java.math.BigDecimal int java.math.BigDecimal java.math.RoundingMode
StackMap stack:
aload 16
invokevirtual java.math.BigDecimal.scale:()I
iload 3
if_icmpeq 55
50: aload 16
invokevirtual java.math.BigDecimal.stripTrailingZeros:()Ljava/math/BigDecimal;
51: aload 4
52: new java.math.MathContext
dup
iload 12
getstatic java.math.RoundingMode.UNNECESSARY:Ljava/math/RoundingMode;
invokespecial java.math.MathContext.<init>:(ILjava/math/RoundingMode;)V
53: invokevirtual java.math.BigDecimal.add:(Ljava/math/BigDecimal;Ljava/math/MathContext;)Ljava/math/BigDecimal;
54: astore 16
55: StackMap locals:
StackMap stack:
getstatic java.math.BigDecimal.$assertionsDisabled:Z
ifne 56
aload 0
aload 16
aload 1
invokevirtual java.math.BigDecimal.squareRootResultAssertions:(Ljava/math/BigDecimal;Ljava/math/MathContext;)Z
ifne 56
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
56: StackMap locals:
StackMap stack:
aload 16
areturn
end local 17 end local 16 end local 15 end local 14 end local 13 end local 12 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 57: StackMap locals: java.math.BigDecimal java.math.MathContext int
StackMap stack:
iload 2
tableswitch { // -1 - 0
-1: 58
0: 59
default: 60
}
58: StackMap locals:
StackMap stack:
new java.lang.ArithmeticException
dup
ldc "Attempted square root of negative BigDecimal"
invokespecial java.lang.ArithmeticException.<init>:(Ljava/lang/String;)V
athrow
59: StackMap locals:
StackMap stack:
lconst_0
aload 0
invokevirtual java.math.BigDecimal.scale:()I
iconst_2
idiv
invokestatic java.math.BigDecimal.valueOf:(JI)Ljava/math/BigDecimal;
areturn
60: StackMap locals:
StackMap stack:
new java.lang.AssertionError
dup
ldc "Bad value from signum"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 61 0 this Ljava/math/BigDecimal;
0 61 1 mc Ljava/math/MathContext;
1 61 2 signum I
3 57 3 preferredScale I
4 57 4 zeroWithFinalPreferredScale Ljava/math/BigDecimal;
5 57 5 stripped Ljava/math/BigDecimal;
6 57 6 strippedScale I
9 12 7 result Ljava/math/BigDecimal;
13 57 7 scaleAdjust I
14 57 8 scale I
19 57 9 working Ljava/math/BigDecimal;
23 57 10 guess Ljava/math/BigDecimal;
24 57 11 guessPrecision I
25 57 12 originalPrecision I
27 28 13 targetPrecision I
29 57 13 targetPrecision I
30 57 14 approx Ljava/math/BigDecimal;
31 57 15 workingPrecision I
34 37 16 tmpPrecision I
35 37 17 mcTmp Ljava/math/MathContext;
46 48 16 result Ljava/math/BigDecimal;
49 57 16 result Ljava/math/BigDecimal;
40 57 17 targetRm Ljava/math/RoundingMode;
44 48 18 tmpRm Ljava/math/RoundingMode;
45 48 19 mcTmp Ljava/math/MathContext;
MethodParameters:
Name Flags
mc
private boolean isPowerOfTen();
descriptor: ()Z
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=1, args_size=1
start local 0 0: getstatic java.math.BigInteger.ONE:Ljava/math/BigInteger;
aload 0
invokevirtual java.math.BigDecimal.unscaledValue:()Ljava/math/BigInteger;
invokevirtual java.math.BigInteger.equals:(Ljava/lang/Object;)Z
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Ljava/math/BigDecimal;
private boolean squareRootResultAssertions(java.math.BigDecimal, java.math.MathContext);
descriptor: (Ljava/math/BigDecimal;Ljava/math/MathContext;)Z
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=12, args_size=3
start local 0 start local 1 start local 2 0: aload 1
invokevirtual java.math.BigDecimal.signum:()I
ifne 2
1: aload 0
aload 1
aload 2
invokevirtual java.math.BigDecimal.squareRootZeroResultAssertions:(Ljava/math/BigDecimal;Ljava/math/MathContext;)Z
ireturn
2: StackMap locals:
StackMap stack:
aload 2
invokevirtual java.math.MathContext.getRoundingMode:()Ljava/math/RoundingMode;
astore 3
start local 3 3: aload 1
invokevirtual java.math.BigDecimal.ulp:()Ljava/math/BigDecimal;
astore 4
start local 4 4: aload 1
aload 4
invokevirtual java.math.BigDecimal.add:(Ljava/math/BigDecimal;)Ljava/math/BigDecimal;
astore 5
start local 5 5: aload 0
invokevirtual java.math.BigDecimal.isPowerOfTen:()Z
ifeq 7
6: aload 4
getstatic java.math.BigDecimal.TEN:Ljava/math/BigDecimal;
invokevirtual java.math.BigDecimal.divide:(Ljava/math/BigDecimal;)Ljava/math/BigDecimal;
astore 4
7: StackMap locals: java.math.RoundingMode java.math.BigDecimal java.math.BigDecimal
StackMap stack:
aload 1
aload 4
invokevirtual java.math.BigDecimal.subtract:(Ljava/math/BigDecimal;)Ljava/math/BigDecimal;
astore 6
start local 6 8: aload 1
invokevirtual java.math.BigDecimal.signum:()I
iconst_1
if_icmpne 10
9: aload 0
invokevirtual java.math.BigDecimal.signum:()I
iconst_1
if_icmpeq 11
10: StackMap locals: java.math.BigDecimal
StackMap stack:
iconst_0
ireturn
11: StackMap locals:
StackMap stack:
invokestatic java.math.BigDecimal.$SWITCH_TABLE$java$math$RoundingMode:()[I
aload 3
invokevirtual java.math.RoundingMode.ordinal:()I
iaload
tableswitch { // 1 - 7
1: 16
2: 12
3: 16
4: 12
5: 20
6: 20
7: 20
default: 33
}
12: StackMap locals:
StackMap stack:
aload 1
aload 1
invokevirtual java.math.BigDecimal.multiply:(Ljava/math/BigDecimal;)Ljava/math/BigDecimal;
aload 0
invokevirtual java.math.BigDecimal.compareTo:(Ljava/math/BigDecimal;)I
ifgt 15
13: aload 5
aload 5
invokevirtual java.math.BigDecimal.multiply:(Ljava/math/BigDecimal;)Ljava/math/BigDecimal;
aload 0
invokevirtual java.math.BigDecimal.compareTo:(Ljava/math/BigDecimal;)I
14: ifle 15
iconst_1
ireturn
StackMap locals:
StackMap stack:
15: iconst_0
ireturn
16: StackMap locals:
StackMap stack:
aload 1
aload 1
invokevirtual java.math.BigDecimal.multiply:(Ljava/math/BigDecimal;)Ljava/math/BigDecimal;
aload 0
invokevirtual java.math.BigDecimal.compareTo:(Ljava/math/BigDecimal;)I
iflt 19
17: aload 6
aload 6
invokevirtual java.math.BigDecimal.multiply:(Ljava/math/BigDecimal;)Ljava/math/BigDecimal;
aload 0
invokevirtual java.math.BigDecimal.compareTo:(Ljava/math/BigDecimal;)I
18: ifge 19
iconst_1
ireturn
StackMap locals:
StackMap stack:
19: iconst_0
ireturn
20: StackMap locals:
StackMap stack:
aload 1
aload 1
invokevirtual java.math.BigDecimal.multiply:(Ljava/math/BigDecimal;)Ljava/math/BigDecimal;
aload 0
invokevirtual java.math.BigDecimal.subtract:(Ljava/math/BigDecimal;)Ljava/math/BigDecimal;
invokevirtual java.math.BigDecimal.abs:()Ljava/math/BigDecimal;
astore 7
start local 7 21: aload 5
aload 5
invokevirtual java.math.BigDecimal.multiply:(Ljava/math/BigDecimal;)Ljava/math/BigDecimal;
aload 0
invokevirtual java.math.BigDecimal.subtract:(Ljava/math/BigDecimal;)Ljava/math/BigDecimal;
astore 8
start local 8 22: aload 0
aload 6
aload 6
invokevirtual java.math.BigDecimal.multiply:(Ljava/math/BigDecimal;)Ljava/math/BigDecimal;
invokevirtual java.math.BigDecimal.subtract:(Ljava/math/BigDecimal;)Ljava/math/BigDecimal;
astore 9
start local 9 23: aload 7
aload 8
invokevirtual java.math.BigDecimal.compareTo:(Ljava/math/BigDecimal;)I
istore 10
start local 10 24: aload 7
aload 9
invokevirtual java.math.BigDecimal.compareTo:(Ljava/math/BigDecimal;)I
istore 11
start local 11 25: aload 8
invokevirtual java.math.BigDecimal.signum:()I
iconst_1
if_icmpne 32
26: aload 9
invokevirtual java.math.BigDecimal.signum:()I
iconst_1
if_icmpne 32
27: iload 10
ifgt 32
28: iload 11
ifgt 32
29: iload 10
ifne 30
iload 11
ifge 32
30: StackMap locals: java.math.BigDecimal java.math.BigDecimal java.math.MathContext java.math.RoundingMode java.math.BigDecimal java.math.BigDecimal java.math.BigDecimal java.math.BigDecimal java.math.BigDecimal java.math.BigDecimal int int
StackMap stack:
iload 11
ifne 31
iload 10
ifge 32
31: StackMap locals:
StackMap stack:
iconst_1
ireturn
StackMap locals:
StackMap stack:
32: iconst_0
ireturn
end local 11 end local 10 end local 9 end local 8 end local 7 33: StackMap locals: java.math.BigDecimal java.math.BigDecimal java.math.MathContext java.math.RoundingMode java.math.BigDecimal java.math.BigDecimal java.math.BigDecimal
StackMap stack:
iconst_1
ireturn
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 34 0 this Ljava/math/BigDecimal;
0 34 1 result Ljava/math/BigDecimal;
0 34 2 mc Ljava/math/MathContext;
3 34 3 rm Ljava/math/RoundingMode;
4 34 4 ulp Ljava/math/BigDecimal;
5 34 5 neighborUp Ljava/math/BigDecimal;
8 34 6 neighborDown Ljava/math/BigDecimal;
21 33 7 err Ljava/math/BigDecimal;
22 33 8 errUp Ljava/math/BigDecimal;
23 33 9 errDown Ljava/math/BigDecimal;
24 33 10 err_comp_errUp I
25 33 11 err_comp_errDown I
MethodParameters:
Name Flags
result
mc
private boolean squareRootZeroResultAssertions(java.math.BigDecimal, java.math.MathContext);
descriptor: (Ljava/math/BigDecimal;Ljava/math/MathContext;)Z
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 0
getstatic java.math.BigDecimal.ZERO:Ljava/math/BigDecimal;
invokevirtual java.math.BigDecimal.compareTo:(Ljava/math/BigDecimal;)I
ifne 1
iconst_1
ireturn
StackMap locals:
StackMap stack:
1: iconst_0
ireturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Ljava/math/BigDecimal;
0 2 1 result Ljava/math/BigDecimal;
0 2 2 mc Ljava/math/MathContext;
MethodParameters:
Name Flags
result
mc
public java.math.BigDecimal pow(int);
descriptor: (I)Ljava/math/BigDecimal;
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=3, args_size=2
start local 0 start local 1 0: iload 1
iflt 1
iload 1
ldc 999999999
if_icmple 2
1: StackMap locals:
StackMap stack:
new java.lang.ArithmeticException
dup
ldc "Invalid operation"
invokespecial java.lang.ArithmeticException.<init>:(Ljava/lang/String;)V
athrow
2: StackMap locals:
StackMap stack:
aload 0
aload 0
getfield java.math.BigDecimal.scale:I
i2l
iload 1
i2l
lmul
invokevirtual java.math.BigDecimal.checkScale:(J)I
istore 2
start local 2 3: new java.math.BigDecimal
dup
aload 0
invokevirtual java.math.BigDecimal.inflated:()Ljava/math/BigInteger;
iload 1
invokevirtual java.math.BigInteger.pow:(I)Ljava/math/BigInteger;
iload 2
invokespecial java.math.BigDecimal.<init>:(Ljava/math/BigInteger;I)V
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Ljava/math/BigDecimal;
0 4 1 n I
3 4 2 newScale I
MethodParameters:
Name Flags
n
public java.math.BigDecimal pow(int, java.math.MathContext);
descriptor: (ILjava/math/MathContext;)Ljava/math/BigDecimal;
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=9, args_size=3
start local 0 start local 1 start local 2 0: aload 2
getfield java.math.MathContext.precision:I
ifne 2
1: aload 0
iload 1
invokevirtual java.math.BigDecimal.pow:(I)Ljava/math/BigDecimal;
areturn
2: StackMap locals:
StackMap stack:
iload 1
ldc -999999999
if_icmplt 3
iload 1
ldc 999999999
if_icmple 4
3: StackMap locals:
StackMap stack:
new java.lang.ArithmeticException
dup
ldc "Invalid operation"
invokespecial java.lang.ArithmeticException.<init>:(Ljava/lang/String;)V
athrow
4: StackMap locals:
StackMap stack:
iload 1
ifne 6
5: getstatic java.math.BigDecimal.ONE:Ljava/math/BigDecimal;
areturn
6: StackMap locals:
StackMap stack:
aload 0
astore 3
start local 3 7: aload 2
astore 4
start local 4 8: iload 1
invokestatic java.lang.Math.abs:(I)I
istore 5
start local 5 9: aload 2
getfield java.math.MathContext.precision:I
ifle 16
10: iload 5
i2l
invokestatic java.math.BigDecimal.longDigitLength:(J)I
istore 6
start local 6 11: iload 6
aload 2
getfield java.math.MathContext.precision:I
if_icmple 13
12: new java.lang.ArithmeticException
dup
ldc "Invalid operation"
invokespecial java.lang.ArithmeticException.<init>:(Ljava/lang/String;)V
athrow
13: StackMap locals: java.math.BigDecimal int java.math.MathContext java.math.BigDecimal java.math.MathContext int int
StackMap stack:
new java.math.MathContext
dup
aload 2
getfield java.math.MathContext.precision:I
iload 6
iadd
iconst_1
iadd
14: aload 2
getfield java.math.MathContext.roundingMode:Ljava/math/RoundingMode;
15: invokespecial java.math.MathContext.<init>:(ILjava/math/RoundingMode;)V
astore 4
end local 6 16: StackMap locals:
StackMap stack:
getstatic java.math.BigDecimal.ONE:Ljava/math/BigDecimal;
astore 6
start local 6 17: iconst_0
istore 7
start local 7 18: iconst_1
istore 8
start local 8 19: StackMap locals: java.math.BigDecimal int int
StackMap stack:
iload 5
iload 5
iadd
istore 5
20: iload 5
ifge 23
21: iconst_1
istore 7
22: aload 6
aload 3
aload 4
invokevirtual java.math.BigDecimal.multiply:(Ljava/math/BigDecimal;Ljava/math/MathContext;)Ljava/math/BigDecimal;
astore 6
23: StackMap locals:
StackMap stack:
iload 8
bipush 31
if_icmpne 25
24: goto 28
25: StackMap locals:
StackMap stack:
iload 7
ifeq 27
26: aload 6
aload 6
aload 4
invokevirtual java.math.BigDecimal.multiply:(Ljava/math/BigDecimal;Ljava/math/MathContext;)Ljava/math/BigDecimal;
astore 6
27: StackMap locals:
StackMap stack:
iinc 8 1
goto 19
end local 8 28: StackMap locals:
StackMap stack:
iload 1
ifge 30
29: getstatic java.math.BigDecimal.ONE:Ljava/math/BigDecimal;
aload 6
aload 4
invokevirtual java.math.BigDecimal.divide:(Ljava/math/BigDecimal;Ljava/math/MathContext;)Ljava/math/BigDecimal;
astore 6
30: StackMap locals:
StackMap stack:
aload 6
aload 2
invokestatic java.math.BigDecimal.doRound:(Ljava/math/BigDecimal;Ljava/math/MathContext;)Ljava/math/BigDecimal;
areturn
end local 7 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 31 0 this Ljava/math/BigDecimal;
0 31 1 n I
0 31 2 mc Ljava/math/MathContext;
7 31 3 lhs Ljava/math/BigDecimal;
8 31 4 workmc Ljava/math/MathContext;
9 31 5 mag I
11 16 6 elength I
17 31 6 acc Ljava/math/BigDecimal;
18 31 7 seenbit Z
19 28 8 i I
MethodParameters:
Name Flags
n
mc
public java.math.BigDecimal abs();
descriptor: ()Ljava/math/BigDecimal;
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
invokevirtual java.math.BigDecimal.signum:()I
ifge 1
aload 0
invokevirtual java.math.BigDecimal.negate:()Ljava/math/BigDecimal;
goto 2
StackMap locals:
StackMap stack:
1: aload 0
StackMap locals:
StackMap stack: java.math.BigDecimal
2: areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Ljava/math/BigDecimal;
public java.math.BigDecimal abs(java.math.MathContext);
descriptor: (Ljava/math/MathContext;)Ljava/math/BigDecimal;
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
invokevirtual java.math.BigDecimal.signum:()I
ifge 1
aload 0
aload 1
invokevirtual java.math.BigDecimal.negate:(Ljava/math/MathContext;)Ljava/math/BigDecimal;
goto 2
StackMap locals:
StackMap stack:
1: aload 0
aload 1
invokevirtual java.math.BigDecimal.plus:(Ljava/math/MathContext;)Ljava/math/BigDecimal;
StackMap locals:
StackMap stack: java.math.BigDecimal
2: areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Ljava/math/BigDecimal;
0 3 1 mc Ljava/math/MathContext;
MethodParameters:
Name Flags
mc
public java.math.BigDecimal negate();
descriptor: ()Ljava/math/BigDecimal;
flags: (0x0001) ACC_PUBLIC
Code:
stack=7, locals=1, args_size=1
start local 0 0: aload 0
getfield java.math.BigDecimal.intCompact:J
ldc -9223372036854775808
lcmp
ifne 2
1: new java.math.BigDecimal
dup
aload 0
getfield java.math.BigDecimal.intVal:Ljava/math/BigInteger;
invokevirtual java.math.BigInteger.negate:()Ljava/math/BigInteger;
ldc -9223372036854775808
aload 0
getfield java.math.BigDecimal.scale:I
aload 0
getfield java.math.BigDecimal.precision:I
invokespecial java.math.BigDecimal.<init>:(Ljava/math/BigInteger;JII)V
areturn
2: StackMap locals:
StackMap stack:
aload 0
getfield java.math.BigDecimal.intCompact:J
lneg
aload 0
getfield java.math.BigDecimal.scale:I
aload 0
getfield java.math.BigDecimal.precision:I
invokestatic java.math.BigDecimal.valueOf:(JII)Ljava/math/BigDecimal;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Ljava/math/BigDecimal;
public java.math.BigDecimal negate(java.math.MathContext);
descriptor: (Ljava/math/MathContext;)Ljava/math/BigDecimal;
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
invokevirtual java.math.BigDecimal.negate:()Ljava/math/BigDecimal;
aload 1
invokevirtual java.math.BigDecimal.plus:(Ljava/math/MathContext;)Ljava/math/BigDecimal;
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Ljava/math/BigDecimal;
0 1 1 mc Ljava/math/MathContext;
MethodParameters:
Name Flags
mc
public java.math.BigDecimal plus();
descriptor: ()Ljava/math/BigDecimal;
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Ljava/math/BigDecimal;
public java.math.BigDecimal plus(java.math.MathContext);
descriptor: (Ljava/math/MathContext;)Ljava/math/BigDecimal;
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 1
getfield java.math.MathContext.precision:I
ifne 2
1: aload 0
areturn
2: StackMap locals:
StackMap stack:
aload 0
aload 1
invokestatic java.math.BigDecimal.doRound:(Ljava/math/BigDecimal;Ljava/math/MathContext;)Ljava/math/BigDecimal;
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Ljava/math/BigDecimal;
0 3 1 mc Ljava/math/MathContext;
MethodParameters:
Name Flags
mc
public int signum();
descriptor: ()I
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=1, args_size=1
start local 0 0: aload 0
getfield java.math.BigDecimal.intCompact:J
ldc -9223372036854775808
lcmp
ifeq 2
1: aload 0
getfield java.math.BigDecimal.intCompact:J
invokestatic java.lang.Long.signum:(J)I
goto 3
2: StackMap locals:
StackMap stack:
aload 0
getfield java.math.BigDecimal.intVal:Ljava/math/BigInteger;
invokevirtual java.math.BigInteger.signum:()I
3: StackMap locals:
StackMap stack: int
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Ljava/math/BigDecimal;
public int scale();
descriptor: ()I
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield java.math.BigDecimal.scale:I
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Ljava/math/BigDecimal;
public int precision();
descriptor: ()I
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=4, args_size=1
start local 0 0: aload 0
getfield java.math.BigDecimal.precision:I
istore 1
start local 1 1: iload 1
ifne 7
2: aload 0
getfield java.math.BigDecimal.intCompact:J
lstore 2
start local 2 3: lload 2
ldc -9223372036854775808
lcmp
ifeq 5
4: lload 2
invokestatic java.math.BigDecimal.longDigitLength:(J)I
istore 1
goto 6
5: StackMap locals: int long
StackMap stack:
aload 0
getfield java.math.BigDecimal.intVal:Ljava/math/BigInteger;
invokestatic java.math.BigDecimal.bigDigitLength:(Ljava/math/BigInteger;)I
istore 1
6: StackMap locals:
StackMap stack:
aload 0
iload 1
putfield java.math.BigDecimal.precision:I
end local 2 7: StackMap locals:
StackMap stack:
iload 1
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 this Ljava/math/BigDecimal;
1 8 1 result I
3 7 2 s J
public java.math.BigInteger unscaledValue();
descriptor: ()Ljava/math/BigInteger;
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
invokevirtual java.math.BigDecimal.inflated:()Ljava/math/BigInteger;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Ljava/math/BigDecimal;
public java.math.BigDecimal round(java.math.MathContext);
descriptor: (Ljava/math/MathContext;)Ljava/math/BigDecimal;
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
aload 1
invokevirtual java.math.BigDecimal.plus:(Ljava/math/MathContext;)Ljava/math/BigDecimal;
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Ljava/math/BigDecimal;
0 1 1 mc Ljava/math/MathContext;
MethodParameters:
Name Flags
mc
public java.math.BigDecimal setScale(int, java.math.RoundingMode);
descriptor: (ILjava/math/RoundingMode;)Ljava/math/BigDecimal;
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 0
iload 1
aload 2
getfield java.math.RoundingMode.oldMode:I
invokevirtual java.math.BigDecimal.setScale:(II)Ljava/math/BigDecimal;
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Ljava/math/BigDecimal;
0 1 1 newScale I
0 1 2 roundingMode Ljava/math/RoundingMode;
MethodParameters:
Name Flags
newScale
roundingMode
public java.math.BigDecimal setScale(int, int);
descriptor: (II)Ljava/math/BigDecimal;
flags: (0x0001) ACC_PUBLIC
Code:
stack=8, locals=8, args_size=3
start local 0 start local 1 start local 2 0: iload 2
iflt 1
iload 2
bipush 7
if_icmple 2
1: StackMap locals:
StackMap stack:
new java.lang.IllegalArgumentException
dup
ldc "Invalid rounding mode"
invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
athrow
2: StackMap locals:
StackMap stack:
aload 0
getfield java.math.BigDecimal.scale:I
istore 3
start local 3 3: iload 1
iload 3
if_icmpne 5
4: aload 0
areturn
5: StackMap locals: int
StackMap stack:
aload 0
invokevirtual java.math.BigDecimal.signum:()I
ifne 7
6: iload 1
invokestatic java.math.BigDecimal.zeroValueOf:(I)Ljava/math/BigDecimal;
areturn
7: StackMap locals:
StackMap stack:
aload 0
getfield java.math.BigDecimal.intCompact:J
ldc -9223372036854775808
lcmp
ifeq 21
8: aload 0
getfield java.math.BigDecimal.intCompact:J
lstore 4
start local 4 9: iload 1
iload 3
if_icmple 17
10: aload 0
iload 1
i2l
iload 3
i2l
lsub
invokevirtual java.math.BigDecimal.checkScale:(J)I
istore 6
start local 6 11: lload 4
iload 6
invokestatic java.math.BigDecimal.longMultiplyPowerTen:(JI)J
dup2
lstore 4
ldc -9223372036854775808
lcmp
ifeq 13
12: lload 4
iload 1
invokestatic java.math.BigDecimal.valueOf:(JI)Ljava/math/BigDecimal;
areturn
13: StackMap locals: long int
StackMap stack:
aload 0
iload 6
invokevirtual java.math.BigDecimal.bigMultiplyPowerTen:(I)Ljava/math/BigInteger;
astore 7
start local 7 14: new java.math.BigDecimal
dup
aload 7
ldc -9223372036854775808
iload 1
aload 0
getfield java.math.BigDecimal.precision:I
ifle 15
aload 0
getfield java.math.BigDecimal.precision:I
iload 6
iadd
goto 16
StackMap locals: java.math.BigDecimal int int int long int java.math.BigInteger
StackMap stack: new 14 new 14 java.math.BigInteger long int
15: iconst_0
StackMap locals: java.math.BigDecimal int int int long int java.math.BigInteger
StackMap stack: new 14 new 14 java.math.BigInteger long int int
16: invokespecial java.math.BigDecimal.<init>:(Ljava/math/BigInteger;JII)V
areturn
end local 7 end local 6 17: StackMap locals:
StackMap stack:
aload 0
iload 3
i2l
iload 1
i2l
lsub
invokevirtual java.math.BigDecimal.checkScale:(J)I
istore 6
start local 6 18: iload 6
getstatic java.math.BigDecimal.LONG_TEN_POWERS_TABLE:[J
arraylength
if_icmpge 20
19: lload 4
getstatic java.math.BigDecimal.LONG_TEN_POWERS_TABLE:[J
iload 6
laload
iload 1
iload 2
iload 1
invokestatic java.math.BigDecimal.divideAndRound:(JJIII)Ljava/math/BigDecimal;
areturn
20: StackMap locals: int
StackMap stack:
aload 0
invokevirtual java.math.BigDecimal.inflated:()Ljava/math/BigInteger;
iload 6
invokestatic java.math.BigDecimal.bigTenToThe:(I)Ljava/math/BigInteger;
iload 1
iload 2
iload 1
invokestatic java.math.BigDecimal.divideAndRound:(Ljava/math/BigInteger;Ljava/math/BigInteger;III)Ljava/math/BigDecimal;
areturn
end local 6 end local 4 21: StackMap locals:
StackMap stack:
iload 1
iload 3
if_icmple 27
22: aload 0
iload 1
i2l
iload 3
i2l
lsub
invokevirtual java.math.BigDecimal.checkScale:(J)I
istore 4
start local 4 23: aload 0
getfield java.math.BigDecimal.intVal:Ljava/math/BigInteger;
iload 4
invokestatic java.math.BigDecimal.bigMultiplyPowerTen:(Ljava/math/BigInteger;I)Ljava/math/BigInteger;
astore 5
start local 5 24: new java.math.BigDecimal
dup
aload 5
ldc -9223372036854775808
iload 1
aload 0
getfield java.math.BigDecimal.precision:I
ifle 25
aload 0
getfield java.math.BigDecimal.precision:I
iload 4
iadd
goto 26
StackMap locals: java.math.BigDecimal int int int int java.math.BigInteger
StackMap stack: new 24 new 24 java.math.BigInteger long int
25: iconst_0
StackMap locals: java.math.BigDecimal int int int int java.math.BigInteger
StackMap stack: new 24 new 24 java.math.BigInteger long int int
26: invokespecial java.math.BigDecimal.<init>:(Ljava/math/BigInteger;JII)V
areturn
end local 5 end local 4 27: StackMap locals:
StackMap stack:
aload 0
iload 3
i2l
iload 1
i2l
lsub
invokevirtual java.math.BigDecimal.checkScale:(J)I
istore 4
start local 4 28: iload 4
getstatic java.math.BigDecimal.LONG_TEN_POWERS_TABLE:[J
arraylength
if_icmpge 32
29: aload 0
getfield java.math.BigDecimal.intVal:Ljava/math/BigInteger;
getstatic java.math.BigDecimal.LONG_TEN_POWERS_TABLE:[J
iload 4
laload
iload 1
iload 2
30: iload 1
31: invokestatic java.math.BigDecimal.divideAndRound:(Ljava/math/BigInteger;JIII)Ljava/math/BigDecimal;
areturn
32: StackMap locals: int
StackMap stack:
aload 0
getfield java.math.BigDecimal.intVal:Ljava/math/BigInteger;
iload 4
invokestatic java.math.BigDecimal.bigTenToThe:(I)Ljava/math/BigInteger;
iload 1
iload 2
iload 1
invokestatic java.math.BigDecimal.divideAndRound:(Ljava/math/BigInteger;Ljava/math/BigInteger;III)Ljava/math/BigDecimal;
areturn
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 33 0 this Ljava/math/BigDecimal;
0 33 1 newScale I
0 33 2 roundingMode I
3 33 3 oldScale I
9 21 4 rs J
11 17 6 raise I
14 17 7 rb Ljava/math/BigInteger;
18 21 6 drop I
23 27 4 raise I
24 27 5 rb Ljava/math/BigInteger;
28 33 4 drop I
RuntimeVisibleAnnotations:
java.lang.Deprecated(since = "9")
MethodParameters:
Name Flags
newScale
roundingMode
public java.math.BigDecimal setScale(int);
descriptor: (I)Ljava/math/BigDecimal;
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=2, args_size=2
start local 0 start local 1 0: aload 0
iload 1
bipush 7
invokevirtual java.math.BigDecimal.setScale:(II)Ljava/math/BigDecimal;
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Ljava/math/BigDecimal;
0 1 1 newScale I
MethodParameters:
Name Flags
newScale
public java.math.BigDecimal movePointLeft(int);
descriptor: (I)Ljava/math/BigDecimal;
flags: (0x0001) ACC_PUBLIC
Code:
stack=7, locals=4, args_size=2
start local 0 start local 1 0: aload 0
aload 0
getfield java.math.BigDecimal.scale:I
i2l
iload 1
i2l
ladd
invokevirtual java.math.BigDecimal.checkScale:(J)I
istore 2
start local 2 1: new java.math.BigDecimal
dup
aload 0
getfield java.math.BigDecimal.intVal:Ljava/math/BigInteger;
aload 0
getfield java.math.BigDecimal.intCompact:J
iload 2
iconst_0
invokespecial java.math.BigDecimal.<init>:(Ljava/math/BigInteger;JII)V
astore 3
start local 3 2: aload 3
getfield java.math.BigDecimal.scale:I
ifge 3
aload 3
iconst_0
bipush 7
invokevirtual java.math.BigDecimal.setScale:(II)Ljava/math/BigDecimal;
goto 4
StackMap locals: int java.math.BigDecimal
StackMap stack:
3: aload 3
StackMap locals:
StackMap stack: java.math.BigDecimal
4: areturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Ljava/math/BigDecimal;
0 5 1 n I
1 5 2 newScale I
2 5 3 num Ljava/math/BigDecimal;
MethodParameters:
Name Flags
n
public java.math.BigDecimal movePointRight(int);
descriptor: (I)Ljava/math/BigDecimal;
flags: (0x0001) ACC_PUBLIC
Code:
stack=7, locals=4, args_size=2
start local 0 start local 1 0: aload 0
aload 0
getfield java.math.BigDecimal.scale:I
i2l
iload 1
i2l
lsub
invokevirtual java.math.BigDecimal.checkScale:(J)I
istore 2
start local 2 1: new java.math.BigDecimal
dup
aload 0
getfield java.math.BigDecimal.intVal:Ljava/math/BigInteger;
aload 0
getfield java.math.BigDecimal.intCompact:J
iload 2
iconst_0
invokespecial java.math.BigDecimal.<init>:(Ljava/math/BigInteger;JII)V
astore 3
start local 3 2: aload 3
getfield java.math.BigDecimal.scale:I
ifge 3
aload 3
iconst_0
bipush 7
invokevirtual java.math.BigDecimal.setScale:(II)Ljava/math/BigDecimal;
goto 4
StackMap locals: int java.math.BigDecimal
StackMap stack:
3: aload 3
StackMap locals:
StackMap stack: java.math.BigDecimal
4: areturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Ljava/math/BigDecimal;
0 5 1 n I
1 5 2 newScale I
2 5 3 num Ljava/math/BigDecimal;
MethodParameters:
Name Flags
n
public java.math.BigDecimal scaleByPowerOfTen(int);
descriptor: (I)Ljava/math/BigDecimal;
flags: (0x0001) ACC_PUBLIC
Code:
stack=10, locals=2, args_size=2
start local 0 start local 1 0: new java.math.BigDecimal
dup
aload 0
getfield java.math.BigDecimal.intVal:Ljava/math/BigInteger;
aload 0
getfield java.math.BigDecimal.intCompact:J
1: aload 0
aload 0
getfield java.math.BigDecimal.scale:I
i2l
iload 1
i2l
lsub
invokevirtual java.math.BigDecimal.checkScale:(J)I
aload 0
getfield java.math.BigDecimal.precision:I
2: invokespecial java.math.BigDecimal.<init>:(Ljava/math/BigInteger;JII)V
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Ljava/math/BigDecimal;
0 3 1 n I
MethodParameters:
Name Flags
n
public java.math.BigDecimal stripTrailingZeros();
descriptor: ()Ljava/math/BigDecimal;
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=1, args_size=1
start local 0 0: aload 0
getfield java.math.BigDecimal.intCompact:J
lconst_0
lcmp
ifeq 1
aload 0
getfield java.math.BigDecimal.intVal:Ljava/math/BigInteger;
ifnull 2
aload 0
getfield java.math.BigDecimal.intVal:Ljava/math/BigInteger;
invokevirtual java.math.BigInteger.signum:()I
ifne 2
1: StackMap locals:
StackMap stack:
getstatic java.math.BigDecimal.ZERO:Ljava/math/BigDecimal;
areturn
2: StackMap locals:
StackMap stack:
aload 0
getfield java.math.BigDecimal.intCompact:J
ldc -9223372036854775808
lcmp
ifeq 4
3: aload 0
getfield java.math.BigDecimal.intCompact:J
aload 0
getfield java.math.BigDecimal.scale:I
ldc -9223372036854775808
invokestatic java.math.BigDecimal.createAndStripZerosToMatchScale:(JIJ)Ljava/math/BigDecimal;
areturn
4: StackMap locals:
StackMap stack:
aload 0
getfield java.math.BigDecimal.intVal:Ljava/math/BigInteger;
aload 0
getfield java.math.BigDecimal.scale:I
ldc -9223372036854775808
invokestatic java.math.BigDecimal.createAndStripZerosToMatchScale:(Ljava/math/BigInteger;IJ)Ljava/math/BigDecimal;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Ljava/math/BigDecimal;
public int compareTo(java.math.BigDecimal);
descriptor: (Ljava/math/BigDecimal;)I
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=6, args_size=2
start local 0 start local 1 0: aload 0
getfield java.math.BigDecimal.scale:I
aload 1
getfield java.math.BigDecimal.scale:I
if_icmpne 8
1: aload 0
getfield java.math.BigDecimal.intCompact:J
lstore 2
start local 2 2: aload 1
getfield java.math.BigDecimal.intCompact:J
lstore 4
start local 4 3: lload 2
ldc -9223372036854775808
lcmp
ifeq 8
lload 4
ldc -9223372036854775808
lcmp
ifeq 8
4: lload 2
lload 4
lcmp
ifeq 6
lload 2
lload 4
lcmp
ifle 5
iconst_1
goto 7
StackMap locals: long long
StackMap stack:
5: iconst_m1
goto 7
StackMap locals:
StackMap stack:
6: iconst_0
StackMap locals:
StackMap stack: int
7: ireturn
end local 4 end local 2 8: StackMap locals:
StackMap stack:
aload 0
invokevirtual java.math.BigDecimal.signum:()I
istore 2
start local 2 9: aload 1
invokevirtual java.math.BigDecimal.signum:()I
istore 3
start local 3 10: iload 2
iload 3
if_icmpeq 14
11: iload 2
iload 3
if_icmple 12
iconst_1
goto 13
StackMap locals: int int
StackMap stack:
12: iconst_m1
StackMap locals:
StackMap stack: int
13: ireturn
14: StackMap locals:
StackMap stack:
iload 2
ifne 16
15: iconst_0
ireturn
16: StackMap locals:
StackMap stack:
aload 0
aload 1
invokevirtual java.math.BigDecimal.compareMagnitude:(Ljava/math/BigDecimal;)I
istore 4
start local 4 17: iload 2
ifle 18
iload 4
goto 19
StackMap locals: int
StackMap stack:
18: iload 4
ineg
StackMap locals:
StackMap stack: int
19: ireturn
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 20 0 this Ljava/math/BigDecimal;
0 20 1 val Ljava/math/BigDecimal;
2 8 2 xs J
3 8 4 ys J
9 20 2 xsign I
10 20 3 ysign I
17 20 4 cmp I
MethodParameters:
Name Flags
val
private int compareMagnitude(java.math.BigDecimal);
descriptor: (Ljava/math/BigDecimal;)I
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=13, args_size=2
start local 0 start local 1 0: aload 1
getfield java.math.BigDecimal.intCompact:J
lstore 2
start local 2 1: aload 0
getfield java.math.BigDecimal.intCompact:J
lstore 4
start local 4 2: lload 4
lconst_0
lcmp
ifne 6
3: lload 2
lconst_0
lcmp
ifne 4
iconst_0
goto 5
StackMap locals: long long
StackMap stack:
4: iconst_m1
StackMap locals:
StackMap stack: int
5: ireturn
6: StackMap locals:
StackMap stack:
lload 2
lconst_0
lcmp
ifne 8
7: iconst_1
ireturn
8: StackMap locals:
StackMap stack:
aload 0
getfield java.math.BigDecimal.scale:I
i2l
aload 1
getfield java.math.BigDecimal.scale:I
i2l
lsub
lstore 6
start local 6 9: lload 6
lconst_0
lcmp
ifeq 29
10: aload 0
invokevirtual java.math.BigDecimal.precision:()I
i2l
aload 0
getfield java.math.BigDecimal.scale:I
i2l
lsub
lstore 8
start local 8 11: aload 1
invokevirtual java.math.BigDecimal.precision:()I
i2l
aload 1
getfield java.math.BigDecimal.scale:I
i2l
lsub
lstore 10
start local 10 12: lload 8
lload 10
lcmp
ifge 14
13: iconst_m1
ireturn
14: StackMap locals: long long long
StackMap stack:
lload 8
lload 10
lcmp
ifle 16
15: iconst_1
ireturn
16: StackMap locals:
StackMap stack:
lload 6
lconst_0
lcmp
ifge 23
17: lload 6
ldc -2147483648
lcmp
ifle 29
18: lload 4
ldc -9223372036854775808
lcmp
ifeq 20
19: lload 4
lload 6
lneg
l2i
invokestatic java.math.BigDecimal.longMultiplyPowerTen:(JI)J
dup2
lstore 4
ldc -9223372036854775808
lcmp
ifne 29
20: StackMap locals:
StackMap stack:
lload 2
ldc -9223372036854775808
lcmp
ifne 29
21: aload 0
lload 6
lneg
l2i
invokevirtual java.math.BigDecimal.bigMultiplyPowerTen:(I)Ljava/math/BigInteger;
astore 12
start local 12 22: aload 12
aload 1
getfield java.math.BigDecimal.intVal:Ljava/math/BigInteger;
invokevirtual java.math.BigInteger.compareMagnitude:(Ljava/math/BigInteger;)I
ireturn
end local 12 23: StackMap locals:
StackMap stack:
lload 6
ldc 2147483647
lcmp
ifgt 29
24: lload 2
ldc -9223372036854775808
lcmp
ifeq 26
25: lload 2
lload 6
l2i
invokestatic java.math.BigDecimal.longMultiplyPowerTen:(JI)J
dup2
lstore 2
ldc -9223372036854775808
lcmp
ifne 29
26: StackMap locals:
StackMap stack:
lload 4
ldc -9223372036854775808
lcmp
ifne 29
27: aload 1
lload 6
l2i
invokevirtual java.math.BigDecimal.bigMultiplyPowerTen:(I)Ljava/math/BigInteger;
astore 12
start local 12 28: aload 0
getfield java.math.BigDecimal.intVal:Ljava/math/BigInteger;
aload 12
invokevirtual java.math.BigInteger.compareMagnitude:(Ljava/math/BigInteger;)I
ireturn
end local 12 end local 10 end local 8 29: StackMap locals:
StackMap stack:
lload 4
ldc -9223372036854775808
lcmp
ifeq 33
30: lload 2
ldc -9223372036854775808
lcmp
ifeq 31
lload 4
lload 2
invokestatic java.math.BigDecimal.longCompareMagnitude:(JJ)I
goto 32
StackMap locals:
StackMap stack:
31: iconst_m1
StackMap locals:
StackMap stack: int
32: ireturn
33: StackMap locals:
StackMap stack:
lload 2
ldc -9223372036854775808
lcmp
ifeq 35
34: iconst_1
ireturn
35: StackMap locals:
StackMap stack:
aload 0
getfield java.math.BigDecimal.intVal:Ljava/math/BigInteger;
aload 1
getfield java.math.BigDecimal.intVal:Ljava/math/BigInteger;
invokevirtual java.math.BigInteger.compareMagnitude:(Ljava/math/BigInteger;)I
ireturn
end local 6 end local 4 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 36 0 this Ljava/math/BigDecimal;
0 36 1 val Ljava/math/BigDecimal;
1 36 2 ys J
2 36 4 xs J
9 36 6 sdiff J
11 29 8 xae J
12 29 10 yae J
22 23 12 rb Ljava/math/BigInteger;
28 29 12 rb Ljava/math/BigInteger;
MethodParameters:
Name Flags
val
public boolean equals(java.lang.Object);
descriptor: (Ljava/lang/Object;)Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=7, args_size=2
start local 0 start local 1 0: aload 1
instanceof java.math.BigDecimal
ifne 2
1: iconst_0
ireturn
2: StackMap locals:
StackMap stack:
aload 1
checkcast java.math.BigDecimal
astore 2
start local 2 3: aload 1
aload 0
if_acmpne 5
4: iconst_1
ireturn
5: StackMap locals: java.math.BigDecimal
StackMap stack:
aload 0
getfield java.math.BigDecimal.scale:I
aload 2
getfield java.math.BigDecimal.scale:I
if_icmpeq 7
6: iconst_0
ireturn
7: StackMap locals:
StackMap stack:
aload 0
getfield java.math.BigDecimal.intCompact:J
lstore 3
start local 3 8: aload 2
getfield java.math.BigDecimal.intCompact:J
lstore 5
start local 5 9: lload 3
ldc -9223372036854775808
lcmp
ifeq 14
10: lload 5
ldc -9223372036854775808
lcmp
ifne 12
11: aload 2
getfield java.math.BigDecimal.intVal:Ljava/math/BigInteger;
invokestatic java.math.BigDecimal.compactValFor:(Ljava/math/BigInteger;)J
lstore 5
12: StackMap locals: long long
StackMap stack:
lload 5
lload 3
lcmp
ifne 13
iconst_1
ireturn
StackMap locals:
StackMap stack:
13: iconst_0
ireturn
14: StackMap locals:
StackMap stack:
lload 5
ldc -9223372036854775808
lcmp
ifeq 17
15: lload 5
aload 0
getfield java.math.BigDecimal.intVal:Ljava/math/BigInteger;
invokestatic java.math.BigDecimal.compactValFor:(Ljava/math/BigInteger;)J
lcmp
ifne 16
iconst_1
ireturn
StackMap locals:
StackMap stack:
16: iconst_0
ireturn
17: StackMap locals:
StackMap stack:
aload 0
invokevirtual java.math.BigDecimal.inflated:()Ljava/math/BigInteger;
aload 2
invokevirtual java.math.BigDecimal.inflated:()Ljava/math/BigInteger;
invokevirtual java.math.BigInteger.equals:(Ljava/lang/Object;)Z
ireturn
end local 5 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 18 0 this Ljava/math/BigDecimal;
0 18 1 x Ljava/lang/Object;
3 18 2 xDec Ljava/math/BigDecimal;
8 18 3 s J
9 18 5 xs J
MethodParameters:
Name Flags
x
public java.math.BigDecimal min(java.math.BigDecimal);
descriptor: (Ljava/math/BigDecimal;)Ljava/math/BigDecimal;
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
aload 1
invokevirtual java.math.BigDecimal.compareTo:(Ljava/math/BigDecimal;)I
ifgt 1
aload 0
goto 2
StackMap locals:
StackMap stack:
1: aload 1
StackMap locals:
StackMap stack: java.math.BigDecimal
2: areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Ljava/math/BigDecimal;
0 3 1 val Ljava/math/BigDecimal;
MethodParameters:
Name Flags
val
public java.math.BigDecimal max(java.math.BigDecimal);
descriptor: (Ljava/math/BigDecimal;)Ljava/math/BigDecimal;
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
aload 1
invokevirtual java.math.BigDecimal.compareTo:(Ljava/math/BigDecimal;)I
iflt 1
aload 0
goto 2
StackMap locals:
StackMap stack:
1: aload 1
StackMap locals:
StackMap stack: java.math.BigDecimal
2: areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Ljava/math/BigDecimal;
0 3 1 val Ljava/math/BigDecimal;
MethodParameters:
Name Flags
val
public int hashCode();
descriptor: ()I
flags: (0x0001) ACC_PUBLIC
Code:
stack=6, locals=4, args_size=1
start local 0 0: aload 0
getfield java.math.BigDecimal.intCompact:J
ldc -9223372036854775808
lcmp
ifeq 10
1: aload 0
getfield java.math.BigDecimal.intCompact:J
lconst_0
lcmp
ifge 2
aload 0
getfield java.math.BigDecimal.intCompact:J
lneg
goto 3
StackMap locals:
StackMap stack:
2: aload 0
getfield java.math.BigDecimal.intCompact:J
StackMap locals:
StackMap stack: long
3: lstore 1
start local 1 4: lload 1
bipush 32
lushr
l2i
bipush 31
imul
i2l
5: lload 1
ldc 4294967295
land
6: ladd
l2i
istore 3
start local 3 7: bipush 31
aload 0
getfield java.math.BigDecimal.intCompact:J
lconst_0
lcmp
ifge 8
iload 3
ineg
goto 9
StackMap locals: java.math.BigDecimal long int
StackMap stack: int
8: iload 3
StackMap locals: java.math.BigDecimal long int
StackMap stack: int int
9: imul
aload 0
getfield java.math.BigDecimal.scale:I
iadd
ireturn
end local 3 end local 1 10: StackMap locals:
StackMap stack:
bipush 31
aload 0
getfield java.math.BigDecimal.intVal:Ljava/math/BigInteger;
invokevirtual java.math.BigInteger.hashCode:()I
imul
aload 0
getfield java.math.BigDecimal.scale:I
iadd
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 11 0 this Ljava/math/BigDecimal;
4 10 1 val2 J
7 10 3 temp I
public java.lang.String toString();
descriptor: ()Ljava/lang/String;
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=2, args_size=1
start local 0 0: aload 0
getfield java.math.BigDecimal.stringCache:Ljava/lang/String;
astore 1
start local 1 1: aload 1
ifnonnull 3
2: aload 0
aload 0
iconst_1
invokevirtual java.math.BigDecimal.layoutChars:(Z)Ljava/lang/String;
dup
astore 1
putfield java.math.BigDecimal.stringCache:Ljava/lang/String;
3: StackMap locals: java.lang.String
StackMap stack:
aload 1
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Ljava/math/BigDecimal;
1 4 1 sc Ljava/lang/String;
public java.lang.String toEngineeringString();
descriptor: ()Ljava/lang/String;
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
iconst_0
invokevirtual java.math.BigDecimal.layoutChars:(Z)Ljava/lang/String;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Ljava/math/BigDecimal;
public java.lang.String toPlainString();
descriptor: ()Ljava/lang/String;
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=4, args_size=1
start local 0 0: aload 0
getfield java.math.BigDecimal.scale:I
ifne 4
1: aload 0
getfield java.math.BigDecimal.intCompact:J
ldc -9223372036854775808
lcmp
ifeq 3
2: aload 0
getfield java.math.BigDecimal.intCompact:J
invokestatic java.lang.Long.toString:(J)Ljava/lang/String;
areturn
3: StackMap locals:
StackMap stack:
aload 0
getfield java.math.BigDecimal.intVal:Ljava/math/BigInteger;
invokevirtual java.math.BigInteger.toString:()Ljava/lang/String;
areturn
4: StackMap locals:
StackMap stack:
aload 0
getfield java.math.BigDecimal.scale:I
ifge 21
5: aload 0
invokevirtual java.math.BigDecimal.signum:()I
ifne 7
6: ldc "0"
areturn
7: StackMap locals:
StackMap stack:
aload 0
getfield java.math.BigDecimal.scale:I
i2l
lneg
invokestatic java.math.BigDecimal.checkScaleNonZero:(J)I
istore 1
start local 1 8: aload 0
getfield java.math.BigDecimal.intCompact:J
ldc -9223372036854775808
lcmp
ifeq 12
9: new java.lang.StringBuilder
dup
bipush 20
iload 1
iadd
invokespecial java.lang.StringBuilder.<init>:(I)V
astore 2
start local 2 10: aload 2
aload 0
getfield java.math.BigDecimal.intCompact:J
invokevirtual java.lang.StringBuilder.append:(J)Ljava/lang/StringBuilder;
pop
11: goto 15
end local 2 12: StackMap locals: int
StackMap stack:
aload 0
getfield java.math.BigDecimal.intVal:Ljava/math/BigInteger;
invokevirtual java.math.BigInteger.toString:()Ljava/lang/String;
astore 3
start local 3 13: new java.lang.StringBuilder
dup
aload 3
invokevirtual java.lang.String.length:()I
iload 1
iadd
invokespecial java.lang.StringBuilder.<init>:(I)V
astore 2
start local 2 14: aload 2
aload 3
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
pop
end local 3 15: StackMap locals: java.lang.StringBuilder
StackMap stack:
iconst_0
istore 3
start local 3 16: goto 19
17: StackMap locals: int
StackMap stack:
aload 2
bipush 48
invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
pop
18: iinc 3 1
StackMap locals:
StackMap stack:
19: iload 3
iload 1
if_icmplt 17
end local 3 20: aload 2
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
areturn
end local 2 end local 1 21: StackMap locals:
StackMap stack:
aload 0
getfield java.math.BigDecimal.intCompact:J
ldc -9223372036854775808
lcmp
ifeq 24
22: aload 0
getfield java.math.BigDecimal.intCompact:J
invokestatic java.lang.Math.abs:(J)J
invokestatic java.lang.Long.toString:(J)Ljava/lang/String;
astore 1
start local 1 23: goto 25
end local 1 24: StackMap locals:
StackMap stack:
aload 0
getfield java.math.BigDecimal.intVal:Ljava/math/BigInteger;
invokevirtual java.math.BigInteger.abs:()Ljava/math/BigInteger;
invokevirtual java.math.BigInteger.toString:()Ljava/lang/String;
astore 1
start local 1 25: StackMap locals: java.lang.String
StackMap stack:
aload 0
aload 0
invokevirtual java.math.BigDecimal.signum:()I
aload 1
aload 0
getfield java.math.BigDecimal.scale:I
invokevirtual java.math.BigDecimal.getValueString:(ILjava/lang/String;I)Ljava/lang/String;
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 26 0 this Ljava/math/BigDecimal;
8 21 1 trailingZeros I
10 12 2 buf Ljava/lang/StringBuilder;
14 21 2 buf Ljava/lang/StringBuilder;
13 15 3 str Ljava/lang/String;
16 20 3 i I
23 24 1 str Ljava/lang/String;
25 26 1 str Ljava/lang/String;
private java.lang.String getValueString(int, java.lang.String, int);
descriptor: (ILjava/lang/String;I)Ljava/lang/String;
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=7, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 2
invokevirtual java.lang.String.length:()I
iload 3
isub
istore 5
start local 5 1: iload 5
ifne 5
2: new java.lang.StringBuilder
dup
iload 1
ifge 3
ldc "-0."
goto 4
StackMap locals: java.math.BigDecimal int java.lang.String int top int
StackMap stack: new 2 new 2
3: ldc "0."
StackMap locals: java.math.BigDecimal int java.lang.String int top int
StackMap stack: new 2 new 2 java.lang.String
4: invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 2
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
areturn
5: StackMap locals:
StackMap stack:
iload 5
ifle 11
6: new java.lang.StringBuilder
dup
aload 2
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
astore 4
start local 4 7: aload 4
iload 5
bipush 46
invokevirtual java.lang.StringBuilder.insert:(IC)Ljava/lang/StringBuilder;
pop
8: iload 1
ifge 21
9: aload 4
iconst_0
bipush 45
invokevirtual java.lang.StringBuilder.insert:(IC)Ljava/lang/StringBuilder;
pop
10: goto 21
end local 4 11: StackMap locals:
StackMap stack:
new java.lang.StringBuilder
dup
iconst_3
iload 5
isub
aload 2
invokevirtual java.lang.String.length:()I
iadd
invokespecial java.lang.StringBuilder.<init>:(I)V
astore 4
start local 4 12: aload 4
iload 1
ifge 13
ldc "-0."
goto 14
StackMap locals: java.math.BigDecimal int java.lang.String int java.lang.StringBuilder int
StackMap stack: java.lang.StringBuilder
13: ldc "0."
StackMap locals: java.math.BigDecimal int java.lang.String int java.lang.StringBuilder int
StackMap stack: java.lang.StringBuilder java.lang.String
14: invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
pop
15: iconst_0
istore 6
start local 6 16: goto 19
17: StackMap locals: int
StackMap stack:
aload 4
bipush 48
invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
pop
18: iinc 6 1
StackMap locals:
StackMap stack:
19: iload 6
iload 5
ineg
if_icmplt 17
end local 6 20: aload 4
aload 2
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
pop
21: StackMap locals:
StackMap stack:
aload 4
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
areturn
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 22 0 this Ljava/math/BigDecimal;
0 22 1 signum I
0 22 2 intString Ljava/lang/String;
0 22 3 scale I
7 11 4 buf Ljava/lang/StringBuilder;
12 22 4 buf Ljava/lang/StringBuilder;
1 22 5 insertionPoint I
16 20 6 i I
MethodParameters:
Name Flags
signum
intString
scale
public java.math.BigInteger toBigInteger();
descriptor: ()Ljava/math/BigInteger;
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=1, args_size=1
start local 0 0: aload 0
iconst_0
iconst_1
invokevirtual java.math.BigDecimal.setScale:(II)Ljava/math/BigDecimal;
invokevirtual java.math.BigDecimal.inflated:()Ljava/math/BigInteger;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Ljava/math/BigDecimal;
public java.math.BigInteger toBigIntegerExact();
descriptor: ()Ljava/math/BigInteger;
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=1, args_size=1
start local 0 0: aload 0
iconst_0
bipush 7
invokevirtual java.math.BigDecimal.setScale:(II)Ljava/math/BigDecimal;
invokevirtual java.math.BigDecimal.inflated:()Ljava/math/BigInteger;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Ljava/math/BigDecimal;
public long longValue();
descriptor: ()J
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=1, args_size=1
start local 0 0: aload 0
getfield java.math.BigDecimal.intCompact:J
ldc -9223372036854775808
lcmp
ifeq 2
aload 0
getfield java.math.BigDecimal.scale:I
ifne 2
1: aload 0
getfield java.math.BigDecimal.intCompact:J
lreturn
2: StackMap locals:
StackMap stack:
aload 0
invokevirtual java.math.BigDecimal.signum:()I
ifeq 4
aload 0
invokevirtual java.math.BigDecimal.fractionOnly:()Z
ifne 4
3: aload 0
getfield java.math.BigDecimal.scale:I
bipush -64
if_icmpgt 5
4: StackMap locals:
StackMap stack:
lconst_0
lreturn
5: StackMap locals:
StackMap stack:
aload 0
invokevirtual java.math.BigDecimal.toBigInteger:()Ljava/math/BigInteger;
invokevirtual java.math.BigInteger.longValue:()J
lreturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Ljava/math/BigDecimal;
private boolean fractionOnly();
descriptor: ()Z
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=1, args_size=1
start local 0 0: getstatic java.math.BigDecimal.$assertionsDisabled:Z
ifne 1
aload 0
invokevirtual java.math.BigDecimal.signum:()I
ifne 1
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
1: StackMap locals:
StackMap stack:
aload 0
invokevirtual java.math.BigDecimal.precision:()I
aload 0
getfield java.math.BigDecimal.scale:I
isub
ifgt 2
iconst_1
ireturn
StackMap locals:
StackMap stack:
2: iconst_0
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Ljava/math/BigDecimal;
public long longValueExact();
descriptor: ()J
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=2, args_size=1
start local 0 0: aload 0
getfield java.math.BigDecimal.intCompact:J
ldc -9223372036854775808
lcmp
ifeq 2
aload 0
getfield java.math.BigDecimal.scale:I
ifne 2
1: aload 0
getfield java.math.BigDecimal.intCompact:J
lreturn
2: StackMap locals:
StackMap stack:
aload 0
invokevirtual java.math.BigDecimal.signum:()I
ifne 4
3: lconst_0
lreturn
4: StackMap locals:
StackMap stack:
aload 0
invokevirtual java.math.BigDecimal.fractionOnly:()Z
ifeq 6
5: new java.lang.ArithmeticException
dup
ldc "Rounding necessary"
invokespecial java.lang.ArithmeticException.<init>:(Ljava/lang/String;)V
athrow
6: StackMap locals:
StackMap stack:
aload 0
invokevirtual java.math.BigDecimal.precision:()I
aload 0
getfield java.math.BigDecimal.scale:I
isub
bipush 19
if_icmple 8
7: new java.lang.ArithmeticException
dup
ldc "Overflow"
invokespecial java.lang.ArithmeticException.<init>:(Ljava/lang/String;)V
athrow
8: StackMap locals:
StackMap stack:
aload 0
iconst_0
bipush 7
invokevirtual java.math.BigDecimal.setScale:(II)Ljava/math/BigDecimal;
astore 1
start local 1 9: aload 1
invokevirtual java.math.BigDecimal.precision:()I
bipush 19
if_icmplt 11
10: aload 1
invokestatic java.math.BigDecimal$LongOverflow.check:(Ljava/math/BigDecimal;)V
11: StackMap locals: java.math.BigDecimal
StackMap stack:
aload 1
invokevirtual java.math.BigDecimal.inflated:()Ljava/math/BigInteger;
invokevirtual java.math.BigInteger.longValue:()J
lreturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 12 0 this Ljava/math/BigDecimal;
9 12 1 num Ljava/math/BigDecimal;
public int intValue();
descriptor: ()I
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=1, args_size=1
start local 0 0: aload 0
getfield java.math.BigDecimal.intCompact:J
ldc -9223372036854775808
lcmp
ifeq 2
aload 0
getfield java.math.BigDecimal.scale:I
ifne 2
1: aload 0
getfield java.math.BigDecimal.intCompact:J
l2i
goto 3
2: StackMap locals:
StackMap stack:
aload 0
invokevirtual java.math.BigDecimal.longValue:()J
l2i
3: StackMap locals:
StackMap stack: int
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Ljava/math/BigDecimal;
public int intValueExact();
descriptor: ()I
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=3, args_size=1
start local 0 0: aload 0
invokevirtual java.math.BigDecimal.longValueExact:()J
lstore 1
start local 1 1: lload 1
l2i
i2l
lload 1
lcmp
ifeq 3
2: new java.lang.ArithmeticException
dup
ldc "Overflow"
invokespecial java.lang.ArithmeticException.<init>:(Ljava/lang/String;)V
athrow
3: StackMap locals: long
StackMap stack:
lload 1
l2i
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Ljava/math/BigDecimal;
1 4 1 num J
public short shortValueExact();
descriptor: ()S
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=3, args_size=1
start local 0 0: aload 0
invokevirtual java.math.BigDecimal.longValueExact:()J
lstore 1
start local 1 1: lload 1
l2i
i2s
i2l
lload 1
lcmp
ifeq 3
2: new java.lang.ArithmeticException
dup
ldc "Overflow"
invokespecial java.lang.ArithmeticException.<init>:(Ljava/lang/String;)V
athrow
3: StackMap locals: long
StackMap stack:
lload 1
l2i
i2s
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Ljava/math/BigDecimal;
1 4 1 num J
public byte byteValueExact();
descriptor: ()B
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=3, args_size=1
start local 0 0: aload 0
invokevirtual java.math.BigDecimal.longValueExact:()J
lstore 1
start local 1 1: lload 1
l2i
i2b
i2l
lload 1
lcmp
ifeq 3
2: new java.lang.ArithmeticException
dup
ldc "Overflow"
invokespecial java.lang.ArithmeticException.<init>:(Ljava/lang/String;)V
athrow
3: StackMap locals: long
StackMap stack:
lload 1
l2i
i2b
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Ljava/math/BigDecimal;
1 4 1 num J
public float floatValue();
descriptor: ()F
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=1, args_size=1
start local 0 0: aload 0
getfield java.math.BigDecimal.intCompact:J
ldc -9223372036854775808
lcmp
ifeq 8
1: aload 0
getfield java.math.BigDecimal.scale:I
ifne 3
2: aload 0
getfield java.math.BigDecimal.intCompact:J
l2f
freturn
3: StackMap locals:
StackMap stack:
aload 0
getfield java.math.BigDecimal.intCompact:J
invokestatic java.lang.Math.abs:(J)J
ldc 4194304
lcmp
ifge 8
4: aload 0
getfield java.math.BigDecimal.scale:I
ifle 6
aload 0
getfield java.math.BigDecimal.scale:I
getstatic java.math.BigDecimal.FLOAT_10_POW:[F
arraylength
if_icmpge 6
5: aload 0
getfield java.math.BigDecimal.intCompact:J
l2f
getstatic java.math.BigDecimal.FLOAT_10_POW:[F
aload 0
getfield java.math.BigDecimal.scale:I
faload
fdiv
freturn
6: StackMap locals:
StackMap stack:
aload 0
getfield java.math.BigDecimal.scale:I
ifge 8
aload 0
getfield java.math.BigDecimal.scale:I
getstatic java.math.BigDecimal.FLOAT_10_POW:[F
arraylength
ineg
if_icmple 8
7: aload 0
getfield java.math.BigDecimal.intCompact:J
l2f
getstatic java.math.BigDecimal.FLOAT_10_POW:[F
aload 0
getfield java.math.BigDecimal.scale:I
ineg
faload
fmul
freturn
8: StackMap locals:
StackMap stack:
aload 0
invokevirtual java.math.BigDecimal.toString:()Ljava/lang/String;
invokestatic java.lang.Float.parseFloat:(Ljava/lang/String;)F
freturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 9 0 this Ljava/math/BigDecimal;
public double doubleValue();
descriptor: ()D
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=1, args_size=1
start local 0 0: aload 0
getfield java.math.BigDecimal.intCompact:J
ldc -9223372036854775808
lcmp
ifeq 8
1: aload 0
getfield java.math.BigDecimal.scale:I
ifne 3
2: aload 0
getfield java.math.BigDecimal.intCompact:J
l2d
dreturn
3: StackMap locals:
StackMap stack:
aload 0
getfield java.math.BigDecimal.intCompact:J
invokestatic java.lang.Math.abs:(J)J
ldc 4503599627370496
lcmp
ifge 8
4: aload 0
getfield java.math.BigDecimal.scale:I
ifle 6
aload 0
getfield java.math.BigDecimal.scale:I
getstatic java.math.BigDecimal.DOUBLE_10_POW:[D
arraylength
if_icmpge 6
5: aload 0
getfield java.math.BigDecimal.intCompact:J
l2d
getstatic java.math.BigDecimal.DOUBLE_10_POW:[D
aload 0
getfield java.math.BigDecimal.scale:I
daload
ddiv
dreturn
6: StackMap locals:
StackMap stack:
aload 0
getfield java.math.BigDecimal.scale:I
ifge 8
aload 0
getfield java.math.BigDecimal.scale:I
getstatic java.math.BigDecimal.DOUBLE_10_POW:[D
arraylength
ineg
if_icmple 8
7: aload 0
getfield java.math.BigDecimal.intCompact:J
l2d
getstatic java.math.BigDecimal.DOUBLE_10_POW:[D
aload 0
getfield java.math.BigDecimal.scale:I
ineg
daload
dmul
dreturn
8: StackMap locals:
StackMap stack:
aload 0
invokevirtual java.math.BigDecimal.toString:()Ljava/lang/String;
invokestatic java.lang.Double.parseDouble:(Ljava/lang/String;)D
dreturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 9 0 this Ljava/math/BigDecimal;
public java.math.BigDecimal ulp();
descriptor: ()Ljava/math/BigDecimal;
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=1, args_size=1
start local 0 0: lconst_1
aload 0
invokevirtual java.math.BigDecimal.scale:()I
iconst_1
invokestatic java.math.BigDecimal.valueOf:(JII)Ljava/math/BigDecimal;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Ljava/math/BigDecimal;
private java.lang.String layoutChars(boolean);
descriptor: (Z)Ljava/lang/String;
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=11, args_size=2
start local 0 start local 1 0: aload 0
getfield java.math.BigDecimal.scale:I
ifne 5
1: aload 0
getfield java.math.BigDecimal.intCompact:J
ldc -9223372036854775808
lcmp
ifeq 3
2: aload 0
getfield java.math.BigDecimal.intCompact:J
invokestatic java.lang.Long.toString:(J)Ljava/lang/String;
goto 4
3: StackMap locals:
StackMap stack:
aload 0
getfield java.math.BigDecimal.intVal:Ljava/math/BigInteger;
invokevirtual java.math.BigInteger.toString:()Ljava/lang/String;
4: StackMap locals:
StackMap stack: java.lang.String
areturn
5: StackMap locals:
StackMap stack:
aload 0
getfield java.math.BigDecimal.scale:I
iconst_2
if_icmpne 13
6: aload 0
getfield java.math.BigDecimal.intCompact:J
lconst_0
lcmp
iflt 13
aload 0
getfield java.math.BigDecimal.intCompact:J
ldc 2147483647
lcmp
ifge 13
7: aload 0
getfield java.math.BigDecimal.intCompact:J
l2i
bipush 100
irem
istore 2
start local 2 8: aload 0
getfield java.math.BigDecimal.intCompact:J
l2i
bipush 100
idiv
istore 3
start local 3 9: new java.lang.StringBuilder
dup
iload 3
invokestatic java.lang.Integer.toString:(I)Ljava/lang/String;
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
bipush 46
invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
10: getstatic java.math.BigDecimal$StringBuilderHelper.DIGIT_TENS:[C
iload 2
caload
invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
11: getstatic java.math.BigDecimal$StringBuilderHelper.DIGIT_ONES:[C
iload 2
caload
invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
12: invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
areturn
end local 3 end local 2 13: StackMap locals:
StackMap stack:
getstatic java.math.BigDecimal.threadLocalStringBuilderHelper:Ljava/lang/ThreadLocal;
invokevirtual java.lang.ThreadLocal.get:()Ljava/lang/Object;
checkcast java.math.BigDecimal$StringBuilderHelper
astore 2
start local 2 14: aload 0
getfield java.math.BigDecimal.intCompact:J
ldc -9223372036854775808
lcmp
ifeq 18
15: aload 2
aload 0
getfield java.math.BigDecimal.intCompact:J
invokestatic java.lang.Math.abs:(J)J
invokevirtual java.math.BigDecimal$StringBuilderHelper.putIntCompact:(J)I
istore 4
start local 4 16: aload 2
invokevirtual java.math.BigDecimal$StringBuilderHelper.getCompactCharArray:()[C
astore 3
start local 3 17: goto 20
end local 4 end local 3 18: StackMap locals: java.math.BigDecimal$StringBuilderHelper
StackMap stack:
iconst_0
istore 4
start local 4 19: aload 0
getfield java.math.BigDecimal.intVal:Ljava/math/BigInteger;
invokevirtual java.math.BigInteger.abs:()Ljava/math/BigInteger;
invokevirtual java.math.BigInteger.toString:()Ljava/lang/String;
invokevirtual java.lang.String.toCharArray:()[C
astore 3
start local 3 20: StackMap locals: char[] int
StackMap stack:
aload 2
invokevirtual java.math.BigDecimal$StringBuilderHelper.getStringBuilder:()Ljava/lang/StringBuilder;
astore 5
start local 5 21: aload 0
invokevirtual java.math.BigDecimal.signum:()I
ifge 23
22: aload 5
bipush 45
invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
pop
23: StackMap locals: java.lang.StringBuilder
StackMap stack:
aload 3
arraylength
iload 4
isub
istore 6
start local 6 24: aload 0
getfield java.math.BigDecimal.scale:I
i2l
lneg
iload 6
iconst_1
isub
i2l
ladd
lstore 7
start local 7 25: aload 0
getfield java.math.BigDecimal.scale:I
iflt 40
lload 7
ldc -6
lcmp
iflt 40
26: aload 0
getfield java.math.BigDecimal.scale:I
iload 6
isub
istore 9
start local 9 27: iload 9
iflt 36
28: aload 5
bipush 48
invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
pop
29: aload 5
bipush 46
invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
pop
30: goto 33
31: StackMap locals: int long int
StackMap stack:
aload 5
bipush 48
invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
pop
32: iinc 9 -1
StackMap locals:
StackMap stack:
33: iload 9
ifgt 31
34: aload 5
aload 3
iload 4
iload 6
invokevirtual java.lang.StringBuilder.append:([CII)Ljava/lang/StringBuilder;
pop
35: goto 79
36: StackMap locals:
StackMap stack:
aload 5
aload 3
iload 4
iload 9
ineg
invokevirtual java.lang.StringBuilder.append:([CII)Ljava/lang/StringBuilder;
pop
37: aload 5
bipush 46
invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
pop
38: aload 5
aload 3
iload 9
ineg
iload 4
iadd
aload 0
getfield java.math.BigDecimal.scale:I
invokevirtual java.lang.StringBuilder.append:([CII)Ljava/lang/StringBuilder;
pop
end local 9 39: goto 79
40: StackMap locals:
StackMap stack:
iload 1
ifeq 46
41: aload 5
aload 3
iload 4
caload
invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
pop
42: iload 6
iconst_1
if_icmple 74
43: aload 5
bipush 46
invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
pop
44: aload 5
aload 3
iload 4
iconst_1
iadd
iload 6
iconst_1
isub
invokevirtual java.lang.StringBuilder.append:([CII)Ljava/lang/StringBuilder;
pop
45: goto 74
46: StackMap locals:
StackMap stack:
lload 7
ldc 3
lrem
l2i
istore 9
start local 9 47: iload 9
ifge 49
48: iinc 9 3
49: StackMap locals: int
StackMap stack:
lload 7
iload 9
i2l
lsub
lstore 7
50: iinc 9 1
51: aload 0
invokevirtual java.math.BigDecimal.signum:()I
ifne 63
52: iload 9
tableswitch { // 1 - 3
1: 53
2: 55
3: 58
default: 61
}
53: StackMap locals:
StackMap stack:
aload 5
bipush 48
invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
pop
54: goto 74
55: StackMap locals:
StackMap stack:
aload 5
ldc "0.00"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
pop
56: lload 7
ldc 3
ladd
lstore 7
57: goto 74
58: StackMap locals:
StackMap stack:
aload 5
ldc "0.0"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
pop
59: lload 7
ldc 3
ladd
lstore 7
60: goto 74
61: StackMap locals:
StackMap stack:
new java.lang.AssertionError
dup
new java.lang.StringBuilder
dup
ldc "Unexpected sig value "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
iload 9
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
62: StackMap locals:
StackMap stack:
goto 74
StackMap locals:
StackMap stack:
63: iload 9
iload 6
if_icmplt 71
64: aload 5
aload 3
iload 4
iload 6
invokevirtual java.lang.StringBuilder.append:([CII)Ljava/lang/StringBuilder;
pop
65: iload 9
iload 6
isub
istore 10
start local 10 66: goto 69
67: StackMap locals: int
StackMap stack:
aload 5
bipush 48
invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
pop
68: iinc 10 -1
StackMap locals:
StackMap stack:
69: iload 10
ifgt 67
end local 10 70: goto 74
71: StackMap locals:
StackMap stack:
aload 5
aload 3
iload 4
iload 9
invokevirtual java.lang.StringBuilder.append:([CII)Ljava/lang/StringBuilder;
pop
72: aload 5
bipush 46
invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
pop
73: aload 5
aload 3
iload 4
iload 9
iadd
iload 6
iload 9
isub
invokevirtual java.lang.StringBuilder.append:([CII)Ljava/lang/StringBuilder;
pop
end local 9 74: StackMap locals:
StackMap stack:
lload 7
lconst_0
lcmp
ifeq 79
75: aload 5
bipush 69
invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
pop
76: lload 7
lconst_0
lcmp
ifle 78
77: aload 5
bipush 43
invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
pop
78: StackMap locals:
StackMap stack:
aload 5
lload 7
invokevirtual java.lang.StringBuilder.append:(J)Ljava/lang/StringBuilder;
pop
79: StackMap locals:
StackMap stack:
aload 5
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
areturn
end local 7 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 80 0 this Ljava/math/BigDecimal;
0 80 1 sci Z
8 13 2 lowInt I
9 13 3 highInt I
14 80 2 sbHelper Ljava/math/BigDecimal$StringBuilderHelper;
17 18 3 coeff [C
20 80 3 coeff [C
16 18 4 offset I
19 80 4 offset I
21 80 5 buf Ljava/lang/StringBuilder;
24 80 6 coeffLen I
25 80 7 adjusted J
27 39 9 pad I
47 74 9 sig I
66 70 10 i I
MethodParameters:
Name Flags
sci
private static java.math.BigInteger bigTenToThe(int);
descriptor: (I)Ljava/math/BigInteger;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=2, locals=2, args_size=1
start local 0 0: iload 0
ifge 2
1: getstatic java.math.BigInteger.ZERO:Ljava/math/BigInteger;
areturn
2: StackMap locals:
StackMap stack:
iload 0
getstatic java.math.BigDecimal.BIG_TEN_POWERS_TABLE_MAX:I
if_icmpge 7
3: getstatic java.math.BigDecimal.BIG_TEN_POWERS_TABLE:[Ljava/math/BigInteger;
astore 1
start local 1 4: iload 0
aload 1
arraylength
if_icmpge 6
5: aload 1
iload 0
aaload
areturn
6: StackMap locals: java.math.BigInteger[]
StackMap stack:
iload 0
invokestatic java.math.BigDecimal.expandBigIntegerTenPowers:(I)Ljava/math/BigInteger;
areturn
end local 1 7: StackMap locals:
StackMap stack:
getstatic java.math.BigInteger.TEN:Ljava/math/BigInteger;
iload 0
invokevirtual java.math.BigInteger.pow:(I)Ljava/math/BigInteger;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 n I
4 7 1 pows [Ljava/math/BigInteger;
MethodParameters:
Name Flags
n
private static java.math.BigInteger expandBigIntegerTenPowers(int);
descriptor: (I)Ljava/math/BigInteger;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=5, locals=6, args_size=1
start local 0 0: ldc Ljava/math/BigDecimal;
dup
astore 1
monitorenter
1: getstatic java.math.BigDecimal.BIG_TEN_POWERS_TABLE:[Ljava/math/BigInteger;
astore 2
start local 2 2: aload 2
arraylength
istore 3
start local 3 3: iload 3
iload 0
if_icmpgt 15
4: iload 3
iconst_1
ishl
istore 4
start local 4 5: goto 7
6: StackMap locals: int java.lang.Class java.math.BigInteger[] int int
StackMap stack:
iload 4
iconst_1
ishl
istore 4
7: StackMap locals:
StackMap stack:
iload 4
iload 0
if_icmple 6
8: aload 2
iload 4
invokestatic java.util.Arrays.copyOf:([Ljava/lang/Object;I)[Ljava/lang/Object;
checkcast java.math.BigInteger[]
astore 2
9: iload 3
istore 5
start local 5 10: goto 13
11: StackMap locals: int
StackMap stack:
aload 2
iload 5
aload 2
iload 5
iconst_1
isub
aaload
getstatic java.math.BigInteger.TEN:Ljava/math/BigInteger;
invokevirtual java.math.BigInteger.multiply:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
aastore
12: iinc 5 1
StackMap locals:
StackMap stack:
13: iload 5
iload 4
if_icmplt 11
end local 5 14: aload 2
putstatic java.math.BigDecimal.BIG_TEN_POWERS_TABLE:[Ljava/math/BigInteger;
end local 4 15: StackMap locals:
StackMap stack:
aload 2
iload 0
aaload
aload 1
monitorexit
16: areturn
end local 3 end local 2 17: StackMap locals: int java.lang.Class
StackMap stack: java.lang.Throwable
aload 1
monitorexit
18: athrow
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 19 0 n I
2 17 2 pows [Ljava/math/BigInteger;
3 17 3 curLen I
5 15 4 newLen I
10 14 5 i I
Exception table:
from to target type
1 16 17 any
17 18 17 any
MethodParameters:
Name Flags
n
private static long longMultiplyPowerTen(long, int);
descriptor: (JI)J
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=4, locals=7, args_size=2
start local 0 start local 2 0: lload 0
lconst_0
lcmp
ifeq 1
iload 2
ifgt 2
1: StackMap locals:
StackMap stack:
lload 0
lreturn
2: StackMap locals:
StackMap stack:
getstatic java.math.BigDecimal.LONG_TEN_POWERS_TABLE:[J
astore 3
start local 3 3: getstatic java.math.BigDecimal.THRESHOLDS_TABLE:[J
astore 4
start local 4 4: iload 2
aload 3
arraylength
if_icmpge 10
iload 2
aload 4
arraylength
if_icmpge 10
5: aload 3
iload 2
laload
lstore 5
start local 5 6: lload 0
lconst_1
lcmp
ifne 8
7: lload 5
lreturn
8: StackMap locals: long[] long[] long
StackMap stack:
lload 0
invokestatic java.lang.Math.abs:(J)J
aload 4
iload 2
laload
lcmp
ifgt 10
9: lload 0
lload 5
lmul
lreturn
end local 5 10: StackMap locals:
StackMap stack:
ldc -9223372036854775808
lreturn
end local 4 end local 3 end local 2 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 11 0 val J
0 11 2 n I
3 11 3 tab [J
4 11 4 bounds [J
6 10 5 tenpower J
MethodParameters:
Name Flags
val
n
private java.math.BigInteger bigMultiplyPowerTen(int);
descriptor: (I)Ljava/math/BigInteger;
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=2, args_size=2
start local 0 start local 1 0: iload 1
ifgt 2
1: aload 0
invokevirtual java.math.BigDecimal.inflated:()Ljava/math/BigInteger;
areturn
2: StackMap locals:
StackMap stack:
aload 0
getfield java.math.BigDecimal.intCompact:J
ldc -9223372036854775808
lcmp
ifeq 4
3: iload 1
invokestatic java.math.BigDecimal.bigTenToThe:(I)Ljava/math/BigInteger;
aload 0
getfield java.math.BigDecimal.intCompact:J
invokevirtual java.math.BigInteger.multiply:(J)Ljava/math/BigInteger;
areturn
4: StackMap locals:
StackMap stack:
aload 0
getfield java.math.BigDecimal.intVal:Ljava/math/BigInteger;
iload 1
invokestatic java.math.BigDecimal.bigTenToThe:(I)Ljava/math/BigInteger;
invokevirtual java.math.BigInteger.multiply:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Ljava/math/BigDecimal;
0 5 1 n I
MethodParameters:
Name Flags
n
private java.math.BigInteger inflated();
descriptor: ()Ljava/math/BigInteger;
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
getfield java.math.BigDecimal.intVal:Ljava/math/BigInteger;
ifnonnull 2
1: aload 0
getfield java.math.BigDecimal.intCompact:J
invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
areturn
2: StackMap locals:
StackMap stack:
aload 0
getfield java.math.BigDecimal.intVal:Ljava/math/BigInteger;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Ljava/math/BigDecimal;
private static void matchScale(java.math.BigDecimal[]);
descriptor: ([Ljava/math/BigDecimal;)V
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=5, locals=1, args_size=1
start local 0 0: aload 0
iconst_0
aaload
getfield java.math.BigDecimal.scale:I
aload 0
iconst_1
aaload
getfield java.math.BigDecimal.scale:I
if_icmpge 3
1: aload 0
iconst_0
aload 0
iconst_0
aaload
aload 0
iconst_1
aaload
getfield java.math.BigDecimal.scale:I
bipush 7
invokevirtual java.math.BigDecimal.setScale:(II)Ljava/math/BigDecimal;
aastore
2: goto 5
StackMap locals:
StackMap stack:
3: aload 0
iconst_1
aaload
getfield java.math.BigDecimal.scale:I
aload 0
iconst_0
aaload
getfield java.math.BigDecimal.scale:I
if_icmpge 5
4: aload 0
iconst_1
aload 0
iconst_1
aaload
aload 0
iconst_0
aaload
getfield java.math.BigDecimal.scale:I
bipush 7
invokevirtual java.math.BigDecimal.setScale:(II)Ljava/math/BigDecimal;
aastore
5: StackMap locals:
StackMap stack:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 val [Ljava/math/BigDecimal;
MethodParameters:
Name Flags
val
private void readObject(java.io.ObjectInputStream);
descriptor: (Ljava/io/ObjectInputStream;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=3, args_size=2
start local 0 start local 1 0: aload 1
invokevirtual java.io.ObjectInputStream.defaultReadObject:()V
1: aload 0
getfield java.math.BigDecimal.intVal:Ljava/math/BigInteger;
ifnonnull 4
2: ldc "BigDecimal: null intVal in stream"
astore 2
start local 2 3: new java.io.StreamCorruptedException
dup
aload 2
invokespecial java.io.StreamCorruptedException.<init>:(Ljava/lang/String;)V
athrow
end local 2 4: StackMap locals:
StackMap stack:
aload 0
aload 0
getfield java.math.BigDecimal.intVal:Ljava/math/BigInteger;
invokestatic java.math.BigDecimal.compactValFor:(Ljava/math/BigInteger;)J
invokestatic java.math.BigDecimal$UnsafeHolder.setIntCompact:(Ljava/math/BigDecimal;J)V
5: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Ljava/math/BigDecimal;
0 6 1 s Ljava/io/ObjectInputStream;
3 4 2 message Ljava/lang/String;
Exceptions:
throws java.io.IOException, java.lang.ClassNotFoundException
MethodParameters:
Name Flags
s
private void writeObject(java.io.ObjectOutputStream);
descriptor: (Ljava/io/ObjectOutputStream;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=2, args_size=2
start local 0 start local 1 0: aload 0
getfield java.math.BigDecimal.intVal:Ljava/math/BigInteger;
ifnonnull 2
1: aload 0
aload 0
getfield java.math.BigDecimal.intCompact:J
invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
invokestatic java.math.BigDecimal$UnsafeHolder.setIntValVolatile:(Ljava/math/BigDecimal;Ljava/math/BigInteger;)V
2: StackMap locals:
StackMap stack:
aload 1
invokevirtual java.io.ObjectOutputStream.defaultWriteObject:()V
3: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Ljava/math/BigDecimal;
0 4 1 s Ljava/io/ObjectOutputStream;
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
s
static int longDigitLength(long);
descriptor: (J)I
flags: (0x0008) ACC_STATIC
Code:
stack=4, locals=4, args_size=1
start local 0 0: getstatic java.math.BigDecimal.$assertionsDisabled:Z
ifne 1
lload 0
ldc -9223372036854775808
lcmp
ifne 1
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
1: StackMap locals:
StackMap stack:
lload 0
lconst_0
lcmp
ifge 3
2: lload 0
lneg
lstore 0
3: StackMap locals:
StackMap stack:
lload 0
ldc 10
lcmp
ifge 5
4: iconst_1
ireturn
5: StackMap locals:
StackMap stack:
bipush 64
lload 0
invokestatic java.lang.Long.numberOfLeadingZeros:(J)I
isub
iconst_1
iadd
sipush 1233
imul
bipush 12
iushr
istore 2
start local 2 6: getstatic java.math.BigDecimal.LONG_TEN_POWERS_TABLE:[J
astore 3
start local 3 7: iload 2
aload 3
arraylength
if_icmpge 8
lload 0
aload 3
iload 2
laload
lcmp
ifge 9
StackMap locals: int long[]
StackMap stack:
8: iload 2
goto 10
StackMap locals:
StackMap stack:
9: iload 2
iconst_1
iadd
StackMap locals:
StackMap stack: int
10: ireturn
end local 3 end local 2 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 11 0 x J
6 11 2 r I
7 11 3 tab [J
MethodParameters:
Name Flags
x
private static int bigDigitLength(java.math.BigInteger);
descriptor: (Ljava/math/BigInteger;)I
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=4, locals=2, args_size=1
start local 0 0: aload 0
getfield java.math.BigInteger.signum:I
ifne 2
1: iconst_1
ireturn
2: StackMap locals:
StackMap stack:
aload 0
invokevirtual java.math.BigInteger.bitLength:()I
i2l
lconst_1
ladd
ldc 646456993
lmul
bipush 31
lushr
l2i
istore 1
start local 1 3: aload 0
iload 1
invokestatic java.math.BigDecimal.bigTenToThe:(I)Ljava/math/BigInteger;
invokevirtual java.math.BigInteger.compareMagnitude:(Ljava/math/BigInteger;)I
ifge 4
iload 1
goto 5
StackMap locals: int
StackMap stack:
4: iload 1
iconst_1
iadd
StackMap locals:
StackMap stack: int
5: ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 b Ljava/math/BigInteger;
3 6 1 r I
MethodParameters:
Name Flags
b
private int checkScale(long);
descriptor: (J)I
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=5, args_size=2
start local 0 start local 1 0: lload 1
l2i
istore 3
start local 3 1: iload 3
i2l
lload 1
lcmp
ifeq 11
2: lload 1
ldc 2147483647
lcmp
ifle 3
ldc 2147483647
goto 4
StackMap locals: int
StackMap stack:
3: ldc -2147483648
StackMap locals:
StackMap stack: int
4: istore 3
5: aload 0
getfield java.math.BigDecimal.intCompact:J
lconst_0
lcmp
ifeq 11
6: aload 0
getfield java.math.BigDecimal.intVal:Ljava/math/BigInteger;
dup
astore 4
start local 4 7: ifnull 8
aload 4
invokevirtual java.math.BigInteger.signum:()I
ifeq 11
8: StackMap locals: java.math.BigInteger
StackMap stack:
new java.lang.ArithmeticException
dup
iload 3
ifle 9
ldc "Underflow"
goto 10
StackMap locals: java.math.BigDecimal long int java.math.BigInteger
StackMap stack: new 8 new 8
9: ldc "Overflow"
StackMap locals: java.math.BigDecimal long int java.math.BigInteger
StackMap stack: new 8 new 8 java.lang.String
10: invokespecial java.lang.ArithmeticException.<init>:(Ljava/lang/String;)V
athrow
end local 4 11: StackMap locals:
StackMap stack:
iload 3
ireturn
end local 3 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 12 0 this Ljava/math/BigDecimal;
0 12 1 val J
1 12 3 asInt I
7 11 4 b Ljava/math/BigInteger;
MethodParameters:
Name Flags
val
private static long compactValFor(java.math.BigInteger);
descriptor: (Ljava/math/BigInteger;)J
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=5, locals=6, args_size=1
start local 0 0: aload 0
getfield java.math.BigInteger.mag:[I
astore 1
start local 1 1: aload 1
arraylength
istore 2
start local 2 2: iload 2
ifne 4
3: lconst_0
lreturn
4: StackMap locals: int[] int
StackMap stack:
aload 1
iconst_0
iaload
istore 3
start local 3 5: iload 2
iconst_2
if_icmpgt 6
iload 2
iconst_2
if_icmpne 7
iload 3
ifge 7
6: StackMap locals: int
StackMap stack:
ldc -9223372036854775808
lreturn
7: StackMap locals:
StackMap stack:
iload 2
iconst_2
if_icmpne 9
8: aload 1
iconst_1
iaload
i2l
ldc 4294967295
land
iload 3
i2l
bipush 32
lshl
ladd
goto 10
9: StackMap locals:
StackMap stack:
iload 3
i2l
ldc 4294967295
land
10: StackMap locals:
StackMap stack: long
lstore 4
start local 4 11: aload 0
getfield java.math.BigInteger.signum:I
ifge 12
lload 4
lneg
goto 13
StackMap locals: long
StackMap stack:
12: lload 4
StackMap locals:
StackMap stack: long
13: lreturn
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 14 0 b Ljava/math/BigInteger;
1 14 1 m [I
2 14 2 len I
5 14 3 d I
11 14 4 u J
MethodParameters:
Name Flags
b
private static int longCompareMagnitude(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
lconst_0
lcmp
ifge 2
1: lload 0
lneg
lstore 0
2: StackMap locals:
StackMap stack:
lload 2
lconst_0
lcmp
ifge 4
3: lload 2
lneg
lstore 2
4: StackMap locals:
StackMap stack:
lload 0
lload 2
lcmp
ifge 5
iconst_m1
goto 7
StackMap locals:
StackMap stack:
5: lload 0
lload 2
lcmp
ifne 6
iconst_0
goto 7
StackMap locals:
StackMap stack:
6: iconst_1
StackMap locals:
StackMap stack: int
7: ireturn
end local 2 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 x J
0 8 2 y J
MethodParameters:
Name Flags
x
y
private static int saturateLong(long);
descriptor: (J)I
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=4, locals=3, args_size=1
start local 0 0: lload 0
l2i
istore 2
start local 2 1: lload 0
iload 2
i2l
lcmp
ifne 2
iload 2
goto 4
StackMap locals: int
StackMap stack:
2: lload 0
lconst_0
lcmp
ifge 3
ldc -2147483648
goto 4
StackMap locals:
StackMap stack:
3: ldc 2147483647
StackMap locals:
StackMap stack: int
4: ireturn
end local 2 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 s J
1 5 2 i I
MethodParameters:
Name Flags
s
private static void print(java.lang.String, java.math.BigDecimal);
descriptor: (Ljava/lang/String;Ljava/math/BigDecimal;)V
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=7, locals=2, args_size=2
start local 0 start local 1 0: getstatic java.lang.System.err:Ljava/io/PrintStream;
ldc "%s:\tintCompact %d\tintVal %d\tscale %d\tprecision %d%n"
iconst_5
anewarray java.lang.Object
dup
iconst_0
1: aload 0
aastore
dup
iconst_1
2: aload 1
getfield java.math.BigDecimal.intCompact:J
invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
aastore
dup
iconst_2
3: aload 1
getfield java.math.BigDecimal.intVal:Ljava/math/BigInteger;
aastore
dup
iconst_3
4: aload 1
getfield java.math.BigDecimal.scale:I
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
aastore
dup
iconst_4
5: aload 1
getfield java.math.BigDecimal.precision:I
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
aastore
6: invokevirtual java.io.PrintStream.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintStream;
pop
7: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 name Ljava/lang/String;
0 8 1 bd Ljava/math/BigDecimal;
MethodParameters:
Name Flags
name
bd
private java.math.BigDecimal audit();
descriptor: ()Ljava/math/BigDecimal;
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=3, args_size=1
start local 0 0: aload 0
getfield java.math.BigDecimal.intCompact:J
ldc -9223372036854775808
lcmp
ifne 7
1: aload 0
getfield java.math.BigDecimal.intVal:Ljava/math/BigInteger;
ifnonnull 4
2: ldc "audit"
aload 0
invokestatic java.math.BigDecimal.print:(Ljava/lang/String;Ljava/math/BigDecimal;)V
3: new java.lang.AssertionError
dup
ldc "null intVal"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
4: StackMap locals:
StackMap stack:
aload 0
getfield java.math.BigDecimal.precision:I
ifle 17
aload 0
getfield java.math.BigDecimal.precision:I
aload 0
getfield java.math.BigDecimal.intVal:Ljava/math/BigInteger;
invokestatic java.math.BigDecimal.bigDigitLength:(Ljava/math/BigInteger;)I
if_icmpeq 17
5: ldc "audit"
aload 0
invokestatic java.math.BigDecimal.print:(Ljava/lang/String;Ljava/math/BigDecimal;)V
6: new java.lang.AssertionError
dup
ldc "precision mismatch"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
7: StackMap locals:
StackMap stack:
aload 0
getfield java.math.BigDecimal.intVal:Ljava/math/BigInteger;
ifnull 14
8: aload 0
getfield java.math.BigDecimal.intVal:Ljava/math/BigInteger;
invokevirtual java.math.BigInteger.longValue:()J
lstore 1
start local 1 9: lload 1
aload 0
getfield java.math.BigDecimal.intCompact:J
lcmp
ifeq 14
10: ldc "audit"
aload 0
invokestatic java.math.BigDecimal.print:(Ljava/lang/String;Ljava/math/BigDecimal;)V
11: new java.lang.AssertionError
dup
new java.lang.StringBuilder
dup
ldc "Inconsistent state, intCompact="
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
12: aload 0
getfield java.math.BigDecimal.intCompact:J
invokevirtual java.lang.StringBuilder.append:(J)Ljava/lang/StringBuilder;
ldc "\t intVal="
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
lload 1
invokevirtual java.lang.StringBuilder.append:(J)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
13: invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
end local 1 14: StackMap locals:
StackMap stack:
aload 0
getfield java.math.BigDecimal.precision:I
ifle 17
aload 0
getfield java.math.BigDecimal.precision:I
aload 0
getfield java.math.BigDecimal.intCompact:J
invokestatic java.math.BigDecimal.longDigitLength:(J)I
if_icmpeq 17
15: ldc "audit"
aload 0
invokestatic java.math.BigDecimal.print:(Ljava/lang/String;Ljava/math/BigDecimal;)V
16: new java.lang.AssertionError
dup
ldc "precision mismatch"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
17: StackMap locals:
StackMap stack:
aload 0
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 18 0 this Ljava/math/BigDecimal;
9 14 1 val J
private static int checkScaleNonZero(long);
descriptor: (J)I
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=4, locals=3, args_size=1
start local 0 0: lload 0
l2i
istore 2
start local 2 1: iload 2
i2l
lload 0
lcmp
ifeq 5
2: new java.lang.ArithmeticException
dup
iload 2
ifle 3
ldc "Underflow"
goto 4
StackMap locals: long int
StackMap stack: new 2 new 2
3: ldc "Overflow"
StackMap locals: long int
StackMap stack: new 2 new 2 java.lang.String
4: invokespecial java.lang.ArithmeticException.<init>:(Ljava/lang/String;)V
athrow
5: StackMap locals:
StackMap stack:
iload 2
ireturn
end local 2 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 val J
1 6 2 asInt I
MethodParameters:
Name Flags
val
private static int checkScale(long, long);
descriptor: (JJ)I
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=4, locals=5, args_size=2
start local 0 start local 2 0: lload 2
l2i
istore 4
start local 4 1: iload 4
i2l
lload 2
lcmp
ifeq 9
2: lload 2
ldc 2147483647
lcmp
ifle 3
ldc 2147483647
goto 4
StackMap locals: int
StackMap stack:
3: ldc -2147483648
StackMap locals:
StackMap stack: int
4: istore 4
5: lload 0
lconst_0
lcmp
ifeq 9
6: new java.lang.ArithmeticException
dup
iload 4
ifle 7
ldc "Underflow"
goto 8
StackMap locals: long long int
StackMap stack: new 6 new 6
7: ldc "Overflow"
StackMap locals: long long int
StackMap stack: new 6 new 6 java.lang.String
8: invokespecial java.lang.ArithmeticException.<init>:(Ljava/lang/String;)V
athrow
9: StackMap locals:
StackMap stack:
iload 4
ireturn
end local 4 end local 2 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 10 0 intCompact J
0 10 2 val J
1 10 4 asInt I
MethodParameters:
Name Flags
intCompact
val
private static int checkScale(java.math.BigInteger, long);
descriptor: (Ljava/math/BigInteger;J)I
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=4, locals=4, args_size=2
start local 0 start local 1 0: lload 1
l2i
istore 3
start local 3 1: iload 3
i2l
lload 1
lcmp
ifeq 9
2: lload 1
ldc 2147483647
lcmp
ifle 3
ldc 2147483647
goto 4
StackMap locals: int
StackMap stack:
3: ldc -2147483648
StackMap locals:
StackMap stack: int
4: istore 3
5: aload 0
invokevirtual java.math.BigInteger.signum:()I
ifeq 9
6: new java.lang.ArithmeticException
dup
iload 3
ifle 7
ldc "Underflow"
goto 8
StackMap locals: java.math.BigInteger long int
StackMap stack: new 6 new 6
7: ldc "Overflow"
StackMap locals: java.math.BigInteger long int
StackMap stack: new 6 new 6 java.lang.String
8: invokespecial java.lang.ArithmeticException.<init>:(Ljava/lang/String;)V
athrow
9: StackMap locals:
StackMap stack:
iload 3
ireturn
end local 3 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 10 0 intVal Ljava/math/BigInteger;
0 10 1 val J
1 10 3 asInt I
MethodParameters:
Name Flags
intVal
val
private static java.math.BigDecimal doRound(java.math.BigDecimal, java.math.MathContext);
descriptor: (Ljava/math/BigDecimal;Ljava/math/MathContext;)Ljava/math/BigDecimal;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=7, locals=11, args_size=2
start local 0 start local 1 0: aload 1
getfield java.math.MathContext.precision:I
istore 2
start local 2 1: iconst_0
istore 3
start local 3 2: iload 2
ifle 34
3: aload 0
getfield java.math.BigDecimal.intVal:Ljava/math/BigInteger;
astore 4
start local 4 4: aload 0
getfield java.math.BigDecimal.intCompact:J
lstore 5
start local 5 5: aload 0
getfield java.math.BigDecimal.scale:I
istore 7
start local 7 6: aload 0
invokevirtual java.math.BigDecimal.precision:()I
istore 8
start local 8 7: aload 1
getfield java.math.MathContext.roundingMode:Ljava/math/RoundingMode;
getfield java.math.RoundingMode.oldMode:I
istore 9
start local 9 8: lload 5
ldc -9223372036854775808
lcmp
ifne 21
9: iload 8
iload 2
isub
istore 10
start local 10 10: goto 20
11: StackMap locals: java.math.BigDecimal java.math.MathContext int int java.math.BigInteger long int int int int
StackMap stack:
iload 7
i2l
iload 10
i2l
lsub
invokestatic java.math.BigDecimal.checkScaleNonZero:(J)I
istore 7
12: aload 4
iload 10
iload 9
invokestatic java.math.BigDecimal.divideAndRoundByTenPow:(Ljava/math/BigInteger;II)Ljava/math/BigInteger;
astore 4
13: iconst_1
istore 3
14: aload 4
invokestatic java.math.BigDecimal.compactValFor:(Ljava/math/BigInteger;)J
lstore 5
15: lload 5
ldc -9223372036854775808
lcmp
ifeq 18
16: lload 5
invokestatic java.math.BigDecimal.longDigitLength:(J)I
istore 8
17: goto 21
18: StackMap locals:
StackMap stack:
aload 4
invokestatic java.math.BigDecimal.bigDigitLength:(Ljava/math/BigInteger;)I
istore 8
19: iload 8
iload 2
isub
istore 10
20: StackMap locals:
StackMap stack:
iload 10
ifgt 11
end local 10 21: StackMap locals:
StackMap stack:
lload 5
ldc -9223372036854775808
lcmp
ifeq 31
22: iload 8
iload 2
isub
istore 10
start local 10 23: goto 30
24: StackMap locals: int
StackMap stack:
iload 7
i2l
iload 10
i2l
lsub
invokestatic java.math.BigDecimal.checkScaleNonZero:(J)I
istore 7
25: lload 5
getstatic java.math.BigDecimal.LONG_TEN_POWERS_TABLE:[J
iload 10
laload
aload 1
getfield java.math.MathContext.roundingMode:Ljava/math/RoundingMode;
getfield java.math.RoundingMode.oldMode:I
invokestatic java.math.BigDecimal.divideAndRound:(JJI)J
lstore 5
26: iconst_1
istore 3
27: lload 5
invokestatic java.math.BigDecimal.longDigitLength:(J)I
istore 8
28: iload 8
iload 2
isub
istore 10
29: aconst_null
astore 4
30: StackMap locals:
StackMap stack:
iload 10
ifgt 24
end local 10 31: StackMap locals:
StackMap stack:
iload 3
ifeq 32
new java.math.BigDecimal
dup
aload 4
lload 5
iload 7
iload 8
invokespecial java.math.BigDecimal.<init>:(Ljava/math/BigInteger;JII)V
goto 33
StackMap locals:
StackMap stack:
32: aload 0
StackMap locals:
StackMap stack: java.math.BigDecimal
33: areturn
end local 9 end local 8 end local 7 end local 5 end local 4 34: StackMap locals: java.math.BigDecimal java.math.MathContext int int
StackMap stack:
aload 0
areturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 35 0 val Ljava/math/BigDecimal;
0 35 1 mc Ljava/math/MathContext;
1 35 2 mcp I
2 35 3 wasDivided Z
4 34 4 intVal Ljava/math/BigInteger;
5 34 5 compactVal J
6 34 7 scale I
7 34 8 prec I
8 34 9 mode I
10 21 10 drop I
23 31 10 drop I
MethodParameters:
Name Flags
val
mc
private static java.math.BigDecimal doRound(long, int, java.math.MathContext);
descriptor: (JILjava/math/MathContext;)Ljava/math/BigDecimal;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=5, locals=7, args_size=3
start local 0 start local 2 start local 3 0: aload 3
getfield java.math.MathContext.precision:I
istore 4
start local 4 1: iload 4
ifle 11
iload 4
bipush 19
if_icmpge 11
2: lload 0
invokestatic java.math.BigDecimal.longDigitLength:(J)I
istore 5
start local 5 3: iload 5
iload 4
isub
istore 6
start local 6 4: goto 9
5: StackMap locals: int int int
StackMap stack:
iload 2
i2l
iload 6
i2l
lsub
invokestatic java.math.BigDecimal.checkScaleNonZero:(J)I
istore 2
6: lload 0
getstatic java.math.BigDecimal.LONG_TEN_POWERS_TABLE:[J
iload 6
laload
aload 3
getfield java.math.MathContext.roundingMode:Ljava/math/RoundingMode;
getfield java.math.RoundingMode.oldMode:I
invokestatic java.math.BigDecimal.divideAndRound:(JJI)J
lstore 0
7: lload 0
invokestatic java.math.BigDecimal.longDigitLength:(J)I
istore 5
8: iload 5
iload 4
isub
istore 6
9: StackMap locals:
StackMap stack:
iload 6
ifgt 5
10: lload 0
iload 2
iload 5
invokestatic java.math.BigDecimal.valueOf:(JII)Ljava/math/BigDecimal;
areturn
end local 6 end local 5 11: StackMap locals:
StackMap stack:
lload 0
iload 2
invokestatic java.math.BigDecimal.valueOf:(JI)Ljava/math/BigDecimal;
areturn
end local 4 end local 3 end local 2 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 12 0 compactVal J
0 12 2 scale I
0 12 3 mc Ljava/math/MathContext;
1 12 4 mcp I
3 11 5 prec I
4 11 6 drop I
MethodParameters:
Name Flags
compactVal
scale
mc
private static java.math.BigDecimal doRound(java.math.BigInteger, int, java.math.MathContext);
descriptor: (Ljava/math/BigInteger;ILjava/math/MathContext;)Ljava/math/BigDecimal;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=7, locals=9, args_size=3
start local 0 start local 1 start local 2 0: aload 2
getfield java.math.MathContext.precision:I
istore 3
start local 3 1: iconst_0
istore 4
start local 4 2: iload 3
ifle 27
3: aload 0
invokestatic java.math.BigDecimal.compactValFor:(Ljava/math/BigInteger;)J
lstore 5
start local 5 4: aload 2
getfield java.math.MathContext.roundingMode:Ljava/math/RoundingMode;
getfield java.math.RoundingMode.oldMode:I
istore 7
start local 7 5: lload 5
ldc -9223372036854775808
lcmp
ifne 17
6: aload 0
invokestatic java.math.BigDecimal.bigDigitLength:(Ljava/math/BigInteger;)I
istore 4
7: iload 4
iload 3
isub
istore 8
start local 8 8: goto 16
9: StackMap locals: java.math.BigInteger int java.math.MathContext int int long int int
StackMap stack:
iload 1
i2l
iload 8
i2l
lsub
invokestatic java.math.BigDecimal.checkScaleNonZero:(J)I
istore 1
10: aload 0
iload 8
iload 7
invokestatic java.math.BigDecimal.divideAndRoundByTenPow:(Ljava/math/BigInteger;II)Ljava/math/BigInteger;
astore 0
11: aload 0
invokestatic java.math.BigDecimal.compactValFor:(Ljava/math/BigInteger;)J
lstore 5
12: lload 5
ldc -9223372036854775808
lcmp
ifeq 14
13: goto 17
14: StackMap locals:
StackMap stack:
aload 0
invokestatic java.math.BigDecimal.bigDigitLength:(Ljava/math/BigInteger;)I
istore 4
15: iload 4
iload 3
isub
istore 8
16: StackMap locals:
StackMap stack:
iload 8
ifgt 9
end local 8 17: StackMap locals:
StackMap stack:
lload 5
ldc -9223372036854775808
lcmp
ifeq 27
18: lload 5
invokestatic java.math.BigDecimal.longDigitLength:(J)I
istore 4
19: iload 4
iload 3
isub
istore 8
start local 8 20: goto 25
21: StackMap locals: int
StackMap stack:
iload 1
i2l
iload 8
i2l
lsub
invokestatic java.math.BigDecimal.checkScaleNonZero:(J)I
istore 1
22: lload 5
getstatic java.math.BigDecimal.LONG_TEN_POWERS_TABLE:[J
iload 8
laload
aload 2
getfield java.math.MathContext.roundingMode:Ljava/math/RoundingMode;
getfield java.math.RoundingMode.oldMode:I
invokestatic java.math.BigDecimal.divideAndRound:(JJI)J
lstore 5
23: lload 5
invokestatic java.math.BigDecimal.longDigitLength:(J)I
istore 4
24: iload 4
iload 3
isub
istore 8
25: StackMap locals:
StackMap stack:
iload 8
ifgt 21
26: lload 5
iload 1
iload 4
invokestatic java.math.BigDecimal.valueOf:(JII)Ljava/math/BigDecimal;
areturn
end local 8 end local 7 end local 5 27: StackMap locals:
StackMap stack:
new java.math.BigDecimal
dup
aload 0
ldc -9223372036854775808
iload 1
iload 4
invokespecial java.math.BigDecimal.<init>:(Ljava/math/BigInteger;JII)V
areturn
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 28 0 intVal Ljava/math/BigInteger;
0 28 1 scale I
0 28 2 mc Ljava/math/MathContext;
1 28 3 mcp I
2 28 4 prec I
4 27 5 compactVal J
5 27 7 mode I
8 17 8 drop I
20 27 8 drop I
MethodParameters:
Name Flags
intVal
scale
mc
private static java.math.BigInteger divideAndRoundByTenPow(java.math.BigInteger, int, int);
descriptor: (Ljava/math/BigInteger;II)Ljava/math/BigInteger;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=4, locals=3, args_size=3
start local 0 start local 1 start local 2 0: iload 1
getstatic java.math.BigDecimal.LONG_TEN_POWERS_TABLE:[J
arraylength
if_icmpge 2
1: aload 0
getstatic java.math.BigDecimal.LONG_TEN_POWERS_TABLE:[J
iload 1
laload
iload 2
invokestatic java.math.BigDecimal.divideAndRound:(Ljava/math/BigInteger;JI)Ljava/math/BigInteger;
astore 0
goto 3
2: StackMap locals:
StackMap stack:
aload 0
iload 1
invokestatic java.math.BigDecimal.bigTenToThe:(I)Ljava/math/BigInteger;
iload 2
invokestatic java.math.BigDecimal.divideAndRound:(Ljava/math/BigInteger;Ljava/math/BigInteger;I)Ljava/math/BigInteger;
astore 0
3: StackMap locals:
StackMap stack:
aload 0
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 intVal Ljava/math/BigInteger;
0 4 1 tenPow I
0 4 2 roundingMode I
MethodParameters:
Name Flags
intVal
tenPow
roundingMode
private static java.math.BigDecimal divideAndRound(long, long, int, int, int);
descriptor: (JJIII)Ljava/math/BigDecimal;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=8, locals=13, args_size=5
start local 0 start local 2 start local 4 start local 5 start local 6 0: lload 0
lload 2
ldiv
lstore 8
start local 8 1: iload 5
iconst_1
if_icmpne 3
iload 4
iload 6
if_icmpne 3
2: lload 8
iload 4
invokestatic java.math.BigDecimal.valueOf:(JI)Ljava/math/BigDecimal;
areturn
3: StackMap locals: long long int int int top long
StackMap stack:
lload 0
lload 2
lrem
lstore 10
start local 10 4: lload 0
lconst_0
lcmp
ifge 5
iconst_1
goto 6
StackMap locals: long
StackMap stack:
5: iconst_0
StackMap locals:
StackMap stack: int
6: lload 2
lconst_0
lcmp
ifge 7
iconst_1
goto 8
StackMap locals:
StackMap stack: int
7: iconst_0
StackMap locals: long long int int int top long long
StackMap stack: int int
8: if_icmpne 9
iconst_1
goto 10
StackMap locals:
StackMap stack:
9: iconst_m1
StackMap locals:
StackMap stack: int
10: istore 7
start local 7 11: lload 10
lconst_0
lcmp
ifeq 16
12: lload 2
iload 5
iload 7
lload 8
lload 10
invokestatic java.math.BigDecimal.needIncrement:(JIIJJ)Z
istore 12
start local 12 13: iload 12
ifeq 14
lload 8
iload 7
i2l
ladd
goto 15
StackMap locals: long long int int int int long long int
StackMap stack:
14: lload 8
StackMap locals:
StackMap stack: long
15: iload 4
invokestatic java.math.BigDecimal.valueOf:(JI)Ljava/math/BigDecimal;
areturn
end local 12 16: StackMap locals:
StackMap stack:
iload 6
iload 4
if_icmpeq 18
17: lload 8
iload 4
iload 6
i2l
invokestatic java.math.BigDecimal.createAndStripZerosToMatchScale:(JIJ)Ljava/math/BigDecimal;
areturn
18: StackMap locals:
StackMap stack:
lload 8
iload 4
invokestatic java.math.BigDecimal.valueOf:(JI)Ljava/math/BigDecimal;
areturn
end local 10 end local 8 end local 7 end local 6 end local 5 end local 4 end local 2 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 19 0 ldividend J
0 19 2 ldivisor J
0 19 4 scale I
0 19 5 roundingMode I
0 19 6 preferredScale I
11 19 7 qsign I
1 19 8 q J
4 19 10 r J
13 16 12 increment Z
MethodParameters:
Name Flags
ldividend
ldivisor
scale
roundingMode
preferredScale
private static long divideAndRound(long, long, int);
descriptor: (JJI)J
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=8, locals=11, args_size=3
start local 0 start local 2 start local 4 0: lload 0
lload 2
ldiv
lstore 6
start local 6 1: iload 4
iconst_1
if_icmpne 3
2: lload 6
lreturn
3: StackMap locals: long long int top long
StackMap stack:
lload 0
lload 2
lrem
lstore 8
start local 8 4: lload 0
lconst_0
lcmp
ifge 5
iconst_1
goto 6
StackMap locals: long
StackMap stack:
5: iconst_0
StackMap locals:
StackMap stack: int
6: lload 2
lconst_0
lcmp
ifge 7
iconst_1
goto 8
StackMap locals:
StackMap stack: int
7: iconst_0
StackMap locals: long long int top long long
StackMap stack: int int
8: if_icmpne 9
iconst_1
goto 10
StackMap locals:
StackMap stack:
9: iconst_m1
StackMap locals:
StackMap stack: int
10: istore 5
start local 5 11: lload 8
lconst_0
lcmp
ifeq 16
12: lload 2
iload 4
iload 5
lload 6
lload 8
invokestatic java.math.BigDecimal.needIncrement:(JIIJJ)Z
istore 10
start local 10 13: iload 10
ifeq 14
lload 6
iload 5
i2l
ladd
goto 15
StackMap locals: long long int int long long int
StackMap stack:
14: lload 6
StackMap locals:
StackMap stack: long
15: lreturn
end local 10 16: StackMap locals:
StackMap stack:
lload 6
lreturn
end local 8 end local 6 end local 5 end local 4 end local 2 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 17 0 ldividend J
0 17 2 ldivisor J
0 17 4 roundingMode I
11 17 5 qsign I
1 17 6 q J
4 17 8 r J
13 16 10 increment Z
MethodParameters:
Name Flags
ldividend
ldivisor
roundingMode
private static boolean commonNeedIncrement(int, int, int, boolean);
descriptor: (IIIZ)Z
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=5, locals=4, args_size=4
start local 0 start local 1 start local 2 start local 3 0: iload 0
tableswitch { // 0 - 7
0: 2
1: 3
2: 4
3: 6
4: 8
5: 8
6: 8
7: 1
default: 8
}
1: StackMap locals:
StackMap stack:
new java.lang.ArithmeticException
dup
ldc "Rounding necessary"
invokespecial java.lang.ArithmeticException.<init>:(Ljava/lang/String;)V
athrow
2: StackMap locals:
StackMap stack:
iconst_1
ireturn
3: StackMap locals:
StackMap stack:
iconst_0
ireturn
4: StackMap locals:
StackMap stack:
iload 1
ifle 5
iconst_1
ireturn
StackMap locals:
StackMap stack:
5: iconst_0
ireturn
6: StackMap locals:
StackMap stack:
iload 1
ifge 7
iconst_1
ireturn
StackMap locals:
StackMap stack:
7: iconst_0
ireturn
8: StackMap locals:
StackMap stack:
getstatic java.math.BigDecimal.$assertionsDisabled:Z
ifne 11
iload 0
iconst_4
if_icmplt 10
9: iload 0
bipush 6
if_icmple 11
StackMap locals:
StackMap stack:
10: new java.lang.AssertionError
dup
new java.lang.StringBuilder
dup
ldc "Unexpected rounding mode"
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
iload 0
invokestatic java.math.RoundingMode.valueOf:(I)Ljava/math/RoundingMode;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
11: StackMap locals:
StackMap stack:
iload 2
ifge 13
12: iconst_0
ireturn
13: StackMap locals:
StackMap stack:
iload 2
ifle 15
14: iconst_1
ireturn
15: StackMap locals:
StackMap stack:
getstatic java.math.BigDecimal.$assertionsDisabled:Z
ifne 16
iload 2
ifeq 16
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
16: StackMap locals:
StackMap stack:
iload 0
tableswitch { // 4 - 6
4: 18
5: 17
6: 19
default: 20
}
17: StackMap locals:
StackMap stack:
iconst_0
ireturn
18: StackMap locals:
StackMap stack:
iconst_1
ireturn
19: StackMap locals:
StackMap stack:
iload 3
ireturn
20: StackMap locals:
StackMap stack:
new java.lang.AssertionError
dup
new java.lang.StringBuilder
dup
ldc "Unexpected rounding mode"
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
iload 0
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 21 0 roundingMode I
0 21 1 qsign I
0 21 2 cmpFracHalf I
0 21 3 oddQuot Z
MethodParameters:
Name Flags
roundingMode
qsign
cmpFracHalf
oddQuot
private static boolean needIncrement(long, int, int, long, long);
descriptor: (JIIJJ)Z
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=7, locals=9, args_size=5
start local 0 start local 2 start local 3 start local 4 start local 6 0: getstatic java.math.BigDecimal.$assertionsDisabled:Z
ifne 1
lload 6
lconst_0
lcmp
ifne 1
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
1: StackMap locals:
StackMap stack:
lload 6
ldc -4611686018427387904
lcmp
ifle 2
lload 6
ldc 4611686018427387903
lcmp
ifle 4
2: StackMap locals:
StackMap stack:
iconst_1
istore 8
start local 8 3: goto 5
end local 8 4: StackMap locals:
StackMap stack:
ldc 2
lload 6
lmul
lload 0
invokestatic java.math.BigDecimal.longCompareMagnitude:(JJ)I
istore 8
start local 8 5: StackMap locals: int
StackMap stack:
iload 2
iload 3
iload 8
lload 4
lconst_1
land
lconst_0
lcmp
ifeq 6
iconst_1
goto 7
StackMap locals: long int int long long int
StackMap stack: int int int
6: iconst_0
StackMap locals: long int int long long int
StackMap stack: int int int int
7: invokestatic java.math.BigDecimal.commonNeedIncrement:(IIIZ)Z
ireturn
end local 8 end local 6 end local 4 end local 3 end local 2 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 ldivisor J
0 8 2 roundingMode I
0 8 3 qsign I
0 8 4 q J
0 8 6 r J
3 4 8 cmpFracHalf I
5 8 8 cmpFracHalf I
MethodParameters:
Name Flags
ldivisor
roundingMode
qsign
q
r
private static java.math.BigInteger divideAndRound(java.math.BigInteger, long, int);
descriptor: (Ljava/math/BigInteger;JI)Ljava/math/BigInteger;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=7, locals=10, args_size=3
start local 0 start local 1 start local 3 0: new java.math.MutableBigInteger
dup
aload 0
getfield java.math.BigInteger.mag:[I
invokespecial java.math.MutableBigInteger.<init>:([I)V
astore 4
start local 4 1: new java.math.MutableBigInteger
dup
invokespecial java.math.MutableBigInteger.<init>:()V
astore 5
start local 5 2: aload 4
lload 1
aload 5
invokevirtual java.math.MutableBigInteger.divide:(JLjava/math/MutableBigInteger;)J
lstore 6
start local 6 3: lload 6
lconst_0
lcmp
ifne 4
iconst_1
goto 5
StackMap locals: java.math.MutableBigInteger java.math.MutableBigInteger long
StackMap stack:
4: iconst_0
StackMap locals:
StackMap stack: int
5: istore 8
start local 8 6: lload 1
lconst_0
lcmp
ifge 7
aload 0
getfield java.math.BigInteger.signum:I
ineg
goto 8
StackMap locals: int
StackMap stack:
7: aload 0
getfield java.math.BigInteger.signum:I
StackMap locals:
StackMap stack: int
8: istore 9
start local 9 9: iload 8
ifne 12
10: lload 1
iload 3
iload 9
aload 5
lload 6
invokestatic java.math.BigDecimal.needIncrement:(JIILjava/math/MutableBigInteger;J)Z
ifeq 12
11: aload 5
getstatic java.math.MutableBigInteger.ONE:Ljava/math/MutableBigInteger;
invokevirtual java.math.MutableBigInteger.add:(Ljava/math/MutableBigInteger;)V
12: StackMap locals: int
StackMap stack:
aload 5
iload 9
invokevirtual java.math.MutableBigInteger.toBigInteger:(I)Ljava/math/BigInteger;
areturn
end local 9 end local 8 end local 6 end local 5 end local 4 end local 3 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 13 0 bdividend Ljava/math/BigInteger;
0 13 1 ldivisor J
0 13 3 roundingMode I
1 13 4 mdividend Ljava/math/MutableBigInteger;
2 13 5 mq Ljava/math/MutableBigInteger;
3 13 6 r J
6 13 8 isRemainderZero Z
9 13 9 qsign I
MethodParameters:
Name Flags
bdividend
ldivisor
roundingMode
private static java.math.BigDecimal divideAndRound(java.math.BigInteger, long, int, int, int);
descriptor: (Ljava/math/BigInteger;JIII)Ljava/math/BigDecimal;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=7, locals=15, args_size=5
start local 0 start local 1 start local 3 start local 4 start local 5 0: new java.math.MutableBigInteger
dup
aload 0
getfield java.math.BigInteger.mag:[I
invokespecial java.math.MutableBigInteger.<init>:([I)V
astore 6
start local 6 1: new java.math.MutableBigInteger
dup
invokespecial java.math.MutableBigInteger.<init>:()V
astore 7
start local 7 2: aload 6
lload 1
aload 7
invokevirtual java.math.MutableBigInteger.divide:(JLjava/math/MutableBigInteger;)J
lstore 8
start local 8 3: lload 8
lconst_0
lcmp
ifne 4
iconst_1
goto 5
StackMap locals: java.math.MutableBigInteger java.math.MutableBigInteger long
StackMap stack:
4: iconst_0
StackMap locals:
StackMap stack: int
5: istore 10
start local 10 6: lload 1
lconst_0
lcmp
ifge 7
aload 0
getfield java.math.BigInteger.signum:I
ineg
goto 8
StackMap locals: int
StackMap stack:
7: aload 0
getfield java.math.BigInteger.signum:I
StackMap locals:
StackMap stack: int
8: istore 11
start local 11 9: iload 10
ifne 13
10: lload 1
iload 4
iload 11
aload 7
lload 8
invokestatic java.math.BigDecimal.needIncrement:(JIILjava/math/MutableBigInteger;J)Z
ifeq 12
11: aload 7
getstatic java.math.MutableBigInteger.ONE:Ljava/math/MutableBigInteger;
invokevirtual java.math.MutableBigInteger.add:(Ljava/math/MutableBigInteger;)V
12: StackMap locals: int
StackMap stack:
aload 7
iload 11
iload 3
invokevirtual java.math.MutableBigInteger.toBigDecimal:(II)Ljava/math/BigDecimal;
areturn
13: StackMap locals:
StackMap stack:
iload 5
iload 3
if_icmpeq 19
14: aload 7
iload 11
invokevirtual java.math.MutableBigInteger.toCompactValue:(I)J
lstore 12
start local 12 15: lload 12
ldc -9223372036854775808
lcmp
ifeq 17
16: lload 12
iload 3
iload 5
i2l
invokestatic java.math.BigDecimal.createAndStripZerosToMatchScale:(JIJ)Ljava/math/BigDecimal;
areturn
17: StackMap locals: long
StackMap stack:
aload 7
iload 11
invokevirtual java.math.MutableBigInteger.toBigInteger:(I)Ljava/math/BigInteger;
astore 14
start local 14 18: aload 14
iload 3
iload 5
i2l
invokestatic java.math.BigDecimal.createAndStripZerosToMatchScale:(Ljava/math/BigInteger;IJ)Ljava/math/BigDecimal;
areturn
end local 14 end local 12 19: StackMap locals:
StackMap stack:
aload 7
iload 11
iload 3
invokevirtual java.math.MutableBigInteger.toBigDecimal:(II)Ljava/math/BigDecimal;
areturn
end local 11 end local 10 end local 8 end local 7 end local 6 end local 5 end local 4 end local 3 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 20 0 bdividend Ljava/math/BigInteger;
0 20 1 ldivisor J
0 20 3 scale I
0 20 4 roundingMode I
0 20 5 preferredScale I
1 20 6 mdividend Ljava/math/MutableBigInteger;
2 20 7 mq Ljava/math/MutableBigInteger;
3 20 8 r J
6 20 10 isRemainderZero Z
9 20 11 qsign I
15 19 12 compactVal J
18 19 14 intVal Ljava/math/BigInteger;
MethodParameters:
Name Flags
bdividend
ldivisor
scale
roundingMode
preferredScale
private static boolean needIncrement(long, int, int, java.math.MutableBigInteger, long);
descriptor: (JIILjava/math/MutableBigInteger;J)Z
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=4, locals=8, args_size=5
start local 0 start local 2 start local 3 start local 4 start local 5 0: getstatic java.math.BigDecimal.$assertionsDisabled:Z
ifne 1
lload 5
lconst_0
lcmp
ifne 1
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
1: StackMap locals:
StackMap stack:
lload 5
ldc -4611686018427387904
lcmp
ifle 2
lload 5
ldc 4611686018427387903
lcmp
ifle 4
2: StackMap locals:
StackMap stack:
iconst_1
istore 7
start local 7 3: goto 5
end local 7 4: StackMap locals:
StackMap stack:
ldc 2
lload 5
lmul
lload 0
invokestatic java.math.BigDecimal.longCompareMagnitude:(JJ)I
istore 7
start local 7 5: StackMap locals: int
StackMap stack:
iload 2
iload 3
iload 7
aload 4
invokevirtual java.math.MutableBigInteger.isOdd:()Z
invokestatic java.math.BigDecimal.commonNeedIncrement:(IIIZ)Z
ireturn
end local 7 end local 5 end local 4 end local 3 end local 2 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 ldivisor J
0 6 2 roundingMode I
0 6 3 qsign I
0 6 4 mq Ljava/math/MutableBigInteger;
0 6 5 r J
3 4 7 cmpFracHalf I
5 6 7 cmpFracHalf I
MethodParameters:
Name Flags
ldivisor
roundingMode
qsign
mq
r
private static java.math.BigInteger divideAndRound(java.math.BigInteger, java.math.BigInteger, int);
descriptor: (Ljava/math/BigInteger;Ljava/math/BigInteger;I)Ljava/math/BigInteger;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=5, locals=9, args_size=3
start local 0 start local 1 start local 2 0: new java.math.MutableBigInteger
dup
aload 0
getfield java.math.BigInteger.mag:[I
invokespecial java.math.MutableBigInteger.<init>:([I)V
astore 5
start local 5 1: new java.math.MutableBigInteger
dup
invokespecial java.math.MutableBigInteger.<init>:()V
astore 6
start local 6 2: new java.math.MutableBigInteger
dup
aload 1
getfield java.math.BigInteger.mag:[I
invokespecial java.math.MutableBigInteger.<init>:([I)V
astore 7
start local 7 3: aload 5
aload 7
aload 6
invokevirtual java.math.MutableBigInteger.divide:(Ljava/math/MutableBigInteger;Ljava/math/MutableBigInteger;)Ljava/math/MutableBigInteger;
astore 8
start local 8 4: aload 8
invokevirtual java.math.MutableBigInteger.isZero:()Z
istore 3
start local 3 5: aload 0
getfield java.math.BigInteger.signum:I
aload 1
getfield java.math.BigInteger.signum:I
if_icmpeq 6
iconst_m1
goto 7
StackMap locals: java.math.BigInteger java.math.BigInteger int int top java.math.MutableBigInteger java.math.MutableBigInteger java.math.MutableBigInteger java.math.MutableBigInteger
StackMap stack:
6: iconst_1
StackMap locals:
StackMap stack: int
7: istore 4
start local 4 8: iload 3
ifne 11
9: aload 7
iload 2
iload 4
aload 6
aload 8
invokestatic java.math.BigDecimal.needIncrement:(Ljava/math/MutableBigInteger;IILjava/math/MutableBigInteger;Ljava/math/MutableBigInteger;)Z
ifeq 11
10: aload 6
getstatic java.math.MutableBigInteger.ONE:Ljava/math/MutableBigInteger;
invokevirtual java.math.MutableBigInteger.add:(Ljava/math/MutableBigInteger;)V
11: StackMap locals: java.math.BigInteger java.math.BigInteger int int int java.math.MutableBigInteger java.math.MutableBigInteger java.math.MutableBigInteger java.math.MutableBigInteger
StackMap stack:
aload 6
iload 4
invokevirtual java.math.MutableBigInteger.toBigInteger:(I)Ljava/math/BigInteger;
areturn
end local 8 end local 7 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 12 0 bdividend Ljava/math/BigInteger;
0 12 1 bdivisor Ljava/math/BigInteger;
0 12 2 roundingMode I
5 12 3 isRemainderZero Z
8 12 4 qsign I
1 12 5 mdividend Ljava/math/MutableBigInteger;
2 12 6 mq Ljava/math/MutableBigInteger;
3 12 7 mdivisor Ljava/math/MutableBigInteger;
4 12 8 mr Ljava/math/MutableBigInteger;
MethodParameters:
Name Flags
bdividend
bdivisor
roundingMode
private static java.math.BigDecimal divideAndRound(java.math.BigInteger, java.math.BigInteger, int, int, int);
descriptor: (Ljava/math/BigInteger;Ljava/math/BigInteger;III)Ljava/math/BigDecimal;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=5, locals=14, args_size=5
start local 0 start local 1 start local 2 start local 3 start local 4 0: new java.math.MutableBigInteger
dup
aload 0
getfield java.math.BigInteger.mag:[I
invokespecial java.math.MutableBigInteger.<init>:([I)V
astore 7
start local 7 1: new java.math.MutableBigInteger
dup
invokespecial java.math.MutableBigInteger.<init>:()V
astore 8
start local 8 2: new java.math.MutableBigInteger
dup
aload 1
getfield java.math.BigInteger.mag:[I
invokespecial java.math.MutableBigInteger.<init>:([I)V
astore 9
start local 9 3: aload 7
aload 9
aload 8
invokevirtual java.math.MutableBigInteger.divide:(Ljava/math/MutableBigInteger;Ljava/math/MutableBigInteger;)Ljava/math/MutableBigInteger;
astore 10
start local 10 4: aload 10
invokevirtual java.math.MutableBigInteger.isZero:()Z
istore 5
start local 5 5: aload 0
getfield java.math.BigInteger.signum:I
aload 1
getfield java.math.BigInteger.signum:I
if_icmpeq 6
iconst_m1
goto 7
StackMap locals: java.math.BigInteger java.math.BigInteger int int int int top java.math.MutableBigInteger java.math.MutableBigInteger java.math.MutableBigInteger java.math.MutableBigInteger
StackMap stack:
6: iconst_1
StackMap locals:
StackMap stack: int
7: istore 6
start local 6 8: iload 5
ifne 12
9: aload 9
iload 3
iload 6
aload 8
aload 10
invokestatic java.math.BigDecimal.needIncrement:(Ljava/math/MutableBigInteger;IILjava/math/MutableBigInteger;Ljava/math/MutableBigInteger;)Z
ifeq 11
10: aload 8
getstatic java.math.MutableBigInteger.ONE:Ljava/math/MutableBigInteger;
invokevirtual java.math.MutableBigInteger.add:(Ljava/math/MutableBigInteger;)V
11: StackMap locals: java.math.BigInteger java.math.BigInteger int int int int int java.math.MutableBigInteger java.math.MutableBigInteger java.math.MutableBigInteger java.math.MutableBigInteger
StackMap stack:
aload 8
iload 6
iload 2
invokevirtual java.math.MutableBigInteger.toBigDecimal:(II)Ljava/math/BigDecimal;
areturn
12: StackMap locals:
StackMap stack:
iload 4
iload 2
if_icmpeq 18
13: aload 8
iload 6
invokevirtual java.math.MutableBigInteger.toCompactValue:(I)J
lstore 11
start local 11 14: lload 11
ldc -9223372036854775808
lcmp
ifeq 16
15: lload 11
iload 2
iload 4
i2l
invokestatic java.math.BigDecimal.createAndStripZerosToMatchScale:(JIJ)Ljava/math/BigDecimal;
areturn
16: StackMap locals: long
StackMap stack:
aload 8
iload 6
invokevirtual java.math.MutableBigInteger.toBigInteger:(I)Ljava/math/BigInteger;
astore 13
start local 13 17: aload 13
iload 2
iload 4
i2l
invokestatic java.math.BigDecimal.createAndStripZerosToMatchScale:(Ljava/math/BigInteger;IJ)Ljava/math/BigDecimal;
areturn
end local 13 end local 11 18: StackMap locals:
StackMap stack:
aload 8
iload 6
iload 2
invokevirtual java.math.MutableBigInteger.toBigDecimal:(II)Ljava/math/BigDecimal;
areturn
end local 10 end local 9 end local 8 end local 7 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 19 0 bdividend Ljava/math/BigInteger;
0 19 1 bdivisor Ljava/math/BigInteger;
0 19 2 scale I
0 19 3 roundingMode I
0 19 4 preferredScale I
5 19 5 isRemainderZero Z
8 19 6 qsign I
1 19 7 mdividend Ljava/math/MutableBigInteger;
2 19 8 mq Ljava/math/MutableBigInteger;
3 19 9 mdivisor Ljava/math/MutableBigInteger;
4 19 10 mr Ljava/math/MutableBigInteger;
14 18 11 compactVal J
17 18 13 intVal Ljava/math/BigInteger;
MethodParameters:
Name Flags
bdividend
bdivisor
scale
roundingMode
preferredScale
private static boolean needIncrement(java.math.MutableBigInteger, int, int, java.math.MutableBigInteger, java.math.MutableBigInteger);
descriptor: (Ljava/math/MutableBigInteger;IILjava/math/MutableBigInteger;Ljava/math/MutableBigInteger;)Z
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=4, locals=6, args_size=5
start local 0 start local 1 start local 2 start local 3 start local 4 0: getstatic java.math.BigDecimal.$assertionsDisabled:Z
ifne 1
aload 4
invokevirtual java.math.MutableBigInteger.isZero:()Z
ifeq 1
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
1: StackMap locals:
StackMap stack:
aload 4
aload 0
invokevirtual java.math.MutableBigInteger.compareHalf:(Ljava/math/MutableBigInteger;)I
istore 5
start local 5 2: iload 1
iload 2
iload 5
aload 3
invokevirtual java.math.MutableBigInteger.isOdd:()Z
invokestatic java.math.BigDecimal.commonNeedIncrement:(IIIZ)Z
ireturn
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 3 0 mdivisor Ljava/math/MutableBigInteger;
0 3 1 roundingMode I
0 3 2 qsign I
0 3 3 mq Ljava/math/MutableBigInteger;
0 3 4 mr Ljava/math/MutableBigInteger;
2 3 5 cmpFracHalf I
MethodParameters:
Name Flags
mdivisor
roundingMode
qsign
mq
mr
private static java.math.BigDecimal createAndStripZerosToMatchScale(java.math.BigInteger, int, long);
descriptor: (Ljava/math/BigInteger;IJ)Ljava/math/BigDecimal;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=5, locals=5, args_size=3
start local 0 start local 1 start local 2 0: goto 8
1: StackMap locals:
StackMap stack:
aload 0
iconst_0
invokevirtual java.math.BigInteger.testBit:(I)Z
ifeq 3
2: goto 11
3: StackMap locals:
StackMap stack:
aload 0
getstatic java.math.BigInteger.TEN:Ljava/math/BigInteger;
invokevirtual java.math.BigInteger.divideAndRemainder:(Ljava/math/BigInteger;)[Ljava/math/BigInteger;
astore 4
start local 4 4: aload 4
iconst_1
aaload
invokevirtual java.math.BigInteger.signum:()I
ifeq 6
5: goto 11
6: StackMap locals: java.math.BigInteger[]
StackMap stack:
aload 4
iconst_0
aaload
astore 0
7: aload 0
iload 1
i2l
lconst_1
lsub
invokestatic java.math.BigDecimal.checkScale:(Ljava/math/BigInteger;J)I
istore 1
end local 4 8: StackMap locals:
StackMap stack:
aload 0
getstatic java.math.BigInteger.TEN:Ljava/math/BigInteger;
invokevirtual java.math.BigInteger.compareMagnitude:(Ljava/math/BigInteger;)I
iflt 11
9: iload 1
i2l
lload 2
10: lcmp
ifgt 1
11: StackMap locals:
StackMap stack:
aload 0
iload 1
iconst_0
invokestatic java.math.BigDecimal.valueOf:(Ljava/math/BigInteger;II)Ljava/math/BigDecimal;
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 12 0 intVal Ljava/math/BigInteger;
0 12 1 scale I
0 12 2 preferredScale J
4 8 4 qr [Ljava/math/BigInteger;
MethodParameters:
Name Flags
intVal
scale
preferredScale
private static java.math.BigDecimal createAndStripZerosToMatchScale(long, int, long);
descriptor: (JIJ)Ljava/math/BigDecimal;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=6, locals=7, args_size=3
start local 0 start local 2 start local 3 0: goto 8
1: StackMap locals:
StackMap stack:
lload 0
lconst_1
land
lconst_0
lcmp
ifeq 3
2: goto 9
3: StackMap locals:
StackMap stack:
lload 0
ldc 10
lrem
lstore 5
start local 5 4: lload 5
lconst_0
lcmp
ifeq 6
5: goto 9
6: StackMap locals: long
StackMap stack:
lload 0
ldc 10
ldiv
lstore 0
7: lload 0
iload 2
i2l
lconst_1
lsub
invokestatic java.math.BigDecimal.checkScale:(JJ)I
istore 2
end local 5 8: StackMap locals:
StackMap stack:
lload 0
invokestatic java.lang.Math.abs:(J)J
ldc 10
lcmp
iflt 9
iload 2
i2l
lload 3
lcmp
ifgt 1
9: StackMap locals:
StackMap stack:
lload 0
iload 2
invokestatic java.math.BigDecimal.valueOf:(JI)Ljava/math/BigDecimal;
areturn
end local 3 end local 2 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 10 0 compactVal J
0 10 2 scale I
0 10 3 preferredScale J
4 8 5 r J
MethodParameters:
Name Flags
compactVal
scale
preferredScale
private static java.math.BigDecimal stripZerosToMatchScale(java.math.BigInteger, long, int, int);
descriptor: (Ljava/math/BigInteger;JII)Ljava/math/BigDecimal;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=5, locals=5, args_size=4
start local 0 start local 1 start local 3 start local 4 0: lload 1
ldc -9223372036854775808
lcmp
ifeq 2
1: lload 1
iload 3
iload 4
i2l
invokestatic java.math.BigDecimal.createAndStripZerosToMatchScale:(JIJ)Ljava/math/BigDecimal;
areturn
2: StackMap locals:
StackMap stack:
aload 0
ifnonnull 3
getstatic java.math.BigDecimal.INFLATED_BIGINT:Ljava/math/BigInteger;
goto 4
StackMap locals:
StackMap stack:
3: aload 0
4: StackMap locals:
StackMap stack: java.math.BigInteger
iload 3
iload 4
i2l
5: invokestatic java.math.BigDecimal.createAndStripZerosToMatchScale:(Ljava/math/BigInteger;IJ)Ljava/math/BigDecimal;
areturn
end local 4 end local 3 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 intVal Ljava/math/BigInteger;
0 6 1 intCompact J
0 6 3 scale I
0 6 4 preferredScale I
MethodParameters:
Name Flags
intVal
intCompact
scale
preferredScale
private static long add(long, long);
descriptor: (JJ)J
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=6, locals=6, args_size=2
start local 0 start local 2 0: lload 0
lload 2
ladd
lstore 4
start local 4 1: lload 4
lload 0
lxor
lload 4
lload 2
lxor
land
lconst_0
lcmp
iflt 3
2: lload 4
lreturn
3: StackMap locals: long
StackMap stack:
ldc -9223372036854775808
lreturn
end local 4 end local 2 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 xs J
0 4 2 ys J
1 4 4 sum J
MethodParameters:
Name Flags
xs
ys
private static java.math.BigDecimal add(long, long, int);
descriptor: (JJI)Ljava/math/BigDecimal;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=5, locals=7, args_size=3
start local 0 start local 2 start local 4 0: lload 0
lload 2
invokestatic java.math.BigDecimal.add:(JJ)J
lstore 5
start local 5 1: lload 5
ldc -9223372036854775808
lcmp
ifeq 3
2: lload 5
iload 4
invokestatic java.math.BigDecimal.valueOf:(JI)Ljava/math/BigDecimal;
areturn
3: StackMap locals: long
StackMap stack:
new java.math.BigDecimal
dup
lload 0
invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
lload 2
invokevirtual java.math.BigInteger.add:(J)Ljava/math/BigInteger;
iload 4
invokespecial java.math.BigDecimal.<init>:(Ljava/math/BigInteger;I)V
areturn
end local 5 end local 4 end local 2 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 xs J
0 4 2 ys J
0 4 4 scale I
1 4 5 sum J
MethodParameters:
Name Flags
xs
ys
scale
private static java.math.BigDecimal add(long, int, long, int);
descriptor: (JIJI)Ljava/math/BigDecimal;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=7, locals=12, args_size=4
start local 0 start local 2 start local 3 start local 5 0: iload 2
i2l
iload 5
i2l
lsub
lstore 6
start local 6 1: lload 6
lconst_0
lcmp
ifne 3
2: lload 0
lload 3
iload 2
invokestatic java.math.BigDecimal.add:(JJI)Ljava/math/BigDecimal;
areturn
3: StackMap locals: long
StackMap stack:
lload 6
lconst_0
lcmp
ifge 13
4: lload 0
lload 6
lneg
invokestatic java.math.BigDecimal.checkScale:(JJ)I
istore 8
start local 8 5: lload 0
iload 8
invokestatic java.math.BigDecimal.longMultiplyPowerTen:(JI)J
lstore 9
start local 9 6: lload 9
ldc -9223372036854775808
lcmp
ifeq 8
7: lload 9
lload 3
iload 5
invokestatic java.math.BigDecimal.add:(JJI)Ljava/math/BigDecimal;
areturn
8: StackMap locals: int long
StackMap stack:
lload 0
iload 8
invokestatic java.math.BigDecimal.bigMultiplyPowerTen:(JI)Ljava/math/BigInteger;
lload 3
invokevirtual java.math.BigInteger.add:(J)Ljava/math/BigInteger;
astore 11
start local 11 9: lload 0
lload 3
lxor
lconst_0
lcmp
iflt 11
10: new java.math.BigDecimal
dup
aload 11
ldc -9223372036854775808
iload 5
iconst_0
invokespecial java.math.BigDecimal.<init>:(Ljava/math/BigInteger;JII)V
goto 12
11: StackMap locals: java.math.BigInteger
StackMap stack:
aload 11
iload 5
iconst_0
invokestatic java.math.BigDecimal.valueOf:(Ljava/math/BigInteger;II)Ljava/math/BigDecimal;
12: StackMap locals:
StackMap stack: java.math.BigDecimal
areturn
end local 11 end local 9 end local 8 13: StackMap locals:
StackMap stack:
lload 3
lload 6
invokestatic java.math.BigDecimal.checkScale:(JJ)I
istore 8
start local 8 14: lload 3
iload 8
invokestatic java.math.BigDecimal.longMultiplyPowerTen:(JI)J
lstore 9
start local 9 15: lload 9
ldc -9223372036854775808
lcmp
ifeq 17
16: lload 0
lload 9
iload 2
invokestatic java.math.BigDecimal.add:(JJI)Ljava/math/BigDecimal;
areturn
17: StackMap locals: int long
StackMap stack:
lload 3
iload 8
invokestatic java.math.BigDecimal.bigMultiplyPowerTen:(JI)Ljava/math/BigInteger;
lload 0
invokevirtual java.math.BigInteger.add:(J)Ljava/math/BigInteger;
astore 11
start local 11 18: lload 0
lload 3
lxor
lconst_0
lcmp
iflt 20
19: new java.math.BigDecimal
dup
aload 11
ldc -9223372036854775808
iload 2
iconst_0
invokespecial java.math.BigDecimal.<init>:(Ljava/math/BigInteger;JII)V
goto 21
20: StackMap locals: java.math.BigInteger
StackMap stack:
aload 11
iload 2
iconst_0
invokestatic java.math.BigDecimal.valueOf:(Ljava/math/BigInteger;II)Ljava/math/BigDecimal;
21: StackMap locals:
StackMap stack: java.math.BigDecimal
areturn
end local 11 end local 9 end local 8 end local 6 end local 5 end local 3 end local 2 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 22 0 xs J
0 22 2 scale1 I
0 22 3 ys J
0 22 5 scale2 I
1 22 6 sdiff J
5 13 8 raise I
6 13 9 scaledX J
9 13 11 bigsum Ljava/math/BigInteger;
14 22 8 raise I
15 22 9 scaledY J
18 22 11 bigsum Ljava/math/BigInteger;
MethodParameters:
Name Flags
xs final
scale1
ys final
scale2
private static java.math.BigDecimal add(long, int, java.math.BigInteger, int);
descriptor: (JILjava/math/BigInteger;I)Ljava/math/BigDecimal;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=7, locals=13, args_size=4
start local 0 start local 2 start local 3 start local 4 0: iload 2
istore 5
start local 5 1: iload 5
i2l
iload 4
i2l
lsub
lstore 6
start local 6 2: lload 0
invokestatic java.lang.Long.signum:(J)I
aload 3
getfield java.math.BigInteger.signum:I
if_icmpne 3
iconst_1
goto 4
StackMap locals: int long
StackMap stack:
3: iconst_0
StackMap locals:
StackMap stack: int
4: istore 8
start local 8 5: lload 6
lconst_0
lcmp
ifge 14
6: lload 0
lload 6
lneg
invokestatic java.math.BigDecimal.checkScale:(JJ)I
istore 10
start local 10 7: iload 4
istore 5
8: lload 0
iload 10
invokestatic java.math.BigDecimal.longMultiplyPowerTen:(JI)J
lstore 11
start local 11 9: lload 11
ldc -9223372036854775808
lcmp
ifne 12
10: aload 3
lload 0
iload 10
invokestatic java.math.BigDecimal.bigMultiplyPowerTen:(JI)Ljava/math/BigInteger;
invokevirtual java.math.BigInteger.add:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
astore 9
start local 9 11: goto 17
end local 9 12: StackMap locals: long int java.math.BigInteger int int long int top int long
StackMap stack:
aload 3
lload 11
invokevirtual java.math.BigInteger.add:(J)Ljava/math/BigInteger;
astore 9
end local 11 end local 10 start local 9 13: goto 17
end local 9 14: StackMap locals: long int java.math.BigInteger int int long int
StackMap stack:
aload 3
lload 6
invokestatic java.math.BigDecimal.checkScale:(Ljava/math/BigInteger;J)I
istore 10
start local 10 15: aload 3
iload 10
invokestatic java.math.BigDecimal.bigMultiplyPowerTen:(Ljava/math/BigInteger;I)Ljava/math/BigInteger;
astore 3
16: aload 3
lload 0
invokevirtual java.math.BigInteger.add:(J)Ljava/math/BigInteger;
astore 9
end local 10 start local 9 17: StackMap locals: java.math.BigInteger
StackMap stack:
iload 8
ifeq 19
18: new java.math.BigDecimal
dup
aload 9
ldc -9223372036854775808
iload 5
iconst_0
invokespecial java.math.BigDecimal.<init>:(Ljava/math/BigInteger;JII)V
goto 20
19: StackMap locals:
StackMap stack:
aload 9
iload 5
iconst_0
invokestatic java.math.BigDecimal.valueOf:(Ljava/math/BigInteger;II)Ljava/math/BigDecimal;
20: StackMap locals:
StackMap stack: java.math.BigDecimal
areturn
end local 9 end local 8 end local 6 end local 5 end local 4 end local 3 end local 2 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 21 0 xs J
0 21 2 scale1 I
0 21 3 snd Ljava/math/BigInteger;
0 21 4 scale2 I
1 21 5 rscale I
2 21 6 sdiff J
5 21 8 sameSigns Z
11 12 9 sum Ljava/math/BigInteger;
13 14 9 sum Ljava/math/BigInteger;
17 21 9 sum Ljava/math/BigInteger;
7 13 10 raise I
9 13 11 scaledX J
15 17 10 raise I
MethodParameters:
Name Flags
xs final
scale1
snd
scale2
private static java.math.BigDecimal add(java.math.BigInteger, int, java.math.BigInteger, int);
descriptor: (Ljava/math/BigInteger;ILjava/math/BigInteger;I)Ljava/math/BigDecimal;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=7, locals=8, args_size=4
start local 0 start local 1 start local 2 start local 3 0: iload 1
istore 4
start local 4 1: iload 4
i2l
iload 3
i2l
lsub
lstore 5
start local 5 2: lload 5
lconst_0
lcmp
ifeq 10
3: lload 5
lconst_0
lcmp
ifge 8
4: aload 0
lload 5
lneg
invokestatic java.math.BigDecimal.checkScale:(Ljava/math/BigInteger;J)I
istore 7
start local 7 5: iload 3
istore 4
6: aload 0
iload 7
invokestatic java.math.BigDecimal.bigMultiplyPowerTen:(Ljava/math/BigInteger;I)Ljava/math/BigInteger;
astore 0
end local 7 7: goto 10
8: StackMap locals: int long
StackMap stack:
aload 2
lload 5
invokestatic java.math.BigDecimal.checkScale:(Ljava/math/BigInteger;J)I
istore 7
start local 7 9: aload 2
iload 7
invokestatic java.math.BigDecimal.bigMultiplyPowerTen:(Ljava/math/BigInteger;I)Ljava/math/BigInteger;
astore 2
end local 7 10: StackMap locals:
StackMap stack:
aload 0
aload 2
invokevirtual java.math.BigInteger.add:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
astore 7
start local 7 11: aload 0
getfield java.math.BigInteger.signum:I
aload 2
getfield java.math.BigInteger.signum:I
if_icmpne 13
12: new java.math.BigDecimal
dup
aload 7
ldc -9223372036854775808
iload 4
iconst_0
invokespecial java.math.BigDecimal.<init>:(Ljava/math/BigInteger;JII)V
goto 14
13: StackMap locals: java.math.BigInteger
StackMap stack:
aload 7
iload 4
iconst_0
invokestatic java.math.BigDecimal.valueOf:(Ljava/math/BigInteger;II)Ljava/math/BigDecimal;
14: StackMap locals:
StackMap stack: java.math.BigDecimal
areturn
end local 7 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 15 0 fst Ljava/math/BigInteger;
0 15 1 scale1 I
0 15 2 snd Ljava/math/BigInteger;
0 15 3 scale2 I
1 15 4 rscale I
2 15 5 sdiff J
5 7 7 raise I
9 10 7 raise I
11 15 7 sum Ljava/math/BigInteger;
MethodParameters:
Name Flags
fst
scale1
snd
scale2
private static java.math.BigInteger bigMultiplyPowerTen(long, int);
descriptor: (JI)Ljava/math/BigInteger;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=3, locals=3, args_size=2
start local 0 start local 2 0: iload 2
ifgt 2
1: lload 0
invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
areturn
2: StackMap locals:
StackMap stack:
iload 2
invokestatic java.math.BigDecimal.bigTenToThe:(I)Ljava/math/BigInteger;
lload 0
invokevirtual java.math.BigInteger.multiply:(J)Ljava/math/BigInteger;
areturn
end local 2 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 value J
0 3 2 n I
MethodParameters:
Name Flags
value
n
private static java.math.BigInteger bigMultiplyPowerTen(java.math.BigInteger, int);
descriptor: (Ljava/math/BigInteger;I)Ljava/math/BigInteger;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=3, locals=2, args_size=2
start local 0 start local 1 0: iload 1
ifgt 2
1: aload 0
areturn
2: StackMap locals:
StackMap stack:
iload 1
getstatic java.math.BigDecimal.LONG_TEN_POWERS_TABLE:[J
arraylength
if_icmpge 4
3: aload 0
getstatic java.math.BigDecimal.LONG_TEN_POWERS_TABLE:[J
iload 1
laload
invokevirtual java.math.BigInteger.multiply:(J)Ljava/math/BigInteger;
areturn
4: StackMap locals:
StackMap stack:
aload 0
iload 1
invokestatic java.math.BigDecimal.bigTenToThe:(I)Ljava/math/BigInteger;
invokevirtual java.math.BigInteger.multiply:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 value Ljava/math/BigInteger;
0 5 1 n I
MethodParameters:
Name Flags
value
n
private static java.math.BigDecimal divideSmallFastPath(long, int, long, int, long, java.math.MathContext);
descriptor: (JIJIJLjava/math/MathContext;)Ljava/math/BigDecimal;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=10, locals=22, args_size=6
start local 0 start local 2 start local 3 start local 5 start local 6 start local 8 0: aload 8
getfield java.math.MathContext.precision:I
istore 9
start local 9 1: aload 8
getfield java.math.MathContext.roundingMode:Ljava/math/RoundingMode;
getfield java.math.RoundingMode.oldMode:I
istore 10
start local 10 2: getstatic java.math.BigDecimal.$assertionsDisabled:Z
ifne 4
iload 2
iload 5
if_icmpgt 3
iload 5
bipush 18
if_icmpge 3
iload 9
bipush 18
if_icmplt 4
StackMap locals: int int
StackMap stack:
3: new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
4: StackMap locals:
StackMap stack:
iload 5
iload 2
isub
istore 11
start local 11 5: iload 11
ifne 6
lload 0
goto 7
6: StackMap locals: int
StackMap stack:
lload 0
iload 11
invokestatic java.math.BigDecimal.longMultiplyPowerTen:(JI)J
7: StackMap locals:
StackMap stack: long
lstore 12
start local 12 8: lload 12
lload 3
invokestatic java.math.BigDecimal.longCompareMagnitude:(JJ)I
istore 15
start local 15 9: iload 15
ifle 41
10: iinc 5 -1
11: lload 6
iload 5
i2l
ladd
iload 2
i2l
lsub
iload 9
i2l
ladd
invokestatic java.math.BigDecimal.checkScaleNonZero:(J)I
istore 16
start local 16 12: iload 9
i2l
iload 5
i2l
ladd
iload 2
i2l
lsub
invokestatic java.math.BigDecimal.checkScaleNonZero:(J)I
ifle 27
13: iload 9
i2l
iload 5
i2l
ladd
iload 2
i2l
lsub
invokestatic java.math.BigDecimal.checkScaleNonZero:(J)I
istore 17
start local 17 14: lload 0
iload 17
invokestatic java.math.BigDecimal.longMultiplyPowerTen:(JI)J
dup2
lstore 18
start local 18 15: ldc -9223372036854775808
lcmp
ifne 25
16: aconst_null
astore 14
start local 14 17: iload 9
iconst_1
isub
iflt 19
iload 9
iconst_1
isub
getstatic java.math.BigDecimal.LONG_TEN_POWERS_TABLE:[J
arraylength
if_icmpge 19
18: getstatic java.math.BigDecimal.LONG_TEN_POWERS_TABLE:[J
iload 9
iconst_1
isub
laload
lload 12
lload 3
iload 16
iload 10
lload 6
invokestatic java.math.BigDecimal.checkScaleNonZero:(J)I
invokestatic java.math.BigDecimal.multiplyDivideAndRound:(JJJIII)Ljava/math/BigDecimal;
astore 14
19: StackMap locals: long int long int long java.math.MathContext int int int long java.math.BigDecimal int int int long
StackMap stack:
aload 14
ifnonnull 63
20: lload 12
iload 9
iconst_1
isub
invokestatic java.math.BigDecimal.bigMultiplyPowerTen:(JI)Ljava/math/BigInteger;
astore 20
start local 20 21: aload 20
lload 3
22: iload 16
iload 10
lload 6
invokestatic java.math.BigDecimal.checkScaleNonZero:(J)I
23: invokestatic java.math.BigDecimal.divideAndRound:(Ljava/math/BigInteger;JIII)Ljava/math/BigDecimal;
astore 14
end local 20 24: goto 63
end local 14 25: StackMap locals: long int long int long java.math.MathContext int int int long top int int int long
StackMap stack:
lload 18
lload 3
iload 16
iload 10
lload 6
invokestatic java.math.BigDecimal.checkScaleNonZero:(J)I
invokestatic java.math.BigDecimal.divideAndRound:(JJIII)Ljava/math/BigDecimal;
astore 14
end local 18 end local 17 start local 14 26: goto 63
end local 14 27: StackMap locals:
StackMap stack:
iload 2
i2l
iload 9
i2l
lsub
invokestatic java.math.BigDecimal.checkScaleNonZero:(J)I
istore 17
start local 17 28: iload 17
iload 5
if_icmpne 31
29: lload 0
lload 3
iload 16
iload 10
lload 6
invokestatic java.math.BigDecimal.checkScaleNonZero:(J)I
invokestatic java.math.BigDecimal.divideAndRound:(JJIII)Ljava/math/BigDecimal;
astore 14
start local 14 30: goto 63
end local 14 31: StackMap locals: int
StackMap stack:
iload 17
i2l
iload 5
i2l
lsub
invokestatic java.math.BigDecimal.checkScaleNonZero:(J)I
istore 18
start local 18 32: lload 3
iload 18
invokestatic java.math.BigDecimal.longMultiplyPowerTen:(JI)J
dup2
lstore 19
start local 19 33: ldc -9223372036854775808
lcmp
ifne 39
34: lload 3
iload 18
invokestatic java.math.BigDecimal.bigMultiplyPowerTen:(JI)Ljava/math/BigInteger;
astore 21
start local 21 35: lload 0
invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
36: aload 21
iload 16
iload 10
lload 6
invokestatic java.math.BigDecimal.checkScaleNonZero:(J)I
37: invokestatic java.math.BigDecimal.divideAndRound:(Ljava/math/BigInteger;Ljava/math/BigInteger;III)Ljava/math/BigDecimal;
astore 14
end local 21 start local 14 38: goto 63
end local 14 39: StackMap locals: int long
StackMap stack:
lload 0
lload 19
iload 16
iload 10
lload 6
invokestatic java.math.BigDecimal.checkScaleNonZero:(J)I
invokestatic java.math.BigDecimal.divideAndRound:(JJIII)Ljava/math/BigDecimal;
astore 14
end local 19 end local 18 end local 17 end local 16 start local 14 40: goto 63
end local 14 41: StackMap locals: long int long int long java.math.MathContext int int int long top int
StackMap stack:
lload 6
iload 5
i2l
ladd
iload 2
i2l
lsub
iload 9
i2l
ladd
invokestatic java.math.BigDecimal.checkScaleNonZero:(J)I
istore 16
start local 16 42: iload 15
ifne 51
43: lload 12
lconst_0
lcmp
ifge 44
iconst_1
goto 45
StackMap locals: int
StackMap stack:
44: iconst_0
StackMap locals:
StackMap stack: int
45: lload 3
lconst_0
lcmp
ifge 46
iconst_1
goto 47
StackMap locals:
StackMap stack: int
46: iconst_0
StackMap locals: long int long int long java.math.MathContext int int int long top int int
StackMap stack: int int
47: if_icmpne 48
iconst_1
goto 49
StackMap locals:
StackMap stack:
48: iconst_m1
StackMap locals:
StackMap stack: int
49: iload 9
iload 16
lload 6
invokestatic java.math.BigDecimal.checkScaleNonZero:(J)I
invokestatic java.math.BigDecimal.roundedTenPower:(IIII)Ljava/math/BigDecimal;
astore 14
start local 14 50: goto 63
end local 14 51: StackMap locals:
StackMap stack:
lload 12
iload 9
invokestatic java.math.BigDecimal.longMultiplyPowerTen:(JI)J
dup2
lstore 17
start local 17 52: ldc -9223372036854775808
lcmp
ifne 62
53: aconst_null
astore 14
start local 14 54: iload 9
getstatic java.math.BigDecimal.LONG_TEN_POWERS_TABLE:[J
arraylength
if_icmpge 56
55: getstatic java.math.BigDecimal.LONG_TEN_POWERS_TABLE:[J
iload 9
laload
lload 12
lload 3
iload 16
iload 10
lload 6
invokestatic java.math.BigDecimal.checkScaleNonZero:(J)I
invokestatic java.math.BigDecimal.multiplyDivideAndRound:(JJJIII)Ljava/math/BigDecimal;
astore 14
56: StackMap locals: long int long int long java.math.MathContext int int int long java.math.BigDecimal int int long
StackMap stack:
aload 14
ifnonnull 63
57: lload 12
iload 9
invokestatic java.math.BigDecimal.bigMultiplyPowerTen:(JI)Ljava/math/BigInteger;
astore 19
start local 19 58: aload 19
lload 3
59: iload 16
iload 10
lload 6
invokestatic java.math.BigDecimal.checkScaleNonZero:(J)I
60: invokestatic java.math.BigDecimal.divideAndRound:(Ljava/math/BigInteger;JIII)Ljava/math/BigDecimal;
astore 14
end local 19 61: goto 63
end local 14 62: StackMap locals: long int long int long java.math.MathContext int int int long top int int long
StackMap stack:
lload 17
lload 3
iload 16
iload 10
lload 6
invokestatic java.math.BigDecimal.checkScaleNonZero:(J)I
invokestatic java.math.BigDecimal.divideAndRound:(JJIII)Ljava/math/BigDecimal;
astore 14
end local 17 end local 16 start local 14 63: StackMap locals: long int long int long java.math.MathContext int int int long java.math.BigDecimal int
StackMap stack:
aload 14
aload 8
invokestatic java.math.BigDecimal.doRound:(Ljava/math/BigDecimal;Ljava/math/MathContext;)Ljava/math/BigDecimal;
areturn
end local 15 end local 14 end local 12 end local 11 end local 10 end local 9 end local 8 end local 6 end local 5 end local 3 end local 2 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 64 0 xs J
0 64 2 xscale I
0 64 3 ys J
0 64 5 yscale I
0 64 6 preferredScale J
0 64 8 mc Ljava/math/MathContext;
1 64 9 mcp I
2 64 10 roundingMode I
5 64 11 xraise I
8 64 12 scaledX J
17 25 14 quotient Ljava/math/BigDecimal;
26 27 14 quotient Ljava/math/BigDecimal;
30 31 14 quotient Ljava/math/BigDecimal;
38 39 14 quotient Ljava/math/BigDecimal;
40 41 14 quotient Ljava/math/BigDecimal;
50 51 14 quotient Ljava/math/BigDecimal;
54 62 14 quotient Ljava/math/BigDecimal;
63 64 14 quotient Ljava/math/BigDecimal;
9 64 15 cmp I
12 40 16 scl I
14 26 17 raise I
15 26 18 scaledXs J
21 24 20 rb Ljava/math/BigInteger;
28 40 17 newScale I
32 40 18 raise I
33 40 19 scaledYs J
35 38 21 rb Ljava/math/BigInteger;
42 63 16 scl I
52 63 17 scaledXs J
58 61 19 rb Ljava/math/BigInteger;
MethodParameters:
Name Flags
xs final
xscale
ys final
yscale
preferredScale
mc
private static java.math.BigDecimal divide(long, int, long, int, long, java.math.MathContext);
descriptor: (JIJIJLjava/math/MathContext;)Ljava/math/BigDecimal;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=9, locals=18, args_size=6
start local 0 start local 2 start local 3 start local 5 start local 6 start local 8 0: aload 8
getfield java.math.MathContext.precision:I
istore 9
start local 9 1: iload 2
iload 5
if_icmpgt 3
iload 5
bipush 18
if_icmpge 3
iload 9
bipush 18
if_icmpge 3
2: lload 0
iload 2
lload 3
iload 5
lload 6
aload 8
invokestatic java.math.BigDecimal.divideSmallFastPath:(JIJIJLjava/math/MathContext;)Ljava/math/BigDecimal;
areturn
3: StackMap locals: int
StackMap stack:
lload 0
iload 2
lload 3
iload 5
invokestatic java.math.BigDecimal.compareMagnitudeNormalized:(JIJI)I
ifle 5
4: iinc 5 -1
5: StackMap locals:
StackMap stack:
aload 8
getfield java.math.MathContext.roundingMode:Ljava/math/RoundingMode;
getfield java.math.RoundingMode.oldMode:I
istore 10
start local 10 6: lload 6
iload 5
i2l
ladd
iload 2
i2l
lsub
iload 9
i2l
ladd
invokestatic java.math.BigDecimal.checkScaleNonZero:(J)I
istore 11
start local 11 7: iload 9
i2l
iload 5
i2l
ladd
iload 2
i2l
lsub
invokestatic java.math.BigDecimal.checkScaleNonZero:(J)I
ifle 16
8: iload 9
i2l
iload 5
i2l
ladd
iload 2
i2l
lsub
invokestatic java.math.BigDecimal.checkScaleNonZero:(J)I
istore 13
start local 13 9: lload 0
iload 13
invokestatic java.math.BigDecimal.longMultiplyPowerTen:(JI)J
dup2
lstore 14
start local 14 10: ldc -9223372036854775808
lcmp
ifne 14
11: lload 0
iload 13
invokestatic java.math.BigDecimal.bigMultiplyPowerTen:(JI)Ljava/math/BigInteger;
astore 16
start local 16 12: aload 16
lload 3
iload 11
iload 10
lload 6
invokestatic java.math.BigDecimal.checkScaleNonZero:(J)I
invokestatic java.math.BigDecimal.divideAndRound:(Ljava/math/BigInteger;JIII)Ljava/math/BigDecimal;
astore 12
end local 16 start local 12 13: goto 29
end local 12 14: StackMap locals: long int long int long java.math.MathContext int int int top int long
StackMap stack:
lload 14
lload 3
iload 11
iload 10
lload 6
invokestatic java.math.BigDecimal.checkScaleNonZero:(J)I
invokestatic java.math.BigDecimal.divideAndRound:(JJIII)Ljava/math/BigDecimal;
astore 12
end local 14 end local 13 start local 12 15: goto 29
end local 12 16: StackMap locals: long int long int long java.math.MathContext int int int
StackMap stack:
iload 2
i2l
iload 9
i2l
lsub
invokestatic java.math.BigDecimal.checkScaleNonZero:(J)I
istore 13
start local 13 17: iload 13
iload 5
if_icmpne 20
18: lload 0
lload 3
iload 11
iload 10
lload 6
invokestatic java.math.BigDecimal.checkScaleNonZero:(J)I
invokestatic java.math.BigDecimal.divideAndRound:(JJIII)Ljava/math/BigDecimal;
astore 12
start local 12 19: goto 29
end local 12 20: StackMap locals: long int long int long java.math.MathContext int int int top int
StackMap stack:
iload 13
i2l
iload 5
i2l
lsub
invokestatic java.math.BigDecimal.checkScaleNonZero:(J)I
istore 14
start local 14 21: lload 3
iload 14
invokestatic java.math.BigDecimal.longMultiplyPowerTen:(JI)J
dup2
lstore 15
start local 15 22: ldc -9223372036854775808
lcmp
ifne 28
23: lload 3
iload 14
invokestatic java.math.BigDecimal.bigMultiplyPowerTen:(JI)Ljava/math/BigInteger;
astore 17
start local 17 24: lload 0
invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
25: aload 17
iload 11
iload 10
lload 6
invokestatic java.math.BigDecimal.checkScaleNonZero:(J)I
26: invokestatic java.math.BigDecimal.divideAndRound:(Ljava/math/BigInteger;Ljava/math/BigInteger;III)Ljava/math/BigDecimal;
astore 12
end local 17 start local 12 27: goto 29
end local 12 28: StackMap locals: int long
StackMap stack:
lload 0
lload 15
iload 11
iload 10
lload 6
invokestatic java.math.BigDecimal.checkScaleNonZero:(J)I
invokestatic java.math.BigDecimal.divideAndRound:(JJIII)Ljava/math/BigDecimal;
astore 12
end local 15 end local 14 end local 13 start local 12 29: StackMap locals: long int long int long java.math.MathContext int int int java.math.BigDecimal
StackMap stack:
aload 12
aload 8
invokestatic java.math.BigDecimal.doRound:(Ljava/math/BigDecimal;Ljava/math/MathContext;)Ljava/math/BigDecimal;
areturn
end local 12 end local 11 end local 10 end local 9 end local 8 end local 6 end local 5 end local 3 end local 2 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 30 0 xs J
0 30 2 xscale I
0 30 3 ys J
0 30 5 yscale I
0 30 6 preferredScale J
0 30 8 mc Ljava/math/MathContext;
1 30 9 mcp I
6 30 10 roundingMode I
7 30 11 scl I
13 14 12 quotient Ljava/math/BigDecimal;
15 16 12 quotient Ljava/math/BigDecimal;
19 20 12 quotient Ljava/math/BigDecimal;
27 28 12 quotient Ljava/math/BigDecimal;
29 30 12 quotient Ljava/math/BigDecimal;
9 15 13 raise I
10 15 14 scaledXs J
12 13 16 rb Ljava/math/BigInteger;
17 29 13 newScale I
21 29 14 raise I
22 29 15 scaledYs J
24 27 17 rb Ljava/math/BigInteger;
MethodParameters:
Name Flags
xs final
xscale
ys final
yscale
preferredScale
mc
private static java.math.BigDecimal divide(java.math.BigInteger, int, long, int, long, java.math.MathContext);
descriptor: (Ljava/math/BigInteger;IJIJLjava/math/MathContext;)Ljava/math/BigDecimal;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=7, locals=17, args_size=6
start local 0 start local 1 start local 2 start local 4 start local 5 start local 7 0: lload 2
iload 4
aload 0
iload 1
invokestatic java.math.BigDecimal.compareMagnitudeNormalized:(JILjava/math/BigInteger;I)I
ineg
ifle 2
1: iinc 4 -1
2: StackMap locals:
StackMap stack:
aload 7
getfield java.math.MathContext.precision:I
istore 8
start local 8 3: aload 7
getfield java.math.MathContext.roundingMode:Ljava/math/RoundingMode;
getfield java.math.RoundingMode.oldMode:I
istore 9
start local 9 4: lload 5
iload 4
i2l
ladd
iload 1
i2l
lsub
iload 8
i2l
ladd
invokestatic java.math.BigDecimal.checkScaleNonZero:(J)I
istore 11
start local 11 5: iload 8
i2l
iload 4
i2l
ladd
iload 1
i2l
lsub
invokestatic java.math.BigDecimal.checkScaleNonZero:(J)I
ifle 10
6: iload 8
i2l
iload 4
i2l
ladd
iload 1
i2l
lsub
invokestatic java.math.BigDecimal.checkScaleNonZero:(J)I
istore 12
start local 12 7: aload 0
iload 12
invokestatic java.math.BigDecimal.bigMultiplyPowerTen:(Ljava/math/BigInteger;I)Ljava/math/BigInteger;
astore 13
start local 13 8: aload 13
lload 2
iload 11
iload 9
lload 5
invokestatic java.math.BigDecimal.checkScaleNonZero:(J)I
invokestatic java.math.BigDecimal.divideAndRound:(Ljava/math/BigInteger;JIII)Ljava/math/BigDecimal;
astore 10
end local 13 end local 12 start local 10 9: goto 21
end local 10 10: StackMap locals: java.math.BigInteger int long int long java.math.MathContext int int top int
StackMap stack:
iload 1
i2l
iload 8
i2l
lsub
invokestatic java.math.BigDecimal.checkScaleNonZero:(J)I
istore 12
start local 12 11: iload 12
iload 4
if_icmpne 14
12: aload 0
lload 2
iload 11
iload 9
lload 5
invokestatic java.math.BigDecimal.checkScaleNonZero:(J)I
invokestatic java.math.BigDecimal.divideAndRound:(Ljava/math/BigInteger;JIII)Ljava/math/BigDecimal;
astore 10
start local 10 13: goto 21
end local 10 14: StackMap locals: int
StackMap stack:
iload 12
i2l
iload 4
i2l
lsub
invokestatic java.math.BigDecimal.checkScaleNonZero:(J)I
istore 13
start local 13 15: lload 2
iload 13
invokestatic java.math.BigDecimal.longMultiplyPowerTen:(JI)J
dup2
lstore 14
start local 14 16: ldc -9223372036854775808
lcmp
ifne 20
17: lload 2
iload 13
invokestatic java.math.BigDecimal.bigMultiplyPowerTen:(JI)Ljava/math/BigInteger;
astore 16
start local 16 18: aload 0
aload 16
iload 11
iload 9
lload 5
invokestatic java.math.BigDecimal.checkScaleNonZero:(J)I
invokestatic java.math.BigDecimal.divideAndRound:(Ljava/math/BigInteger;Ljava/math/BigInteger;III)Ljava/math/BigDecimal;
astore 10
end local 16 start local 10 19: goto 21
end local 10 20: StackMap locals: int long
StackMap stack:
aload 0
lload 14
iload 11
iload 9
lload 5
invokestatic java.math.BigDecimal.checkScaleNonZero:(J)I
invokestatic java.math.BigDecimal.divideAndRound:(Ljava/math/BigInteger;JIII)Ljava/math/BigDecimal;
astore 10
end local 14 end local 13 end local 12 start local 10 21: StackMap locals: java.math.BigInteger int long int long java.math.MathContext int int java.math.BigDecimal int
StackMap stack:
aload 10
aload 7
invokestatic java.math.BigDecimal.doRound:(Ljava/math/BigDecimal;Ljava/math/MathContext;)Ljava/math/BigDecimal;
areturn
end local 11 end local 10 end local 9 end local 8 end local 7 end local 5 end local 4 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 22 0 xs Ljava/math/BigInteger;
0 22 1 xscale I
0 22 2 ys J
0 22 4 yscale I
0 22 5 preferredScale J
0 22 7 mc Ljava/math/MathContext;
3 22 8 mcp I
4 22 9 roundingMode I
9 10 10 quotient Ljava/math/BigDecimal;
13 14 10 quotient Ljava/math/BigDecimal;
19 20 10 quotient Ljava/math/BigDecimal;
21 22 10 quotient Ljava/math/BigDecimal;
5 22 11 scl I
7 9 12 raise I
8 9 13 rb Ljava/math/BigInteger;
11 21 12 newScale I
15 21 13 raise I
16 21 14 scaledYs J
18 19 16 rb Ljava/math/BigInteger;
MethodParameters:
Name Flags
xs
xscale
ys
yscale
preferredScale
mc
private static java.math.BigDecimal divide(long, int, java.math.BigInteger, int, long, java.math.MathContext);
descriptor: (JILjava/math/BigInteger;IJLjava/math/MathContext;)Ljava/math/BigDecimal;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=6, locals=15, args_size=6
start local 0 start local 2 start local 3 start local 4 start local 5 start local 7 0: lload 0
iload 2
aload 3
iload 4
invokestatic java.math.BigDecimal.compareMagnitudeNormalized:(JILjava/math/BigInteger;I)I
ifle 2
1: iinc 4 -1
2: StackMap locals:
StackMap stack:
aload 7
getfield java.math.MathContext.precision:I
istore 8
start local 8 3: aload 7
getfield java.math.MathContext.roundingMode:Ljava/math/RoundingMode;
getfield java.math.RoundingMode.oldMode:I
istore 9
start local 9 4: lload 5
iload 4
i2l
ladd
iload 2
i2l
lsub
iload 8
i2l
ladd
invokestatic java.math.BigDecimal.checkScaleNonZero:(J)I
istore 11
start local 11 5: iload 8
i2l
iload 4
i2l
ladd
iload 2
i2l
lsub
invokestatic java.math.BigDecimal.checkScaleNonZero:(J)I
ifle 10
6: iload 8
i2l
iload 4
i2l
ladd
iload 2
i2l
lsub
invokestatic java.math.BigDecimal.checkScaleNonZero:(J)I
istore 12
start local 12 7: lload 0
iload 12
invokestatic java.math.BigDecimal.bigMultiplyPowerTen:(JI)Ljava/math/BigInteger;
astore 13
start local 13 8: aload 13
aload 3
iload 11
iload 9
lload 5
invokestatic java.math.BigDecimal.checkScaleNonZero:(J)I
invokestatic java.math.BigDecimal.divideAndRound:(Ljava/math/BigInteger;Ljava/math/BigInteger;III)Ljava/math/BigDecimal;
astore 10
end local 13 end local 12 start local 10 9: goto 14
end local 10 10: StackMap locals: long int java.math.BigInteger int long java.math.MathContext int int top int
StackMap stack:
iload 2
i2l
iload 8
i2l
lsub
invokestatic java.math.BigDecimal.checkScaleNonZero:(J)I
istore 12
start local 12 11: iload 12
i2l
iload 4
i2l
lsub
invokestatic java.math.BigDecimal.checkScaleNonZero:(J)I
istore 13
start local 13 12: aload 3
iload 13
invokestatic java.math.BigDecimal.bigMultiplyPowerTen:(Ljava/math/BigInteger;I)Ljava/math/BigInteger;
astore 14
start local 14 13: lload 0
invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
aload 14
iload 11
iload 9
lload 5
invokestatic java.math.BigDecimal.checkScaleNonZero:(J)I
invokestatic java.math.BigDecimal.divideAndRound:(Ljava/math/BigInteger;Ljava/math/BigInteger;III)Ljava/math/BigDecimal;
astore 10
end local 14 end local 13 end local 12 start local 10 14: StackMap locals: long int java.math.BigInteger int long java.math.MathContext int int java.math.BigDecimal int
StackMap stack:
aload 10
aload 7
invokestatic java.math.BigDecimal.doRound:(Ljava/math/BigDecimal;Ljava/math/MathContext;)Ljava/math/BigDecimal;
areturn
end local 11 end local 10 end local 9 end local 8 end local 7 end local 5 end local 4 end local 3 end local 2 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 15 0 xs J
0 15 2 xscale I
0 15 3 ys Ljava/math/BigInteger;
0 15 4 yscale I
0 15 5 preferredScale J
0 15 7 mc Ljava/math/MathContext;
3 15 8 mcp I
4 15 9 roundingMode I
9 10 10 quotient Ljava/math/BigDecimal;
14 15 10 quotient Ljava/math/BigDecimal;
5 15 11 scl I
7 9 12 raise I
8 9 13 rb Ljava/math/BigInteger;
11 14 12 newScale I
12 14 13 raise I
13 14 14 rb Ljava/math/BigInteger;
MethodParameters:
Name Flags
xs
xscale
ys
yscale
preferredScale
mc
private static java.math.BigDecimal divide(java.math.BigInteger, int, java.math.BigInteger, int, long, java.math.MathContext);
descriptor: (Ljava/math/BigInteger;ILjava/math/BigInteger;IJLjava/math/MathContext;)Ljava/math/BigDecimal;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=6, locals=14, args_size=6
start local 0 start local 1 start local 2 start local 3 start local 4 start local 6 0: aload 0
iload 1
aload 2
iload 3
invokestatic java.math.BigDecimal.compareMagnitudeNormalized:(Ljava/math/BigInteger;ILjava/math/BigInteger;I)I
ifle 2
1: iinc 3 -1
2: StackMap locals:
StackMap stack:
aload 6
getfield java.math.MathContext.precision:I
istore 7
start local 7 3: aload 6
getfield java.math.MathContext.roundingMode:Ljava/math/RoundingMode;
getfield java.math.RoundingMode.oldMode:I
istore 8
start local 8 4: lload 4
iload 3
i2l
ladd
iload 1
i2l
lsub
iload 7
i2l
ladd
invokestatic java.math.BigDecimal.checkScaleNonZero:(J)I
istore 10
start local 10 5: iload 7
i2l
iload 3
i2l
ladd
iload 1
i2l
lsub
invokestatic java.math.BigDecimal.checkScaleNonZero:(J)I
ifle 10
6: iload 7
i2l
iload 3
i2l
ladd
iload 1
i2l
lsub
invokestatic java.math.BigDecimal.checkScaleNonZero:(J)I
istore 11
start local 11 7: aload 0
iload 11
invokestatic java.math.BigDecimal.bigMultiplyPowerTen:(Ljava/math/BigInteger;I)Ljava/math/BigInteger;
astore 12
start local 12 8: aload 12
aload 2
iload 10
iload 8
lload 4
invokestatic java.math.BigDecimal.checkScaleNonZero:(J)I
invokestatic java.math.BigDecimal.divideAndRound:(Ljava/math/BigInteger;Ljava/math/BigInteger;III)Ljava/math/BigDecimal;
astore 9
end local 12 end local 11 start local 9 9: goto 14
end local 9 10: StackMap locals: java.math.BigInteger int java.math.BigInteger int long java.math.MathContext int int top int
StackMap stack:
iload 1
i2l
iload 7
i2l
lsub
invokestatic java.math.BigDecimal.checkScaleNonZero:(J)I
istore 11
start local 11 11: iload 11
i2l
iload 3
i2l
lsub
invokestatic java.math.BigDecimal.checkScaleNonZero:(J)I
istore 12
start local 12 12: aload 2
iload 12
invokestatic java.math.BigDecimal.bigMultiplyPowerTen:(Ljava/math/BigInteger;I)Ljava/math/BigInteger;
astore 13
start local 13 13: aload 0
aload 13
iload 10
iload 8
lload 4
invokestatic java.math.BigDecimal.checkScaleNonZero:(J)I
invokestatic java.math.BigDecimal.divideAndRound:(Ljava/math/BigInteger;Ljava/math/BigInteger;III)Ljava/math/BigDecimal;
astore 9
end local 13 end local 12 end local 11 start local 9 14: StackMap locals: java.math.BigInteger int java.math.BigInteger int long java.math.MathContext int int java.math.BigDecimal int
StackMap stack:
aload 9
aload 6
invokestatic java.math.BigDecimal.doRound:(Ljava/math/BigDecimal;Ljava/math/MathContext;)Ljava/math/BigDecimal;
areturn
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 15 0 xs Ljava/math/BigInteger;
0 15 1 xscale I
0 15 2 ys Ljava/math/BigInteger;
0 15 3 yscale I
0 15 4 preferredScale J
0 15 6 mc Ljava/math/MathContext;
3 15 7 mcp I
4 15 8 roundingMode I
9 10 9 quotient Ljava/math/BigDecimal;
14 15 9 quotient Ljava/math/BigDecimal;
5 15 10 scl I
7 9 11 raise I
8 9 12 rb Ljava/math/BigInteger;
11 14 11 newScale I
12 14 12 raise I
13 14 13 rb Ljava/math/BigInteger;
MethodParameters:
Name Flags
xs
xscale
ys
yscale
preferredScale
mc
private static java.math.BigDecimal multiplyDivideAndRound(long, long, long, int, int, int);
descriptor: (JJJIII)Ljava/math/BigDecimal;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=10, locals=32, args_size=6
start local 0 start local 2 start local 4 start local 6 start local 7 start local 8 0: lload 0
invokestatic java.lang.Long.signum:(J)I
lload 2
invokestatic java.lang.Long.signum:(J)I
imul
lload 4
invokestatic java.lang.Long.signum:(J)I
imul
istore 9
start local 9 1: lload 0
invokestatic java.lang.Math.abs:(J)J
lstore 0
2: lload 2
invokestatic java.lang.Math.abs:(J)J
lstore 2
3: lload 4
invokestatic java.lang.Math.abs:(J)J
lstore 4
4: lload 0
bipush 32
lushr
lstore 10
start local 10 5: lload 0
ldc 4294967295
land
lstore 12
start local 12 6: lload 2
bipush 32
lushr
lstore 14
start local 14 7: lload 2
ldc 4294967295
land
lstore 16
start local 16 8: lload 12
lload 16
lmul
lstore 18
start local 18 9: lload 18
ldc 4294967295
land
lstore 20
start local 20 10: lload 18
bipush 32
lushr
lstore 22
start local 22 11: lload 10
lload 16
lmul
lload 22
ladd
lstore 18
12: lload 18
ldc 4294967295
land
lstore 22
13: lload 18
bipush 32
lushr
lstore 24
start local 24 14: lload 12
lload 14
lmul
lload 22
ladd
lstore 18
15: lload 18
ldc 4294967295
land
lstore 22
16: lload 24
lload 18
bipush 32
lushr
ladd
lstore 24
17: lload 24
bipush 32
lushr
lstore 26
start local 26 18: lload 24
ldc 4294967295
land
lstore 24
19: lload 10
lload 14
lmul
lload 24
ladd
lstore 18
20: lload 18
ldc 4294967295
land
lstore 24
21: lload 18
bipush 32
lushr
lload 26
ladd
ldc 4294967295
land
lstore 26
22: lload 26
lload 24
invokestatic java.math.BigDecimal.make64:(JJ)J
lstore 28
start local 28 23: lload 22
lload 20
invokestatic java.math.BigDecimal.make64:(JJ)J
lstore 30
start local 30 24: lload 28
lload 30
lload 4
iload 9
iload 6
iload 7
iload 8
invokestatic java.math.BigDecimal.divideAndRound128:(JJJIIII)Ljava/math/BigDecimal;
areturn
end local 30 end local 28 end local 26 end local 24 end local 22 end local 20 end local 18 end local 16 end local 14 end local 12 end local 10 end local 9 end local 8 end local 7 end local 6 end local 4 end local 2 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 25 0 dividend0 J
0 25 2 dividend1 J
0 25 4 divisor J
0 25 6 scale I
0 25 7 roundingMode I
0 25 8 preferredScale I
1 25 9 qsign I
5 25 10 d0_hi J
6 25 12 d0_lo J
7 25 14 d1_hi J
8 25 16 d1_lo J
9 25 18 product J
10 25 20 d0 J
11 25 22 d1 J
14 25 24 d2 J
18 25 26 d3 J
23 25 28 dividendHi J
24 25 30 dividendLo J
MethodParameters:
Name Flags
dividend0
dividend1
divisor
scale
roundingMode
preferredScale
private static java.math.BigDecimal divideAndRound128(long, long, long, int, int, int, int);
descriptor: (JJJIIII)Ljava/math/BigDecimal;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=10, locals=34, args_size=7
start local 0 start local 2 start local 4 start local 6 start local 7 start local 8 start local 9 0: lload 0
lload 4
lcmp
iflt 2
1: aconst_null
areturn
2: StackMap locals:
StackMap stack:
lload 4
invokestatic java.lang.Long.numberOfLeadingZeros:(J)I
istore 10
start local 10 3: lload 4
iload 10
lshl
lstore 4
4: lload 4
bipush 32
lushr
lstore 11
start local 11 5: lload 4
ldc 4294967295
land
lstore 13
start local 13 6: lload 2
iload 10
lshl
lstore 15
start local 15 7: lload 15
bipush 32
lushr
lstore 17
start local 17 8: lload 15
ldc 4294967295
land
lstore 19
start local 19 9: lload 0
iload 10
lshl
lload 2
bipush 64
iload 10
isub
lushr
lor
lstore 15
10: lload 15
ldc 4294967295
land
lstore 21
start local 21 11: lload 11
lconst_1
lcmp
ifne 15
12: lload 15
lstore 23
start local 23 13: lconst_0
lstore 25
start local 25 14: goto 27
end local 25 end local 23 StackMap locals: long long long int int int int int long long long long long long
StackMap stack:
15: lload 15
lconst_0
lcmp
iflt 19
16: lload 15
lload 11
ldiv
lstore 23
start local 23 17: lload 15
lload 23
lload 11
lmul
lsub
lstore 25
start local 25 18: goto 27
end local 25 end local 23 19: StackMap locals:
StackMap stack:
lload 15
lload 11
invokestatic java.math.BigDecimal.divRemNegativeLong:(JJ)[J
astore 27
start local 27 20: aload 27
iconst_1
laload
lstore 23
start local 23 21: aload 27
iconst_0
laload
lstore 25
end local 27 start local 25 22: goto 27
23: StackMap locals: long long
StackMap stack:
lload 23
lconst_1
lsub
lstore 23
24: lload 25
lload 11
ladd
lstore 25
25: lload 25
ldc 4294967296
lcmp
iflt 27
26: goto 28
27: StackMap locals:
StackMap stack:
lload 23
ldc 4294967296
lcmp
ifge 23
lload 23
lload 13
lmul
lload 25
lload 17
invokestatic java.math.BigDecimal.make64:(JJ)J
invokestatic java.math.BigDecimal.unsignedLongCompare:(JJ)Z
ifne 23
28: StackMap locals:
StackMap stack:
lload 21
lload 17
lload 11
lload 13
lload 23
invokestatic java.math.BigDecimal.mulsub:(JJJJJ)J
lstore 15
29: lload 15
ldc 4294967295
land
lstore 17
30: lload 11
lconst_1
lcmp
ifne 34
31: lload 15
lstore 27
start local 27 32: lconst_0
lstore 25
33: goto 46
end local 27 StackMap locals:
StackMap stack:
34: lload 15
lconst_0
lcmp
iflt 38
35: lload 15
lload 11
ldiv
lstore 27
start local 27 36: lload 15
lload 27
lload 11
lmul
lsub
lstore 25
37: goto 46
end local 27 38: StackMap locals:
StackMap stack:
lload 15
lload 11
invokestatic java.math.BigDecimal.divRemNegativeLong:(JJ)[J
astore 29
start local 29 39: aload 29
iconst_1
laload
lstore 27
start local 27 40: aload 29
iconst_0
laload
lstore 25
end local 29 41: goto 46
42: StackMap locals: long
StackMap stack:
lload 27
lconst_1
lsub
lstore 27
43: lload 25
lload 11
ladd
lstore 25
44: lload 25
ldc 4294967296
lcmp
iflt 46
45: goto 47
46: StackMap locals:
StackMap stack:
lload 27
ldc 4294967296
lcmp
ifge 42
lload 27
lload 13
lmul
lload 25
lload 19
invokestatic java.math.BigDecimal.make64:(JJ)J
invokestatic java.math.BigDecimal.unsignedLongCompare:(JJ)Z
ifne 42
47: StackMap locals:
StackMap stack:
lload 23
l2i
ifge 60
48: new java.math.MutableBigInteger
dup
iconst_2
newarray 10
dup
iconst_0
lload 23
l2i
iastore
dup
iconst_1
lload 27
l2i
iastore
invokespecial java.math.MutableBigInteger.<init>:([I)V
astore 29
start local 29 49: iload 8
iconst_1
if_icmpne 51
iload 7
iload 9
if_icmpne 51
50: aload 29
iload 6
iload 7
invokevirtual java.math.MutableBigInteger.toBigDecimal:(II)Ljava/math/BigDecimal;
areturn
51: StackMap locals: java.math.MutableBigInteger
StackMap stack:
lload 17
lload 19
lload 11
lload 13
lload 27
invokestatic java.math.BigDecimal.mulsub:(JJJJJ)J
iload 10
lushr
lstore 30
start local 30 52: lload 30
lconst_0
lcmp
ifeq 56
53: lload 4
iload 10
lushr
iload 8
iload 6
aload 29
lload 30
invokestatic java.math.BigDecimal.needIncrement:(JIILjava/math/MutableBigInteger;J)Z
ifeq 55
54: aload 29
getstatic java.math.MutableBigInteger.ONE:Ljava/math/MutableBigInteger;
invokevirtual java.math.MutableBigInteger.add:(Ljava/math/MutableBigInteger;)V
55: StackMap locals: long
StackMap stack:
aload 29
iload 6
iload 7
invokevirtual java.math.MutableBigInteger.toBigDecimal:(II)Ljava/math/BigDecimal;
areturn
56: StackMap locals:
StackMap stack:
iload 9
iload 7
if_icmpeq 59
57: aload 29
iload 6
invokevirtual java.math.MutableBigInteger.toBigInteger:(I)Ljava/math/BigInteger;
astore 32
start local 32 58: aload 32
iload 7
iload 9
i2l
invokestatic java.math.BigDecimal.createAndStripZerosToMatchScale:(Ljava/math/BigInteger;IJ)Ljava/math/BigDecimal;
areturn
end local 32 59: StackMap locals:
StackMap stack:
aload 29
iload 6
iload 7
invokevirtual java.math.MutableBigInteger.toBigDecimal:(II)Ljava/math/BigDecimal;
areturn
end local 30 end local 29 60: StackMap locals:
StackMap stack:
lload 23
lload 27
invokestatic java.math.BigDecimal.make64:(JJ)J
lstore 29
start local 29 61: lload 29
iload 6
i2l
lmul
lstore 29
62: iload 8
iconst_1
if_icmpne 64
iload 7
iload 9
if_icmpne 64
63: lload 29
iload 7
invokestatic java.math.BigDecimal.valueOf:(JI)Ljava/math/BigDecimal;
areturn
64: StackMap locals: long
StackMap stack:
lload 17
lload 19
lload 11
lload 13
lload 27
invokestatic java.math.BigDecimal.mulsub:(JJJJJ)J
iload 10
lushr
lstore 31
start local 31 65: lload 31
lconst_0
lcmp
ifeq 70
66: lload 4
iload 10
lushr
iload 8
iload 6
lload 29
lload 31
invokestatic java.math.BigDecimal.needIncrement:(JIIJJ)Z
istore 33
start local 33 67: iload 33
ifeq 68
lload 29
iload 6
i2l
ladd
goto 69
StackMap locals: long int
StackMap stack:
68: lload 29
StackMap locals:
StackMap stack: long
69: iload 7
invokestatic java.math.BigDecimal.valueOf:(JI)Ljava/math/BigDecimal;
areturn
end local 33 70: StackMap locals:
StackMap stack:
iload 9
iload 7
if_icmpeq 72
71: lload 29
iload 7
iload 9
i2l
invokestatic java.math.BigDecimal.createAndStripZerosToMatchScale:(JIJ)Ljava/math/BigDecimal;
areturn
72: StackMap locals:
StackMap stack:
lload 29
iload 7
invokestatic java.math.BigDecimal.valueOf:(JI)Ljava/math/BigDecimal;
areturn
end local 31 end local 29 end local 27 end local 25 end local 23 end local 21 end local 19 end local 17 end local 15 end local 13 end local 11 end local 10 end local 9 end local 8 end local 7 end local 6 end local 4 end local 2 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 73 0 dividendHi J
0 73 2 dividendLo J
0 73 4 divisor J
0 73 6 sign I
0 73 7 scale I
0 73 8 roundingMode I
0 73 9 preferredScale I
3 73 10 shift I
5 73 11 v1 J
6 73 13 v0 J
7 73 15 tmp J
8 73 17 u1 J
9 73 19 u0 J
11 73 21 u2 J
13 15 23 q1 J
17 19 23 q1 J
21 73 23 q1 J
14 15 25 r_tmp J
18 19 25 r_tmp J
22 73 25 r_tmp J
20 22 27 rq [J
32 34 27 q0 J
36 38 27 q0 J
40 73 27 q0 J
39 41 29 rq [J
49 60 29 mq Ljava/math/MutableBigInteger;
52 60 30 r J
58 59 32 intVal Ljava/math/BigInteger;
61 73 29 q J
65 73 31 r J
67 70 33 increment Z
MethodParameters:
Name Flags
dividendHi final
dividendLo final
divisor
sign
scale
roundingMode
preferredScale
private static java.math.BigDecimal roundedTenPower(int, int, int, int);
descriptor: (IIII)Ljava/math/BigDecimal;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=4, locals=5, args_size=4
start local 0 start local 1 start local 2 start local 3 0: iload 2
iload 3
if_icmple 5
1: iload 2
iload 3
isub
istore 4
start local 4 2: iload 4
iload 1
if_icmpge 4
3: iload 1
iload 4
isub
iload 0
iload 3
invokestatic java.math.BigDecimal.scaledTenPow:(III)Ljava/math/BigDecimal;
areturn
4: StackMap locals: int
StackMap stack:
iload 0
i2l
iload 2
iload 1
isub
invokestatic java.math.BigDecimal.valueOf:(JI)Ljava/math/BigDecimal;
areturn
end local 4 5: StackMap locals:
StackMap stack:
iload 1
iload 0
iload 2
invokestatic java.math.BigDecimal.scaledTenPow:(III)Ljava/math/BigDecimal;
areturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 qsign I
0 6 1 raise I
0 6 2 scale I
0 6 3 preferredScale I
2 5 4 diff I
MethodParameters:
Name Flags
qsign
raise
scale
preferredScale
static java.math.BigDecimal scaledTenPow(int, int, int);
descriptor: (III)Ljava/math/BigDecimal;
flags: (0x0008) ACC_STATIC
Code:
stack=8, locals=4, args_size=3
start local 0 start local 1 start local 2 0: iload 0
getstatic java.math.BigDecimal.LONG_TEN_POWERS_TABLE:[J
arraylength
if_icmpge 2
1: iload 1
i2l
getstatic java.math.BigDecimal.LONG_TEN_POWERS_TABLE:[J
iload 0
laload
lmul
iload 2
invokestatic java.math.BigDecimal.valueOf:(JI)Ljava/math/BigDecimal;
areturn
2: StackMap locals:
StackMap stack:
iload 0
invokestatic java.math.BigDecimal.bigTenToThe:(I)Ljava/math/BigInteger;
astore 3
start local 3 3: iload 1
iconst_m1
if_icmpne 5
4: aload 3
invokevirtual java.math.BigInteger.negate:()Ljava/math/BigInteger;
astore 3
5: StackMap locals: java.math.BigInteger
StackMap stack:
new java.math.BigDecimal
dup
aload 3
ldc -9223372036854775808
iload 2
iload 0
iconst_1
iadd
invokespecial java.math.BigDecimal.<init>:(Ljava/math/BigInteger;JII)V
areturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 n I
0 6 1 sign I
0 6 2 scale I
3 6 3 unscaledVal Ljava/math/BigInteger;
MethodParameters:
Name Flags
n
sign
scale
private static long[] divRemNegativeLong(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: getstatic java.math.BigDecimal.$assertionsDisabled:Z
ifne 1
lload 0
lconst_0
lcmp
iflt 1
new java.lang.AssertionError
dup
new java.lang.StringBuilder
dup
ldc "Non-negative numerator "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
lload 0
invokevirtual java.lang.StringBuilder.append:(J)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
1: StackMap locals:
StackMap stack:
getstatic java.math.BigDecimal.$assertionsDisabled:Z
ifne 2
lload 2
lconst_1
lcmp
ifne 2
new java.lang.AssertionError
dup
ldc "Unity denominator"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
2: StackMap locals:
StackMap stack:
lload 0
iconst_1
lushr
lload 2
iconst_1
lushr
ldiv
lstore 4
start local 4 3: lload 0
lload 4
lload 2
lmul
lsub
lstore 6
start local 6 4: goto 7
5: StackMap locals: long long
StackMap stack:
lload 6
lload 2
ladd
lstore 6
6: lload 4
lconst_1
lsub
lstore 4
7: StackMap locals:
StackMap stack:
lload 6
lconst_0
lcmp
iflt 5
8: goto 11
9: StackMap locals:
StackMap stack:
lload 6
lload 2
lsub
lstore 6
10: lload 4
lconst_1
ladd
lstore 4
11: StackMap locals:
StackMap stack:
lload 6
lload 2
lcmp
ifge 9
12: iconst_2
newarray 11
dup
iconst_0
lload 6
lastore
dup
iconst_1
lload 4
lastore
areturn
end local 6 end local 4 end local 2 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 13 0 n J
0 13 2 d J
3 13 4 q J
4 13 6 r J
MethodParameters:
Name Flags
n
d
private static long make64(long, long);
descriptor: (JJ)J
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=4, locals=4, args_size=2
start local 0 start local 2 0: lload 0
bipush 32
lshl
lload 2
lor
lreturn
end local 2 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 hi J
0 1 2 lo J
MethodParameters:
Name Flags
hi
lo
private static long mulsub(long, long, long, long, long);
descriptor: (JJJJJ)J
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=6, locals=12, args_size=5
start local 0 start local 2 start local 4 start local 6 start local 8 0: lload 2
lload 8
lload 6
lmul
lsub
lstore 10
start local 10 1: lload 0
lload 10
bipush 32
lushr
ladd
lload 8
lload 4
lmul
lsub
lload 10
ldc 4294967295
land
invokestatic java.math.BigDecimal.make64:(JJ)J
lreturn
end local 10 end local 8 end local 6 end local 4 end local 2 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 u1 J
0 2 2 u0 J
0 2 4 v1 J
0 2 6 v0 J
0 2 8 q0 J
1 2 10 tmp J
MethodParameters:
Name Flags
u1
u0
v1 final
v0 final
q0
private static boolean unsignedLongCompare(long, long);
descriptor: (JJ)Z
flags: (0x000a) ACC_PRIVATE, 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
lcmp
ifle 1
iconst_1
ireturn
StackMap locals:
StackMap stack:
1: iconst_0
ireturn
end local 2 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 one J
0 2 2 two J
MethodParameters:
Name Flags
one
two
private static boolean unsignedLongCompareEq(long, long);
descriptor: (JJ)Z
flags: (0x000a) ACC_PRIVATE, 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
lcmp
iflt 1
iconst_1
ireturn
StackMap locals:
StackMap stack:
1: iconst_0
ireturn
end local 2 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 one J
0 2 2 two J
MethodParameters:
Name Flags
one
two
private static int compareMagnitudeNormalized(long, int, long, int);
descriptor: (JIJI)I
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=4, locals=7, args_size=4
start local 0 start local 2 start local 3 start local 5 0: iload 2
iload 5
isub
istore 6
start local 6 1: iload 6
ifeq 6
2: iload 6
ifge 5
3: lload 0
iload 6
ineg
invokestatic java.math.BigDecimal.longMultiplyPowerTen:(JI)J
lstore 0
4: goto 6
5: StackMap locals: int
StackMap stack:
lload 3
iload 6
invokestatic java.math.BigDecimal.longMultiplyPowerTen:(JI)J
lstore 3
6: StackMap locals:
StackMap stack:
lload 0
ldc -9223372036854775808
lcmp
ifeq 10
7: lload 3
ldc -9223372036854775808
lcmp
ifeq 8
lload 0
lload 3
invokestatic java.math.BigDecimal.longCompareMagnitude:(JJ)I
goto 9
StackMap locals:
StackMap stack:
8: iconst_m1
StackMap locals:
StackMap stack: int
9: ireturn
10: StackMap locals:
StackMap stack:
iconst_1
ireturn
end local 6 end local 5 end local 3 end local 2 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 11 0 xs J
0 11 2 xscale I
0 11 3 ys J
0 11 5 yscale I
1 11 6 sdiff I
MethodParameters:
Name Flags
xs
xscale
ys
yscale
private static int compareMagnitudeNormalized(long, int, java.math.BigInteger, int);
descriptor: (JILjava/math/BigInteger;I)I
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=4, locals=6, args_size=4
start local 0 start local 2 start local 3 start local 4 0: lload 0
lconst_0
lcmp
ifne 2
1: iconst_m1
ireturn
2: StackMap locals:
StackMap stack:
iload 2
iload 4
isub
istore 5
start local 5 3: iload 5
ifge 6
4: lload 0
iload 5
ineg
invokestatic java.math.BigDecimal.longMultiplyPowerTen:(JI)J
ldc -9223372036854775808
lcmp
ifne 6
5: lload 0
iload 5
ineg
invokestatic java.math.BigDecimal.bigMultiplyPowerTen:(JI)Ljava/math/BigInteger;
aload 3
invokevirtual java.math.BigInteger.compareMagnitude:(Ljava/math/BigInteger;)I
ireturn
6: StackMap locals: int
StackMap stack:
iconst_m1
ireturn
end local 5 end local 4 end local 3 end local 2 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 xs J
0 7 2 xscale I
0 7 3 ys Ljava/math/BigInteger;
0 7 4 yscale I
3 7 5 sdiff I
MethodParameters:
Name Flags
xs
xscale
ys
yscale
private static int compareMagnitudeNormalized(java.math.BigInteger, int, java.math.BigInteger, int);
descriptor: (Ljava/math/BigInteger;ILjava/math/BigInteger;I)I
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=3, locals=5, args_size=4
start local 0 start local 1 start local 2 start local 3 0: iload 1
iload 3
isub
istore 4
start local 4 1: iload 4
ifge 3
2: aload 0
iload 4
ineg
invokestatic java.math.BigDecimal.bigMultiplyPowerTen:(Ljava/math/BigInteger;I)Ljava/math/BigInteger;
aload 2
invokevirtual java.math.BigInteger.compareMagnitude:(Ljava/math/BigInteger;)I
ireturn
3: StackMap locals: int
StackMap stack:
aload 0
aload 2
iload 4
invokestatic java.math.BigDecimal.bigMultiplyPowerTen:(Ljava/math/BigInteger;I)Ljava/math/BigInteger;
invokevirtual java.math.BigInteger.compareMagnitude:(Ljava/math/BigInteger;)I
ireturn
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 xs Ljava/math/BigInteger;
0 4 1 xscale I
0 4 2 ys Ljava/math/BigInteger;
0 4 3 yscale I
1 4 4 sdiff I
MethodParameters:
Name Flags
xs
xscale
ys
yscale
private static long multiply(long, long);
descriptor: (JJ)J
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=4, locals=10, args_size=2
start local 0 start local 2 0: lload 0
lload 2
lmul
lstore 4
start local 4 1: lload 0
invokestatic java.lang.Math.abs:(J)J
lstore 6
start local 6 2: lload 2
invokestatic java.lang.Math.abs:(J)J
lstore 8
start local 8 3: lload 6
lload 8
lor
bipush 31
lushr
lconst_0
lcmp
ifeq 4
lload 2
lconst_0
lcmp
ifeq 4
lload 4
lload 2
ldiv
lload 0
lcmp
ifne 5
4: StackMap locals: long long long
StackMap stack:
lload 4
lreturn
5: StackMap locals:
StackMap stack:
ldc -9223372036854775808
lreturn
end local 8 end local 6 end local 4 end local 2 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 x J
0 6 2 y J
1 6 4 product J
2 6 6 ax J
3 6 8 ay J
MethodParameters:
Name Flags
x
y
private static java.math.BigDecimal multiply(long, long, int);
descriptor: (JJI)Ljava/math/BigDecimal;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=7, locals=7, args_size=3
start local 0 start local 2 start local 4 0: lload 0
lload 2
invokestatic java.math.BigDecimal.multiply:(JJ)J
lstore 5
start local 5 1: lload 5
ldc -9223372036854775808
lcmp
ifeq 3
2: lload 5
iload 4
invokestatic java.math.BigDecimal.valueOf:(JI)Ljava/math/BigDecimal;
areturn
3: StackMap locals: long
StackMap stack:
new java.math.BigDecimal
dup
lload 0
invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
lload 2
invokevirtual java.math.BigInteger.multiply:(J)Ljava/math/BigInteger;
ldc -9223372036854775808
iload 4
iconst_0
invokespecial java.math.BigDecimal.<init>:(Ljava/math/BigInteger;JII)V
areturn
end local 5 end local 4 end local 2 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 x J
0 4 2 y J
0 4 4 scale I
1 4 5 product J
MethodParameters:
Name Flags
x
y
scale
private static java.math.BigDecimal multiply(long, java.math.BigInteger, int);
descriptor: (JLjava/math/BigInteger;I)Ljava/math/BigDecimal;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=7, locals=4, args_size=3
start local 0 start local 2 start local 3 0: lload 0
lconst_0
lcmp
ifne 2
1: iload 3
invokestatic java.math.BigDecimal.zeroValueOf:(I)Ljava/math/BigDecimal;
areturn
2: StackMap locals:
StackMap stack:
new java.math.BigDecimal
dup
aload 2
lload 0
invokevirtual java.math.BigInteger.multiply:(J)Ljava/math/BigInteger;
ldc -9223372036854775808
iload 3
iconst_0
invokespecial java.math.BigDecimal.<init>:(Ljava/math/BigInteger;JII)V
areturn
end local 3 end local 2 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 x J
0 3 2 y Ljava/math/BigInteger;
0 3 3 scale I
MethodParameters:
Name Flags
x
y
scale
private static java.math.BigDecimal multiply(java.math.BigInteger, java.math.BigInteger, int);
descriptor: (Ljava/math/BigInteger;Ljava/math/BigInteger;I)Ljava/math/BigDecimal;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=7, locals=3, args_size=3
start local 0 start local 1 start local 2 0: new java.math.BigDecimal
dup
aload 0
aload 1
invokevirtual java.math.BigInteger.multiply:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
ldc -9223372036854775808
iload 2
iconst_0
invokespecial java.math.BigDecimal.<init>:(Ljava/math/BigInteger;JII)V
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 x Ljava/math/BigInteger;
0 1 1 y Ljava/math/BigInteger;
0 1 2 scale I
MethodParameters:
Name Flags
x
y
scale
private static java.math.BigDecimal multiplyAndRound(long, long, int, java.math.MathContext);
descriptor: (JJILjava/math/MathContext;)Ljava/math/BigDecimal;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=7, locals=30, args_size=4
start local 0 start local 2 start local 4 start local 5 0: lload 0
lload 2
invokestatic java.math.BigDecimal.multiply:(JJ)J
lstore 6
start local 6 1: lload 6
ldc -9223372036854775808
lcmp
ifeq 3
2: lload 6
iload 4
aload 5
invokestatic java.math.BigDecimal.doRound:(JILjava/math/MathContext;)Ljava/math/BigDecimal;
areturn
3: StackMap locals: long
StackMap stack:
iconst_1
istore 8
start local 8 4: lload 0
lconst_0
lcmp
ifge 7
5: lload 0
lneg
lstore 0
6: iconst_m1
istore 8
7: StackMap locals: int
StackMap stack:
lload 2
lconst_0
lcmp
ifge 10
8: lload 2
lneg
lstore 2
9: iload 8
iconst_m1
imul
istore 8
10: StackMap locals:
StackMap stack:
lload 0
bipush 32
lushr
lstore 9
start local 9 11: lload 0
ldc 4294967295
land
lstore 11
start local 11 12: lload 2
bipush 32
lushr
lstore 13
start local 13 13: lload 2
ldc 4294967295
land
lstore 15
start local 15 14: lload 11
lload 15
lmul
lstore 6
15: lload 6
ldc 4294967295
land
lstore 17
start local 17 16: lload 6
bipush 32
lushr
lstore 19
start local 19 17: lload 9
lload 15
lmul
lload 19
ladd
lstore 6
18: lload 6
ldc 4294967295
land
lstore 19
19: lload 6
bipush 32
lushr
lstore 21
start local 21 20: lload 11
lload 13
lmul
lload 19
ladd
lstore 6
21: lload 6
ldc 4294967295
land
lstore 19
22: lload 21
lload 6
bipush 32
lushr
ladd
lstore 21
23: lload 21
bipush 32
lushr
lstore 23
start local 23 24: lload 21
ldc 4294967295
land
lstore 21
25: lload 9
lload 13
lmul
lload 21
ladd
lstore 6
26: lload 6
ldc 4294967295
land
lstore 21
27: lload 6
bipush 32
lushr
lload 23
ladd
ldc 4294967295
land
lstore 23
28: lload 23
lload 21
invokestatic java.math.BigDecimal.make64:(JJ)J
lstore 25
start local 25 29: lload 19
lload 17
invokestatic java.math.BigDecimal.make64:(JJ)J
lstore 27
start local 27 30: lload 25
lload 27
iload 8
iload 4
aload 5
invokestatic java.math.BigDecimal.doRound128:(JJIILjava/math/MathContext;)Ljava/math/BigDecimal;
astore 29
start local 29 31: aload 29
ifnull 33
32: aload 29
areturn
33: StackMap locals: long long int java.math.MathContext long int long long long long long long long long long long java.math.BigDecimal
StackMap stack:
new java.math.BigDecimal
dup
lload 0
invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
lload 2
iload 8
i2l
lmul
invokevirtual java.math.BigInteger.multiply:(J)Ljava/math/BigInteger;
ldc -9223372036854775808
iload 4
iconst_0
invokespecial java.math.BigDecimal.<init>:(Ljava/math/BigInteger;JII)V
astore 29
34: aload 29
aload 5
invokestatic java.math.BigDecimal.doRound:(Ljava/math/BigDecimal;Ljava/math/MathContext;)Ljava/math/BigDecimal;
areturn
end local 29 end local 27 end local 25 end local 23 end local 21 end local 19 end local 17 end local 15 end local 13 end local 11 end local 9 end local 8 end local 6 end local 5 end local 4 end local 2 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 35 0 x J
0 35 2 y J
0 35 4 scale I
0 35 5 mc Ljava/math/MathContext;
1 35 6 product J
4 35 8 rsign I
11 35 9 m0_hi J
12 35 11 m0_lo J
13 35 13 m1_hi J
14 35 15 m1_lo J
16 35 17 m0 J
17 35 19 m1 J
20 35 21 m2 J
24 35 23 m3 J
29 35 25 mHi J
30 35 27 mLo J
31 35 29 res Ljava/math/BigDecimal;
MethodParameters:
Name Flags
x
y
scale
mc
private static java.math.BigDecimal multiplyAndRound(long, java.math.BigInteger, int, java.math.MathContext);
descriptor: (JLjava/math/BigInteger;ILjava/math/MathContext;)Ljava/math/BigDecimal;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=4, locals=5, args_size=4
start local 0 start local 2 start local 3 start local 4 0: lload 0
lconst_0
lcmp
ifne 2
1: iload 3
invokestatic java.math.BigDecimal.zeroValueOf:(I)Ljava/math/BigDecimal;
areturn
2: StackMap locals:
StackMap stack:
aload 2
lload 0
invokevirtual java.math.BigInteger.multiply:(J)Ljava/math/BigInteger;
iload 3
aload 4
invokestatic java.math.BigDecimal.doRound:(Ljava/math/BigInteger;ILjava/math/MathContext;)Ljava/math/BigDecimal;
areturn
end local 4 end local 3 end local 2 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 x J
0 3 2 y Ljava/math/BigInteger;
0 3 3 scale I
0 3 4 mc Ljava/math/MathContext;
MethodParameters:
Name Flags
x
y
scale
mc
private static java.math.BigDecimal multiplyAndRound(java.math.BigInteger, java.math.BigInteger, int, java.math.MathContext);
descriptor: (Ljava/math/BigInteger;Ljava/math/BigInteger;ILjava/math/MathContext;)Ljava/math/BigDecimal;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=3, locals=4, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 0
aload 1
invokevirtual java.math.BigInteger.multiply:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
iload 2
aload 3
invokestatic java.math.BigDecimal.doRound:(Ljava/math/BigInteger;ILjava/math/MathContext;)Ljava/math/BigDecimal;
areturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 x Ljava/math/BigInteger;
0 1 1 y Ljava/math/BigInteger;
0 1 2 scale I
0 1 3 mc Ljava/math/MathContext;
MethodParameters:
Name Flags
x
y
scale
mc
private static java.math.BigDecimal doRound128(long, long, int, int, java.math.MathContext);
descriptor: (JJIILjava/math/MathContext;)Ljava/math/BigDecimal;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=10, locals=10, args_size=5
start local 0 start local 2 start local 4 start local 5 start local 6 0: aload 6
getfield java.math.MathContext.precision:I
istore 7
start local 7 1: aconst_null
astore 9
start local 9 2: lload 0
lload 2
invokestatic java.math.BigDecimal.precision:(JJ)I
iload 7
isub
dup
istore 8
start local 8 3: ifle 6
iload 8
getstatic java.math.BigDecimal.LONG_TEN_POWERS_TABLE:[J
arraylength
if_icmpge 6
4: iload 5
i2l
iload 8
i2l
lsub
invokestatic java.math.BigDecimal.checkScaleNonZero:(J)I
istore 5
5: lload 0
lload 2
getstatic java.math.BigDecimal.LONG_TEN_POWERS_TABLE:[J
iload 8
laload
iload 4
iload 5
aload 6
getfield java.math.MathContext.roundingMode:Ljava/math/RoundingMode;
getfield java.math.RoundingMode.oldMode:I
iload 5
invokestatic java.math.BigDecimal.divideAndRound128:(JJJIIII)Ljava/math/BigDecimal;
astore 9
6: StackMap locals: int int java.math.BigDecimal
StackMap stack:
aload 9
ifnull 8
7: aload 9
aload 6
invokestatic java.math.BigDecimal.doRound:(Ljava/math/BigDecimal;Ljava/math/MathContext;)Ljava/math/BigDecimal;
areturn
8: StackMap locals:
StackMap stack:
aconst_null
areturn
end local 9 end local 8 end local 7 end local 6 end local 5 end local 4 end local 2 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 9 0 hi J
0 9 2 lo J
0 9 4 sign I
0 9 5 scale I
0 9 6 mc Ljava/math/MathContext;
1 9 7 mcp I
3 9 8 drop I
2 9 9 res Ljava/math/BigDecimal;
MethodParameters:
Name Flags
hi
lo
sign
scale
mc
private static int precision(long, long);
descriptor: (JJ)I
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=8, locals=6, args_size=2
start local 0 start local 2 0: lload 0
lconst_0
lcmp
ifne 6
1: lload 2
lconst_0
lcmp
iflt 3
2: lload 2
invokestatic java.math.BigDecimal.longDigitLength:(J)I
ireturn
3: StackMap locals:
StackMap stack:
lload 2
getstatic java.math.BigDecimal.LONGLONG_TEN_POWERS_TABLE:[[J
iconst_0
aaload
iconst_1
laload
invokestatic java.math.BigDecimal.unsignedLongCompareEq:(JJ)Z
ifeq 4
bipush 20
goto 5
StackMap locals:
StackMap stack:
4: bipush 19
StackMap locals:
StackMap stack: int
5: ireturn
6: StackMap locals:
StackMap stack:
sipush 128
lload 0
invokestatic java.lang.Long.numberOfLeadingZeros:(J)I
isub
iconst_1
iadd
sipush 1233
imul
bipush 12
iushr
istore 4
start local 4 7: iload 4
bipush 19
isub
istore 5
start local 5 8: iload 5
getstatic java.math.BigDecimal.LONGLONG_TEN_POWERS_TABLE:[[J
arraylength
if_icmpge 12
lload 0
lload 2
9: getstatic java.math.BigDecimal.LONGLONG_TEN_POWERS_TABLE:[[J
iload 5
aaload
iconst_0
laload
getstatic java.math.BigDecimal.LONGLONG_TEN_POWERS_TABLE:[[J
iload 5
aaload
iconst_1
laload
10: invokestatic java.math.BigDecimal.longLongCompareMagnitude:(JJJJ)Z
11: ifeq 13
StackMap locals: int int
StackMap stack:
12: iload 4
goto 14
StackMap locals:
StackMap stack:
13: iload 4
iconst_1
iadd
14: StackMap locals:
StackMap stack: int
ireturn
end local 5 end local 4 end local 2 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 15 0 hi J
0 15 2 lo J
7 15 4 r I
8 15 5 idx I
MethodParameters:
Name Flags
hi
lo
private static boolean longLongCompareMagnitude(long, long, long, long);
descriptor: (JJJJ)Z
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=6, locals=8, args_size=4
start local 0 start local 2 start local 4 start local 6 0: lload 0
lload 4
lcmp
ifeq 3
1: lload 0
lload 4
lcmp
ifge 2
iconst_1
ireturn
StackMap locals:
StackMap stack:
2: iconst_0
ireturn
3: StackMap locals:
StackMap stack:
lload 2
ldc -9223372036854775808
ladd
lload 6
ldc -9223372036854775808
ladd
lcmp
ifge 4
iconst_1
ireturn
StackMap locals:
StackMap stack:
4: iconst_0
ireturn
end local 6 end local 4 end local 2 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 hi0 J
0 5 2 lo0 J
0 5 4 hi1 J
0 5 6 lo1 J
MethodParameters:
Name Flags
hi0
lo0
hi1
lo1
private static java.math.BigDecimal divide(long, int, long, int, int, int);
descriptor: (JIJIII)Ljava/math/BigDecimal;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=9, locals=13, args_size=6
start local 0 start local 2 start local 3 start local 5 start local 6 start local 7 0: lload 0
iload 6
i2l
iload 5
i2l
ladd
invokestatic java.math.BigDecimal.checkScale:(JJ)I
iload 2
if_icmple 12
1: iload 6
iload 5
iadd
istore 8
start local 8 2: iload 8
iload 2
isub
istore 9
start local 9 3: iload 9
getstatic java.math.BigDecimal.LONG_TEN_POWERS_TABLE:[J
arraylength
if_icmpge 10
4: lload 0
lstore 10
start local 10 5: lload 10
iload 9
invokestatic java.math.BigDecimal.longMultiplyPowerTen:(JI)J
dup2
lstore 10
ldc -9223372036854775808
lcmp
ifeq 7
6: lload 10
lload 3
iload 6
iload 7
iload 6
invokestatic java.math.BigDecimal.divideAndRound:(JJIII)Ljava/math/BigDecimal;
areturn
7: StackMap locals: int int long
StackMap stack:
getstatic java.math.BigDecimal.LONG_TEN_POWERS_TABLE:[J
iload 9
laload
lload 0
lload 3
iload 6
iload 7
iload 6
invokestatic java.math.BigDecimal.multiplyDivideAndRound:(JJJIII)Ljava/math/BigDecimal;
astore 12
start local 12 8: aload 12
ifnull 10
9: aload 12
areturn
end local 12 end local 10 10: StackMap locals:
StackMap stack:
lload 0
iload 9
invokestatic java.math.BigDecimal.bigMultiplyPowerTen:(JI)Ljava/math/BigInteger;
astore 10
start local 10 11: aload 10
lload 3
iload 6
iload 7
iload 6
invokestatic java.math.BigDecimal.divideAndRound:(Ljava/math/BigInteger;JIII)Ljava/math/BigDecimal;
areturn
end local 10 end local 9 end local 8 12: StackMap locals:
StackMap stack:
lload 3
iload 2
i2l
iload 6
i2l
lsub
invokestatic java.math.BigDecimal.checkScale:(JJ)I
istore 8
start local 8 13: iload 8
iload 5
isub
istore 9
start local 9 14: iload 9
getstatic java.math.BigDecimal.LONG_TEN_POWERS_TABLE:[J
arraylength
if_icmpge 18
15: lload 3
lstore 10
start local 10 16: lload 10
iload 9
invokestatic java.math.BigDecimal.longMultiplyPowerTen:(JI)J
dup2
lstore 10
ldc -9223372036854775808
lcmp
ifeq 18
17: lload 0
lload 10
iload 6
iload 7
iload 6
invokestatic java.math.BigDecimal.divideAndRound:(JJIII)Ljava/math/BigDecimal;
areturn
end local 10 18: StackMap locals: int int
StackMap stack:
lload 3
iload 9
invokestatic java.math.BigDecimal.bigMultiplyPowerTen:(JI)Ljava/math/BigInteger;
astore 10
start local 10 19: lload 0
invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
aload 10
iload 6
iload 7
iload 6
invokestatic java.math.BigDecimal.divideAndRound:(Ljava/math/BigInteger;Ljava/math/BigInteger;III)Ljava/math/BigDecimal;
areturn
end local 10 end local 9 end local 8 end local 7 end local 6 end local 5 end local 3 end local 2 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 20 0 dividend J
0 20 2 dividendScale I
0 20 3 divisor J
0 20 5 divisorScale I
0 20 6 scale I
0 20 7 roundingMode I
2 12 8 newScale I
3 12 9 raise I
5 10 10 xs J
8 10 12 q Ljava/math/BigDecimal;
11 12 10 scaledDividend Ljava/math/BigInteger;
13 20 8 newScale I
14 20 9 raise I
16 18 10 ys J
19 20 10 scaledDivisor Ljava/math/BigInteger;
MethodParameters:
Name Flags
dividend
dividendScale
divisor
divisorScale
scale
roundingMode
private static java.math.BigDecimal divide(java.math.BigInteger, int, long, int, int, int);
descriptor: (Ljava/math/BigInteger;IJIII)Ljava/math/BigDecimal;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=6, locals=11, args_size=6
start local 0 start local 1 start local 2 start local 4 start local 5 start local 6 0: aload 0
iload 5
i2l
iload 4
i2l
ladd
invokestatic java.math.BigDecimal.checkScale:(Ljava/math/BigInteger;J)I
iload 1
if_icmple 5
1: iload 5
iload 4
iadd
istore 7
start local 7 2: iload 7
iload 1
isub
istore 8
start local 8 3: aload 0
iload 8
invokestatic java.math.BigDecimal.bigMultiplyPowerTen:(Ljava/math/BigInteger;I)Ljava/math/BigInteger;
astore 9
start local 9 4: aload 9
lload 2
iload 5
iload 6
iload 5
invokestatic java.math.BigDecimal.divideAndRound:(Ljava/math/BigInteger;JIII)Ljava/math/BigDecimal;
areturn
end local 9 end local 8 end local 7 5: StackMap locals:
StackMap stack:
lload 2
iload 1
i2l
iload 5
i2l
lsub
invokestatic java.math.BigDecimal.checkScale:(JJ)I
istore 7
start local 7 6: iload 7
iload 4
isub
istore 8
start local 8 7: iload 8
getstatic java.math.BigDecimal.LONG_TEN_POWERS_TABLE:[J
arraylength
if_icmpge 11
8: lload 2
lstore 9
start local 9 9: lload 9
iload 8
invokestatic java.math.BigDecimal.longMultiplyPowerTen:(JI)J
dup2
lstore 9
ldc -9223372036854775808
lcmp
ifeq 11
10: aload 0
lload 9
iload 5
iload 6
iload 5
invokestatic java.math.BigDecimal.divideAndRound:(Ljava/math/BigInteger;JIII)Ljava/math/BigDecimal;
areturn
end local 9 11: StackMap locals: int int
StackMap stack:
lload 2
iload 8
invokestatic java.math.BigDecimal.bigMultiplyPowerTen:(JI)Ljava/math/BigInteger;
astore 9
start local 9 12: aload 0
aload 9
iload 5
iload 6
iload 5
invokestatic java.math.BigDecimal.divideAndRound:(Ljava/math/BigInteger;Ljava/math/BigInteger;III)Ljava/math/BigDecimal;
areturn
end local 9 end local 8 end local 7 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 13 0 dividend Ljava/math/BigInteger;
0 13 1 dividendScale I
0 13 2 divisor J
0 13 4 divisorScale I
0 13 5 scale I
0 13 6 roundingMode I
2 5 7 newScale I
3 5 8 raise I
4 5 9 scaledDividend Ljava/math/BigInteger;
6 13 7 newScale I
7 13 8 raise I
9 11 9 ys J
12 13 9 scaledDivisor Ljava/math/BigInteger;
MethodParameters:
Name Flags
dividend
dividendScale
divisor
divisorScale
scale
roundingMode
private static java.math.BigDecimal divide(long, int, java.math.BigInteger, int, int, int);
descriptor: (JILjava/math/BigInteger;III)Ljava/math/BigDecimal;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=6, locals=10, args_size=6
start local 0 start local 2 start local 3 start local 4 start local 5 start local 6 0: lload 0
iload 5
i2l
iload 4
i2l
ladd
invokestatic java.math.BigDecimal.checkScale:(JJ)I
iload 2
if_icmple 5
1: iload 5
iload 4
iadd
istore 7
start local 7 2: iload 7
iload 2
isub
istore 8
start local 8 3: lload 0
iload 8
invokestatic java.math.BigDecimal.bigMultiplyPowerTen:(JI)Ljava/math/BigInteger;
astore 9
start local 9 4: aload 9
aload 3
iload 5
iload 6
iload 5
invokestatic java.math.BigDecimal.divideAndRound:(Ljava/math/BigInteger;Ljava/math/BigInteger;III)Ljava/math/BigDecimal;
areturn
end local 9 end local 8 end local 7 5: StackMap locals:
StackMap stack:
aload 3
iload 2
i2l
iload 5
i2l
lsub
invokestatic java.math.BigDecimal.checkScale:(Ljava/math/BigInteger;J)I
istore 7
start local 7 6: iload 7
iload 4
isub
istore 8
start local 8 7: aload 3
iload 8
invokestatic java.math.BigDecimal.bigMultiplyPowerTen:(Ljava/math/BigInteger;I)Ljava/math/BigInteger;
astore 9
start local 9 8: lload 0
invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
aload 9
iload 5
iload 6
iload 5
invokestatic java.math.BigDecimal.divideAndRound:(Ljava/math/BigInteger;Ljava/math/BigInteger;III)Ljava/math/BigDecimal;
areturn
end local 9 end local 8 end local 7 end local 6 end local 5 end local 4 end local 3 end local 2 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 9 0 dividend J
0 9 2 dividendScale I
0 9 3 divisor Ljava/math/BigInteger;
0 9 4 divisorScale I
0 9 5 scale I
0 9 6 roundingMode I
2 5 7 newScale I
3 5 8 raise I
4 5 9 scaledDividend Ljava/math/BigInteger;
6 9 7 newScale I
7 9 8 raise I
8 9 9 scaledDivisor Ljava/math/BigInteger;
MethodParameters:
Name Flags
dividend
dividendScale
divisor
divisorScale
scale
roundingMode
private static java.math.BigDecimal divide(java.math.BigInteger, int, java.math.BigInteger, int, int, int);
descriptor: (Ljava/math/BigInteger;ILjava/math/BigInteger;III)Ljava/math/BigDecimal;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=5, locals=9, args_size=6
start local 0 start local 1 start local 2 start local 3 start local 4 start local 5 0: aload 0
iload 4
i2l
iload 3
i2l
ladd
invokestatic java.math.BigDecimal.checkScale:(Ljava/math/BigInteger;J)I
iload 1
if_icmple 5
1: iload 4
iload 3
iadd
istore 6
start local 6 2: iload 6
iload 1
isub
istore 7
start local 7 3: aload 0
iload 7
invokestatic java.math.BigDecimal.bigMultiplyPowerTen:(Ljava/math/BigInteger;I)Ljava/math/BigInteger;
astore 8
start local 8 4: aload 8
aload 2
iload 4
iload 5
iload 4
invokestatic java.math.BigDecimal.divideAndRound:(Ljava/math/BigInteger;Ljava/math/BigInteger;III)Ljava/math/BigDecimal;
areturn
end local 8 end local 7 end local 6 5: StackMap locals:
StackMap stack:
aload 2
iload 1
i2l
iload 4
i2l
lsub
invokestatic java.math.BigDecimal.checkScale:(Ljava/math/BigInteger;J)I
istore 6
start local 6 6: iload 6
iload 3
isub
istore 7
start local 7 7: aload 2
iload 7
invokestatic java.math.BigDecimal.bigMultiplyPowerTen:(Ljava/math/BigInteger;I)Ljava/math/BigInteger;
astore 8
start local 8 8: aload 0
aload 8
iload 4
iload 5
iload 4
invokestatic java.math.BigDecimal.divideAndRound:(Ljava/math/BigInteger;Ljava/math/BigInteger;III)Ljava/math/BigDecimal;
areturn
end local 8 end local 7 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 9 0 dividend Ljava/math/BigInteger;
0 9 1 dividendScale I
0 9 2 divisor Ljava/math/BigInteger;
0 9 3 divisorScale I
0 9 4 scale I
0 9 5 roundingMode I
2 5 6 newScale I
3 5 7 raise I
4 5 8 scaledDividend Ljava/math/BigInteger;
6 9 6 newScale I
7 9 7 raise I
8 9 8 scaledDivisor Ljava/math/BigInteger;
MethodParameters:
Name Flags
dividend
dividendScale
divisor
divisorScale
scale
roundingMode
public int compareTo(java.lang.Object);
descriptor: (Ljava/lang/Object;)I
flags: (0x1041) ACC_PUBLIC, ACC_BRIDGE, ACC_SYNTHETIC
Code:
stack=2, locals=2, args_size=2
0: aload 0
aload 1
checkcast java.math.BigDecimal
invokevirtual java.math.BigDecimal.compareTo:(Ljava/math/BigDecimal;)I
ireturn
LocalVariableTable:
Start End Slot Name Signature
static int[] $SWITCH_TABLE$java$math$RoundingMode();
descriptor: ()[I
flags: (0x1008) ACC_STATIC, ACC_SYNTHETIC
Code:
stack=3, locals=1, args_size=0
0: getstatic java.math.BigDecimal.$SWITCH_TABLE$java$math$RoundingMode:[I
dup
ifnull 1
areturn
StackMap locals:
StackMap stack: int[]
1: pop
invokestatic java.math.RoundingMode.values:()[Ljava/math/RoundingMode;
arraylength
newarray 10
astore 0
2: aload 0
getstatic java.math.RoundingMode.CEILING:Ljava/math/RoundingMode;
invokevirtual java.math.RoundingMode.ordinal:()I
iconst_3
iastore
3: goto 5
StackMap locals: int[]
StackMap stack: java.lang.NoSuchFieldError
4: pop
StackMap locals:
StackMap stack:
5: aload 0
getstatic java.math.RoundingMode.DOWN:Ljava/math/RoundingMode;
invokevirtual java.math.RoundingMode.ordinal:()I
iconst_2
iastore
6: goto 8
StackMap locals:
StackMap stack: java.lang.NoSuchFieldError
7: pop
StackMap locals:
StackMap stack:
8: aload 0
getstatic java.math.RoundingMode.FLOOR:Ljava/math/RoundingMode;
invokevirtual java.math.RoundingMode.ordinal:()I
iconst_4
iastore
9: goto 11
StackMap locals:
StackMap stack: java.lang.NoSuchFieldError
10: pop
StackMap locals:
StackMap stack:
11: aload 0
getstatic java.math.RoundingMode.HALF_DOWN:Ljava/math/RoundingMode;
invokevirtual java.math.RoundingMode.ordinal:()I
bipush 6
iastore
12: goto 14
StackMap locals:
StackMap stack: java.lang.NoSuchFieldError
13: pop
StackMap locals:
StackMap stack:
14: aload 0
getstatic java.math.RoundingMode.HALF_EVEN:Ljava/math/RoundingMode;
invokevirtual java.math.RoundingMode.ordinal:()I
bipush 7
iastore
15: goto 17
StackMap locals:
StackMap stack: java.lang.NoSuchFieldError
16: pop
StackMap locals:
StackMap stack:
17: aload 0
getstatic java.math.RoundingMode.HALF_UP:Ljava/math/RoundingMode;
invokevirtual java.math.RoundingMode.ordinal:()I
iconst_5
iastore
18: goto 20
StackMap locals:
StackMap stack: java.lang.NoSuchFieldError
19: pop
StackMap locals:
StackMap stack:
20: aload 0
getstatic java.math.RoundingMode.UNNECESSARY:Ljava/math/RoundingMode;
invokevirtual java.math.RoundingMode.ordinal:()I
bipush 8
iastore
21: goto 23
StackMap locals:
StackMap stack: java.lang.NoSuchFieldError
22: pop
StackMap locals:
StackMap stack:
23: aload 0
getstatic java.math.RoundingMode.UP:Ljava/math/RoundingMode;
invokevirtual java.math.RoundingMode.ordinal:()I
iconst_1
iastore
24: goto 26
StackMap locals:
StackMap stack: java.lang.NoSuchFieldError
25: pop
StackMap locals:
StackMap stack:
26: aload 0
dup
putstatic java.math.BigDecimal.$SWITCH_TABLE$java$math$RoundingMode:[I
areturn
LocalVariableTable:
Start End Slot Name Signature
Exception table:
from to target type
2 3 4 Class java.lang.NoSuchFieldError
5 6 7 Class java.lang.NoSuchFieldError
8 9 10 Class java.lang.NoSuchFieldError
11 12 13 Class java.lang.NoSuchFieldError
14 15 16 Class java.lang.NoSuchFieldError
17 18 19 Class java.lang.NoSuchFieldError
20 21 22 Class java.lang.NoSuchFieldError
23 24 25 Class java.lang.NoSuchFieldError
}
Signature: Ljava/lang/Number;Ljava/lang/Comparable<Ljava/math/BigDecimal;>;
SourceFile: "BigDecimal.java"
NestMembers:
java.math.BigDecimal$1 java.math.BigDecimal$LongOverflow java.math.BigDecimal$StringBuilderHelper java.math.BigDecimal$UnsafeHolder
InnerClasses:
java.math.BigDecimal$1
private LongOverflow = java.math.BigDecimal$LongOverflow of java.math.BigDecimal
StringBuilderHelper = java.math.BigDecimal$StringBuilderHelper of java.math.BigDecimal
private UnsafeHolder = java.math.BigDecimal$UnsafeHolder of java.math.BigDecimal