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