public abstract class com.oracle.truffle.js.builtins.math.Log2Node extends com.oracle.truffle.js.builtins.math.MathOperation
minor version: 0
major version: 59
flags: flags: (0x0421) ACC_PUBLIC, ACC_SUPER, ACC_ABSTRACT
this_class: com.oracle.truffle.js.builtins.math.Log2Node
super_class: com.oracle.truffle.js.builtins.math.MathOperation
{
public void <init>(com.oracle.truffle.js.runtime.JSContext, com.oracle.truffle.js.nodes.function.JSBuiltin);
descriptor: (Lcom/oracle/truffle/js/runtime/JSContext;Lcom/oracle/truffle/js/nodes/function/JSBuiltin;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=3, args_size=3
start local 0 // com.oracle.truffle.js.builtins.math.Log2Node this
start local 1 // com.oracle.truffle.js.runtime.JSContext context
start local 2 // com.oracle.truffle.js.nodes.function.JSBuiltin builtin
0: .line 60
aload 0 /* this */
aload 1 /* context */
aload 2 /* builtin */
invokespecial com.oracle.truffle.js.builtins.math.MathOperation.<init>:(Lcom/oracle/truffle/js/runtime/JSContext;Lcom/oracle/truffle/js/nodes/function/JSBuiltin;)V
1: .line 61
return
end local 2 // com.oracle.truffle.js.nodes.function.JSBuiltin builtin
end local 1 // com.oracle.truffle.js.runtime.JSContext context
end local 0 // com.oracle.truffle.js.builtins.math.Log2Node this
LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lcom/oracle/truffle/js/builtins/math/Log2Node;
0 2 1 context Lcom/oracle/truffle/js/runtime/JSContext;
0 2 2 builtin Lcom/oracle/truffle/js/nodes/function/JSBuiltin;
MethodParameters:
Name Flags
context
builtin
private static double lowBits(double, int);
descriptor: (DI)D
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=4, locals=5, args_size=2
start local 0 // double x
start local 2 // int low
0: .line 68
dload 0 /* x */
invokestatic java.lang.Double.doubleToRawLongBits:(D)J
lstore 3 /* transX */
start local 3 // long transX
1: .line 69
lload 3 /* transX */
ldc -4294967296
land
iload 2 /* low */
i2l
lor
invokestatic java.lang.Double.longBitsToDouble:(J)D
dreturn
end local 3 // long transX
end local 2 // int low
end local 0 // double x
LocalVariableTable:
Start End Slot Name Signature
0 2 0 x D
0 2 2 low I
1 2 3 transX J
MethodParameters:
Name Flags
x
low
private static int highBits(double);
descriptor: (D)I
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=3, locals=4, args_size=1
start local 0 // double x
0: .line 76
dload 0 /* x */
invokestatic java.lang.Double.doubleToRawLongBits:(D)J
lstore 2 /* transducer */
start local 2 // long transducer
1: .line 77
lload 2 /* transducer */
bipush 32
lshr
l2i
ireturn
end local 2 // long transducer
end local 0 // double x
LocalVariableTable:
Start End Slot Name Signature
0 2 0 x D
1 2 2 transducer J
MethodParameters:
Name Flags
x
private static double highBits(double, int);
descriptor: (DI)D
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=5, locals=5, args_size=2
start local 0 // double x
start local 2 // int high
0: .line 85
dload 0 /* x */
invokestatic java.lang.Double.doubleToRawLongBits:(D)J
lstore 3 /* transX */
start local 3 // long transX
1: .line 86
lload 3 /* transX */
ldc 4294967295
land
iload 2 /* high */
i2l
bipush 32
lshl
lor
invokestatic java.lang.Double.longBitsToDouble:(J)D
dreturn
end local 3 // long transX
end local 2 // int high
end local 0 // double x
LocalVariableTable:
Start End Slot Name Signature
0 2 0 x D
0 2 2 high I
1 2 3 transX J
MethodParameters:
Name Flags
x
high
private static strict double log2Impl(double);
descriptor: (D)D
flags: (0x080a) ACC_PRIVATE, ACC_STATIC, ACC_STRICT
Code:
stack=24, locals=44, args_size=1
start local 0 // double x
0: .line 100
dload 0 /* x */
invokestatic java.lang.Math.abs:(D)D
dstore 2 /* xAbs */
start local 2 // double xAbs
1: .line 101
dload 0 /* x */
invokestatic com.oracle.truffle.js.builtins.math.Log2Node.highBits:(D)I
istore 4 /* hx */
start local 4 // int hx
2: .line 102
iload 4 /* hx */
ldc 2147483647
iand
istore 5 /* ix */
start local 5 // int ix
3: .line 108
iconst_0
istore 6 /* n */
start local 6 // int n
4: .line 110
iload 5 /* ix */
ldc 1048576
if_icmpge 8
5: .line 111
dload 2 /* xAbs */
ldc 9.007199254740992E15
dmul
dstore 2 /* xAbs */
6: .line 112
iinc 6 /* n */ -53
7: .line 113
dload 2 /* xAbs */
invokestatic com.oracle.truffle.js.builtins.math.Log2Node.highBits:(D)I
istore 5 /* ix */
8: .line 115
StackMap locals: double double int int int
StackMap stack:
iload 6 /* n */
iload 5 /* ix */
bipush 20
ishr
sipush 1023
isub
iadd
istore 6 /* n */
9: .line 116
iload 5 /* ix */
ldc 1048575
iand
istore 7 /* j */
start local 7 // int j
10: .line 118
iload 7 /* j */
ldc 1072693248
ior
istore 5 /* ix */
11: .line 120
iload 7 /* j */
ldc 235662
if_icmpgt 14
12: .line 121
iconst_0
istore 8 /* k */
start local 8 // int k
13: .line 122
goto 20
end local 8 // int k
StackMap locals: int
StackMap stack:
14: iload 7 /* j */
ldc 767610
if_icmpge 17
15: .line 123
iconst_1
istore 8 /* k */
start local 8 // int k
16: .line 124
goto 20
end local 8 // int k
17: .line 125
StackMap locals:
StackMap stack:
iconst_0
istore 8 /* k */
start local 8 // int k
18: .line 126
iinc 6 /* n */ 1
19: .line 127
iload 5 /* ix */
ldc 1048576
isub
istore 5 /* ix */
20: .line 129
StackMap locals: int
StackMap stack:
dload 2 /* xAbs */
iload 5 /* ix */
invokestatic com.oracle.truffle.js.builtins.math.Log2Node.highBits:(DI)D
dstore 2 /* xAbs */
21: .line 133
iconst_2
newarray 7
dup
iconst_0
dconst_1
dastore
dup
iconst_1
ldc 1.5
dastore
astore 9 /* bp */
start local 9 // double[] bp
22: .line 134
iconst_2
newarray 7
dup
iconst_0
dconst_0
dastore
dup
iconst_1
ldc 0.5849624872207642
dastore
astore 10 /* dph */
start local 10 // double[] dph
23: .line 135
iconst_2
newarray 7
dup
iconst_0
dconst_0
dastore
dup
iconst_1
ldc 1.350039202129749E-8
dastore
astore 11 /* dpl */
start local 11 // double[] dpl
24: .line 144
dload 2 /* xAbs */
aload 9 /* bp */
iload 8 /* k */
daload
dsub
dstore 12 /* u */
start local 12 // double u
25: .line 145
dconst_1
dload 2 /* xAbs */
aload 9 /* bp */
iload 8 /* k */
daload
dadd
ddiv
dstore 14 /* v */
start local 14 // double v
26: .line 146
dload 12 /* u */
dload 14 /* v */
dmul
dstore 16 /* ss */
start local 16 // double ss
27: .line 147
dload 16 /* ss */
dstore 18 /* sh */
start local 18 // double sh
28: .line 148
dload 18 /* sh */
iconst_0
invokestatic com.oracle.truffle.js.builtins.math.Log2Node.lowBits:(DI)D
dstore 18 /* sh */
29: .line 150
dconst_0
dstore 20 /* th */
start local 20 // double th
30: .line 151
dload 20 /* th */
iload 5 /* ix */
iconst_1
ishr
ldc 536870912
ior
ldc 524288
iadd
iload 8 /* k */
bipush 18
ishl
iadd
invokestatic com.oracle.truffle.js.builtins.math.Log2Node.highBits:(DI)D
dstore 20 /* th */
31: .line 152
dload 2 /* xAbs */
dload 20 /* th */
aload 9 /* bp */
iload 8 /* k */
daload
dsub
dsub
dstore 22 /* tl */
start local 22 // double tl
32: .line 153
dload 14 /* v */
dload 12 /* u */
dload 18 /* sh */
dload 20 /* th */
dmul
dsub
dload 18 /* sh */
dload 22 /* tl */
dmul
dsub
dmul
dstore 24 /* sl */
start local 24 // double sl
33: .line 155
dload 16 /* ss */
dload 16 /* ss */
dmul
dstore 26 /* s2 */
start local 26 // double s2
34: .line 156
dload 26 /* s2 */
dload 26 /* s2 */
dmul
ldc 0.5999999999999946
dload 26 /* s2 */
ldc 0.4285714285785502
dload 26 /* s2 */
ldc 0.33333332981837743
dload 26 /* s2 */
ldc 0.272728123808534
dload 26 /* s2 */
ldc 0.23066074577556175
dload 26 /* s2 */
ldc 0.20697501780033842
dmul
dadd
dmul
dadd
dmul
dadd
dmul
dadd
dmul
dadd
dmul
dstore 28 /* r */
start local 28 // double r
35: .line 157
dload 28 /* r */
dload 24 /* sl */
dload 18 /* sh */
dload 16 /* ss */
dadd
dmul
dadd
dstore 28 /* r */
36: .line 158
dload 18 /* sh */
dload 18 /* sh */
dmul
dstore 26 /* s2 */
37: .line 159
ldc 3.0
dload 26 /* s2 */
dadd
dload 28 /* r */
dadd
dstore 20 /* th */
38: .line 160
dload 20 /* th */
iconst_0
invokestatic com.oracle.truffle.js.builtins.math.Log2Node.lowBits:(DI)D
dstore 20 /* th */
39: .line 161
dload 28 /* r */
dload 20 /* th */
ldc 3.0
dsub
dload 26 /* s2 */
dsub
dsub
dstore 22 /* tl */
40: .line 163
dload 18 /* sh */
dload 20 /* th */
dmul
dstore 12 /* u */
41: .line 164
dload 24 /* sl */
dload 20 /* th */
dmul
dload 22 /* tl */
dload 16 /* ss */
dmul
dadd
dstore 14 /* v */
42: .line 166
dload 12 /* u */
dload 14 /* v */
dadd
dstore 30 /* ph */
start local 30 // double ph
43: .line 167
dload 30 /* ph */
iconst_0
invokestatic com.oracle.truffle.js.builtins.math.Log2Node.lowBits:(DI)D
dstore 30 /* ph */
44: .line 168
dload 14 /* v */
dload 30 /* ph */
dload 12 /* u */
dsub
dsub
dstore 32 /* pl */
start local 32 // double pl
45: .line 169
ldc 0.9617967009544373
dload 30 /* ph */
dmul
dstore 34 /* zh */
start local 34 // double zh
46: .line 170
ldc -7.028461650952758E-9
dload 30 /* ph */
dmul
dload 32 /* pl */
ldc 0.9617966939259756
dmul
dadd
aload 11 /* dpl */
iload 8 /* k */
daload
dadd
dstore 36 /* zl */
start local 36 // double zl
47: .line 172
iload 6 /* n */
i2d
dstore 38 /* t */
start local 38 // double t
48: .line 173
dload 34 /* zh */
dload 36 /* zl */
dadd
aload 10 /* dph */
iload 8 /* k */
daload
dadd
dload 38 /* t */
dadd
dstore 40 /* t1 */
start local 40 // double t1
49: .line 174
dload 40 /* t1 */
iconst_0
invokestatic com.oracle.truffle.js.builtins.math.Log2Node.lowBits:(DI)D
dstore 40 /* t1 */
50: .line 175
dload 36 /* zl */
dload 40 /* t1 */
dload 38 /* t */
dsub
aload 10 /* dph */
iload 8 /* k */
daload
dsub
dload 34 /* zh */
dsub
dsub
dstore 42 /* t2 */
start local 42 // double t2
51: .line 177
dload 40 /* t1 */
dload 42 /* t2 */
dadd
dreturn
end local 42 // double t2
end local 40 // double t1
end local 38 // double t
end local 36 // double zl
end local 34 // double zh
end local 32 // double pl
end local 30 // double ph
end local 28 // double r
end local 26 // double s2
end local 24 // double sl
end local 22 // double tl
end local 20 // double th
end local 18 // double sh
end local 16 // double ss
end local 14 // double v
end local 12 // double u
end local 11 // double[] dpl
end local 10 // double[] dph
end local 9 // double[] bp
end local 8 // int k
end local 7 // int j
end local 6 // int n
end local 5 // int ix
end local 4 // int hx
end local 2 // double xAbs
end local 0 // double x
LocalVariableTable:
Start End Slot Name Signature
0 52 0 x D
1 52 2 xAbs D
2 52 4 hx I
3 52 5 ix I
4 52 6 n I
10 52 7 j I
13 14 8 k I
16 17 8 k I
18 52 8 k I
22 52 9 bp [D
23 52 10 dph [D
24 52 11 dpl [D
25 52 12 u D
26 52 14 v D
27 52 16 ss D
28 52 18 sh D
30 52 20 th D
32 52 22 tl D
33 52 24 sl D
34 52 26 s2 D
35 52 28 r D
43 52 30 ph D
45 52 32 pl D
46 52 34 zh D
47 52 36 zl D
48 52 38 t D
49 52 40 t1 D
51 52 42 t2 D
RuntimeVisibleAnnotations:
com.oracle.truffle.api.CompilerDirectives$TruffleBoundary()
MethodParameters:
Name Flags
x final
protected double log2(double);
descriptor: (D)D
flags: (0x0004) ACC_PROTECTED
Code:
stack=4, locals=3, args_size=2
start local 0 // com.oracle.truffle.js.builtins.math.Log2Node this
start local 1 // double x
0: .line 182
dload 1 /* x */
dconst_0
dcmpg
iflt 1
dload 1 /* x */
invokestatic java.lang.Double.isNaN:(D)Z
ifeq 2
1: .line 183
StackMap locals:
StackMap stack:
ldc NaN
dreturn
2: .line 186
StackMap locals:
StackMap stack:
dload 1 /* x */
dconst_0
dcmpl
ifne 4
3: .line 187
ldc -Infinity
dreturn
4: .line 190
StackMap locals:
StackMap stack:
dload 1 /* x */
ldc Infinity
dcmpl
ifne 6
5: .line 191
ldc Infinity
dreturn
6: .line 194
StackMap locals:
StackMap stack:
dload 1 /* x */
invokestatic com.oracle.truffle.js.builtins.math.Log2Node.log2Impl:(D)D
dreturn
end local 1 // double x
end local 0 // com.oracle.truffle.js.builtins.math.Log2Node this
LocalVariableTable:
Start End Slot Name Signature
0 7 0 this Lcom/oracle/truffle/js/builtins/math/Log2Node;
0 7 1 x D
RuntimeVisibleAnnotations:
com.oracle.truffle.api.dsl.Specialization()
MethodParameters:
Name Flags
x final
protected double log2(java.lang.Object);
descriptor: (Ljava/lang/Object;)D
flags: (0x0004) ACC_PROTECTED
Code:
stack=3, locals=2, args_size=2
start local 0 // com.oracle.truffle.js.builtins.math.Log2Node this
start local 1 // java.lang.Object a
0: .line 199
aload 0 /* this */
aload 0 /* this */
aload 1 /* a */
invokevirtual com.oracle.truffle.js.builtins.math.Log2Node.toDouble:(Ljava/lang/Object;)D
invokevirtual com.oracle.truffle.js.builtins.math.Log2Node.log2:(D)D
dreturn
end local 1 // java.lang.Object a
end local 0 // com.oracle.truffle.js.builtins.math.Log2Node this
LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lcom/oracle/truffle/js/builtins/math/Log2Node;
0 1 1 a Ljava/lang/Object;
RuntimeVisibleAnnotations:
com.oracle.truffle.api.dsl.Specialization()
MethodParameters:
Name Flags
a
}
SourceFile: "Log2Node.java"
InnerClasses:
public abstract TruffleBoundary = com.oracle.truffle.api.CompilerDirectives$TruffleBoundary of com.oracle.truffle.api.CompilerDirectives