class org.jruby.ext.bigdecimal.Multiplication
minor version: 0
major version: 59
flags: flags: (0x0020) ACC_SUPER
this_class: org.jruby.ext.bigdecimal.Multiplication
super_class: java.lang.Object
{
static final java.math.BigInteger FIVE;
descriptor: Ljava/math/BigInteger;
flags: (0x0018) ACC_STATIC, ACC_FINAL
static final java.math.BigInteger[] bigTenPows;
descriptor: [Ljava/math/BigInteger;
flags: (0x0018) ACC_STATIC, ACC_FINAL
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=5, locals=1, args_size=0
0: .line 31
ldc 5
invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
putstatic org.jruby.ext.bigdecimal.Multiplication.FIVE:Ljava/math/BigInteger;
1: .line 37
bipush 32
anewarray java.math.BigInteger
putstatic org.jruby.ext.bigdecimal.Multiplication.bigTenPows:[Ljava/math/BigInteger;
2: .line 40
getstatic org.jruby.ext.bigdecimal.Multiplication.bigTenPows:[Ljava/math/BigInteger;
iconst_0
getstatic java.math.BigInteger.ONE:Ljava/math/BigInteger;
aastore
3: .line 41
getstatic org.jruby.ext.bigdecimal.Multiplication.bigTenPows:[Ljava/math/BigInteger;
iconst_1
getstatic java.math.BigInteger.TEN:Ljava/math/BigInteger;
aastore
4: .line 42
getstatic org.jruby.ext.bigdecimal.Multiplication.bigTenPows:[Ljava/math/BigInteger;
iconst_2
ldc 100
invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
aastore
5: .line 43
getstatic org.jruby.ext.bigdecimal.Multiplication.bigTenPows:[Ljava/math/BigInteger;
iconst_3
ldc 1000
invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
aastore
6: .line 44
getstatic org.jruby.ext.bigdecimal.Multiplication.bigTenPows:[Ljava/math/BigInteger;
iconst_4
ldc 10000
invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
aastore
7: .line 45
getstatic org.jruby.ext.bigdecimal.Multiplication.bigTenPows:[Ljava/math/BigInteger;
iconst_5
ldc 100000
invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
aastore
8: .line 46
getstatic org.jruby.ext.bigdecimal.Multiplication.bigTenPows:[Ljava/math/BigInteger;
bipush 6
ldc 1000000
invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
aastore
9: .line 47
getstatic org.jruby.ext.bigdecimal.Multiplication.bigTenPows:[Ljava/math/BigInteger;
bipush 7
ldc 10000000
invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
aastore
10: .line 48
getstatic org.jruby.ext.bigdecimal.Multiplication.bigTenPows:[Ljava/math/BigInteger;
bipush 8
ldc 100000000
invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
aastore
11: .line 49
getstatic org.jruby.ext.bigdecimal.Multiplication.bigTenPows:[Ljava/math/BigInteger;
bipush 9
ldc 1000000000
invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
aastore
12: .line 50
getstatic org.jruby.ext.bigdecimal.Multiplication.bigTenPows:[Ljava/math/BigInteger;
bipush 10
ldc 10000000000
invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
aastore
13: .line 51
getstatic org.jruby.ext.bigdecimal.Multiplication.bigTenPows:[Ljava/math/BigInteger;
bipush 11
ldc 100000000000
invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
aastore
14: .line 52
getstatic org.jruby.ext.bigdecimal.Multiplication.bigTenPows:[Ljava/math/BigInteger;
bipush 12
ldc 1000000000000
invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
aastore
15: .line 53
getstatic org.jruby.ext.bigdecimal.Multiplication.bigTenPows:[Ljava/math/BigInteger;
bipush 13
ldc 10000000000000
invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
aastore
16: .line 54
getstatic org.jruby.ext.bigdecimal.Multiplication.bigTenPows:[Ljava/math/BigInteger;
bipush 14
ldc 100000000000000
invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
aastore
17: .line 55
getstatic org.jruby.ext.bigdecimal.Multiplication.bigTenPows:[Ljava/math/BigInteger;
bipush 15
ldc 1000000000000000
invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
aastore
18: .line 56
getstatic org.jruby.ext.bigdecimal.Multiplication.bigTenPows:[Ljava/math/BigInteger;
bipush 16
ldc 10000000000000000
invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
aastore
19: .line 57
getstatic org.jruby.ext.bigdecimal.Multiplication.bigTenPows:[Ljava/math/BigInteger;
bipush 17
ldc 100000000000000000
invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
aastore
20: .line 58
getstatic org.jruby.ext.bigdecimal.Multiplication.bigTenPows:[Ljava/math/BigInteger;
bipush 18
ldc 1000000000000000000
invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
aastore
21: .line 59
bipush 19
istore 0 /* i */
start local 0 // int i
22: goto 25
23: .line 60
StackMap locals: int
StackMap stack:
getstatic org.jruby.ext.bigdecimal.Multiplication.bigTenPows:[Ljava/math/BigInteger;
iload 0 /* i */
getstatic org.jruby.ext.bigdecimal.Multiplication.bigTenPows:[Ljava/math/BigInteger;
iload 0 /* i */
iconst_1
isub
aaload
getstatic java.math.BigInteger.TEN:Ljava/math/BigInteger;
invokevirtual java.math.BigInteger.multiply:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
aastore
24: .line 59
iinc 0 /* i */ 1
StackMap locals:
StackMap stack:
25: iload 0 /* i */
getstatic org.jruby.ext.bigdecimal.Multiplication.bigTenPows:[Ljava/math/BigInteger;
arraylength
if_icmplt 23
end local 0 // int i
26: .line 62
return
LocalVariableTable:
Start End Slot Name Signature
22 26 0 i I
private void <init>();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=1, locals=1, args_size=1
start local 0 // org.jruby.ext.bigdecimal.Multiplication this
0: .line 29
aload 0 /* this */
invokespecial java.lang.Object.<init>:()V
return
end local 0 // org.jruby.ext.bigdecimal.Multiplication this
LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/jruby/ext/bigdecimal/Multiplication;
static java.math.BigInteger powerOf10(long);
descriptor: (J)Ljava/math/BigInteger;
flags: (0x0008) ACC_STATIC
Code:
stack=4, locals=7, args_size=1
start local 0 // long exp
0: .line 73
lload 0 /* exp */
l2i
istore 2 /* intExp */
start local 2 // int intExp
1: .line 75
lload 0 /* exp */
getstatic org.jruby.ext.bigdecimal.Multiplication.bigTenPows:[Ljava/math/BigInteger;
arraylength
i2l
lcmp
ifge 3
2: .line 77
getstatic org.jruby.ext.bigdecimal.Multiplication.bigTenPows:[Ljava/math/BigInteger;
iload 2 /* intExp */
aaload
areturn
3: .line 78
StackMap locals: int
StackMap stack:
lload 0 /* exp */
ldc 50
lcmp
ifgt 5
4: .line 80
getstatic java.math.BigInteger.TEN:Ljava/math/BigInteger;
iload 2 /* intExp */
invokevirtual java.math.BigInteger.pow:(I)Ljava/math/BigInteger;
areturn
5: .line 85
StackMap locals:
StackMap stack:
lload 0 /* exp */
ldc 2147483647
lcmp
ifgt 8
6: .line 87
getstatic org.jruby.ext.bigdecimal.Multiplication.FIVE:Ljava/math/BigInteger;
iload 2 /* intExp */
invokevirtual java.math.BigInteger.pow:(I)Ljava/math/BigInteger;
iload 2 /* intExp */
invokevirtual java.math.BigInteger.shiftLeft:(I)Ljava/math/BigInteger;
astore 3 /* res */
start local 3 // java.math.BigInteger res
7: .line 88
goto 27
end local 3 // java.math.BigInteger res
8: .line 96
StackMap locals:
StackMap stack:
getstatic org.jruby.ext.bigdecimal.Multiplication.FIVE:Ljava/math/BigInteger;
ldc 2147483647
invokevirtual java.math.BigInteger.pow:(I)Ljava/math/BigInteger;
astore 4 /* powerOfFive */
start local 4 // java.math.BigInteger powerOfFive
9: .line 97
aload 4 /* powerOfFive */
astore 3 /* res */
start local 3 // java.math.BigInteger res
10: .line 98
lload 0 /* exp */
ldc 2147483647
lsub
lstore 5 /* longExp */
start local 5 // long longExp
11: .line 99
lload 0 /* exp */
ldc 2147483647
lrem
l2i
istore 2 /* intExp */
12: .line 100
goto 15
13: .line 101
StackMap locals: java.math.BigInteger java.math.BigInteger long
StackMap stack:
aload 3 /* res */
aload 4 /* powerOfFive */
invokevirtual java.math.BigInteger.multiply:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
astore 3 /* res */
14: .line 102
lload 5 /* longExp */
ldc 2147483647
lsub
lstore 5 /* longExp */
15: .line 100
StackMap locals:
StackMap stack:
lload 5 /* longExp */
ldc 2147483647
lcmp
ifgt 13
16: .line 104
aload 3 /* res */
getstatic org.jruby.ext.bigdecimal.Multiplication.FIVE:Ljava/math/BigInteger;
iload 2 /* intExp */
invokevirtual java.math.BigInteger.pow:(I)Ljava/math/BigInteger;
invokevirtual java.math.BigInteger.multiply:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
astore 3 /* res */
17: .line 106
aload 3 /* res */
ldc 2147483647
invokevirtual java.math.BigInteger.shiftLeft:(I)Ljava/math/BigInteger;
astore 3 /* res */
18: .line 107
lload 0 /* exp */
ldc 2147483647
lsub
lstore 5 /* longExp */
19: .line 108
goto 22
20: .line 109
StackMap locals:
StackMap stack:
aload 3 /* res */
ldc 2147483647
invokevirtual java.math.BigInteger.shiftLeft:(I)Ljava/math/BigInteger;
astore 3 /* res */
21: .line 110
lload 5 /* longExp */
ldc 2147483647
lsub
lstore 5 /* longExp */
22: .line 108
StackMap locals:
StackMap stack:
lload 5 /* longExp */
ldc 2147483647
lcmp
ifgt 20
23: .line 112
aload 3 /* res */
iload 2 /* intExp */
invokevirtual java.math.BigInteger.shiftLeft:(I)Ljava/math/BigInteger;
astore 3 /* res */
end local 5 // long longExp
end local 4 // java.math.BigInteger powerOfFive
24: .line 114
goto 27
end local 3 // java.math.BigInteger res
StackMap locals: long int
StackMap stack: java.lang.OutOfMemoryError
25: astore 4 /* error */
start local 4 // java.lang.OutOfMemoryError error
26: .line 115
new java.lang.ArithmeticException
dup
aload 4 /* error */
invokevirtual java.lang.OutOfMemoryError.getMessage:()Ljava/lang/String;
invokespecial java.lang.ArithmeticException.<init>:(Ljava/lang/String;)V
athrow
end local 4 // java.lang.OutOfMemoryError error
start local 3 // java.math.BigInteger res
27: .line 117
StackMap locals: java.math.BigInteger
StackMap stack:
aload 3 /* res */
areturn
end local 3 // java.math.BigInteger res
end local 2 // int intExp
end local 0 // long exp
LocalVariableTable:
Start End Slot Name Signature
0 28 0 exp J
1 28 2 intExp I
7 8 3 res Ljava/math/BigInteger;
10 25 3 res Ljava/math/BigInteger;
27 28 3 res Ljava/math/BigInteger;
9 24 4 powerOfFive Ljava/math/BigInteger;
11 24 5 longExp J
26 27 4 error Ljava/lang/OutOfMemoryError;
Exception table:
from to target type
5 24 25 Class java.lang.OutOfMemoryError
MethodParameters:
Name Flags
exp
}
SourceFile: "Multiplication.java"