public abstract class com.oracle.truffle.js.builtins.math.RoundNode 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.RoundNode
  super_class: com.oracle.truffle.js.builtins.math.MathOperation
{
  private final com.oracle.truffle.api.profiles.ConditionProfile shiftProfile;
    descriptor: Lcom/oracle/truffle/api/profiles/ConditionProfile;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final com.oracle.truffle.api.profiles.BranchProfile negativeLongBitsProfile;
    descriptor: Lcom/oracle/truffle/api/profiles/BranchProfile;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private static final int EXP_BIAS;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 1023

  private static final int SIGNIFICAND_WIDTH;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 53

  private static final long EXP_BIT_MASK;
    descriptor: J
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 9218868437227405312

  private static final long SIGNIF_BIT_MASK;
    descriptor: J
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 4503599627370495

  static final boolean $assertionsDisabled;
    descriptor: Z
    flags: (0x1018) ACC_STATIC, ACC_FINAL, ACC_SYNTHETIC

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 54
            ldc Lcom/oracle/truffle/js/builtins/math/RoundNode;
            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 com.oracle.truffle.js.builtins.math.RoundNode.$assertionsDisabled:Z
         3: .line 90
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  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: (0x0000) 
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // com.oracle.truffle.js.builtins.math.RoundNode this
        start local 1 // com.oracle.truffle.js.runtime.JSContext context
        start local 2 // com.oracle.truffle.js.nodes.function.JSBuiltin builtin
         0: .line 57
            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 83
            aload 0 /* this */
            invokestatic com.oracle.truffle.api.profiles.ConditionProfile.createBinaryProfile:()Lcom/oracle/truffle/api/profiles/ConditionProfile;
            putfield com.oracle.truffle.js.builtins.math.RoundNode.shiftProfile:Lcom/oracle/truffle/api/profiles/ConditionProfile;
         2: .line 84
            aload 0 /* this */
            invokestatic com.oracle.truffle.api.profiles.BranchProfile.create:()Lcom/oracle/truffle/api/profiles/BranchProfile;
            putfield com.oracle.truffle.js.builtins.math.RoundNode.negativeLongBitsProfile:Lcom/oracle/truffle/api/profiles/BranchProfile;
         3: .line 58
            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.RoundNode this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    4     0     this  Lcom/oracle/truffle/js/builtins/math/RoundNode;
            0    4     1  context  Lcom/oracle/truffle/js/runtime/JSContext;
            0    4     2  builtin  Lcom/oracle/truffle/js/nodes/function/JSBuiltin;
    MethodParameters:
         Name  Flags
      context  
      builtin  

  public static com.oracle.truffle.js.builtins.math.RoundNode create(com.oracle.truffle.js.runtime.JSContext, com.oracle.truffle.js.nodes.function.JSBuiltin, com.oracle.truffle.js.nodes.JavaScriptNode[]);
    descriptor: (Lcom/oracle/truffle/js/runtime/JSContext;Lcom/oracle/truffle/js/nodes/function/JSBuiltin;[Lcom/oracle/truffle/js/nodes/JavaScriptNode;)Lcom/oracle/truffle/js/builtins/math/RoundNode;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=3, args_size=3
         0: .line 61
            new java.lang.Error
            dup
            ldc "Unresolved compilation problem: \n\tRoundNodeGen cannot be resolved\n"
            invokespecial java.lang.Error.<init>:(Ljava/lang/String;)V
            athrow
      LocalVariableTable:
        Start  End  Slot  Name  Signature
    MethodParameters:
           Name  Flags
      context    
      builtin    
      arguments  

  protected static com.oracle.truffle.js.nodes.JavaScriptNode[] createCast(com.oracle.truffle.js.nodes.JavaScriptNode[]);
    descriptor: ([Lcom/oracle/truffle/js/nodes/JavaScriptNode;)[Lcom/oracle/truffle/js/nodes/JavaScriptNode;
    flags: (0x000c) ACC_PROTECTED, ACC_STATIC
    Code:
      stack=4, locals=1, args_size=1
        start local 0 // com.oracle.truffle.js.nodes.JavaScriptNode[] argumentNodes
         0: .line 65
            aload 0 /* argumentNodes */
            iconst_0
            aload 0 /* argumentNodes */
            iconst_0
            aaload
            invokestatic com.oracle.truffle.js.nodes.cast.JSToNumberNode.create:(Lcom/oracle/truffle/js/nodes/JavaScriptNode;)Lcom/oracle/truffle/js/nodes/JavaScriptNode;
            aastore
         1: .line 66
            aload 0 /* argumentNodes */
            areturn
        end local 0 // com.oracle.truffle.js.nodes.JavaScriptNode[] argumentNodes
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    2     0  argumentNodes  [Lcom/oracle/truffle/js/nodes/JavaScriptNode;
    MethodParameters:
               Name  Flags
      argumentNodes  

  protected static boolean isCornercase(double);
    descriptor: (D)Z
    flags: (0x000c) ACC_PROTECTED, ACC_STATIC
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // double d
         0: .line 70
            dload 0 /* d */
            invokestatic java.lang.Double.isNaN:(D)Z
            ifne 1
            dload 0 /* d */
            invokestatic com.oracle.truffle.js.runtime.JSRuntime.isNegativeZero:(D)Z
            ifne 1
            iconst_0
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_1
            ireturn
        end local 0 // double d
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0     d  D
    MethodParameters:
      Name  Flags
      d     

  protected static int roundInt(int);
    descriptor: (I)I
    flags: (0x000c) ACC_PROTECTED, ACC_STATIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // int a
         0: .line 75
            iload 0 /* a */
            ireturn
        end local 0 // int a
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0     a  I
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.dsl.Specialization()
    MethodParameters:
      Name  Flags
      a     

  protected static double roundCornercase(double);
    descriptor: (D)D
    flags: (0x000c) ACC_PROTECTED, ACC_STATIC
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // double value
         0: .line 80
            dload 0 /* value */
            dreturn
        end local 0 // double value
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    1     0  value  D
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.dsl.Specialization(guards = {"isCornercase(value)"})
    MethodParameters:
       Name  Flags
      value  

  private long round(double);
    descriptor: (D)J
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=11, args_size=2
        start local 0 // com.oracle.truffle.js.builtins.math.RoundNode this
        start local 1 // double a
         0: .line 94
            dload 1 /* a */
            invokestatic java.lang.Double.doubleToRawLongBits:(D)J
            lstore 3 /* longBits */
        start local 3 // long longBits
         1: .line 95
            lload 3 /* longBits */
            ldc 9218868437227405312
            land
            bipush 52
            lshr
            lstore 5 /* biasedExp */
        start local 5 // long biasedExp
         2: .line 96
            ldc 1074
            lload 5 /* biasedExp */
            lsub
            lstore 7 /* shift */
        start local 7 // long shift
         3: .line 97
            aload 0 /* this */
            getfield com.oracle.truffle.js.builtins.math.RoundNode.shiftProfile:Lcom/oracle/truffle/api/profiles/ConditionProfile;
            lload 7 /* shift */
            ldc -64
            land
            lconst_0
            lcmp
            ifne 4
            iconst_1
            goto 5
      StackMap locals: com.oracle.truffle.js.builtins.math.RoundNode double long long long
      StackMap stack: com.oracle.truffle.api.profiles.ConditionProfile
         4: iconst_0
      StackMap locals: com.oracle.truffle.js.builtins.math.RoundNode double long long long
      StackMap stack: com.oracle.truffle.api.profiles.ConditionProfile int
         5: invokevirtual com.oracle.truffle.api.profiles.ConditionProfile.profile:(Z)Z
            ifeq 11
         6: .line 99
            lload 3 /* longBits */
            ldc 4503599627370495
            land
            ldc 4503599627370496
            lor
            lstore 9 /* r */
        start local 9 // long r
         7: .line 100
            lload 3 /* longBits */
            lconst_0
            lcmp
            ifge 10
         8: .line 101
            aload 0 /* this */
            getfield com.oracle.truffle.js.builtins.math.RoundNode.negativeLongBitsProfile:Lcom/oracle/truffle/api/profiles/BranchProfile;
            invokevirtual com.oracle.truffle.api.profiles.BranchProfile.enter:()V
         9: .line 102
            lload 9 /* r */
            lneg
            lstore 9 /* r */
        10: .line 110
      StackMap locals: long
      StackMap stack:
            lload 9 /* r */
            lload 7 /* shift */
            l2i
            lshr
            lconst_1
            ladd
            iconst_1
            lshr
            lreturn
        end local 9 // long r
        11: .line 116
      StackMap locals:
      StackMap stack:
            dload 1 /* a */
            d2l
            lreturn
        end local 7 // long shift
        end local 5 // long biasedExp
        end local 3 // long longBits
        end local 1 // double a
        end local 0 // com.oracle.truffle.js.builtins.math.RoundNode this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   12     0       this  Lcom/oracle/truffle/js/builtins/math/RoundNode;
            0   12     1          a  D
            1   12     3   longBits  J
            2   12     5  biasedExp  J
            3   12     7      shift  J
            7   11     9          r  J
    MethodParameters:
      Name  Flags
      a     

  protected int roundDoubleInt(double);
    descriptor: (D)I
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=5, args_size=2
        start local 0 // com.oracle.truffle.js.builtins.math.RoundNode this
        start local 1 // double value
         0: .line 122
            aload 0 /* this */
            dload 1 /* value */
            invokevirtual com.oracle.truffle.js.builtins.math.RoundNode.round:(D)J
            lstore 3 /* longValue */
        start local 3 // long longValue
         1: .line 123
            lload 3 /* longValue */
            lconst_0
            lcmp
            ifne 4
            dload 1 /* value */
            dconst_0
            dcmpg
            ifge 4
         2: .line 124
            invokestatic com.oracle.truffle.api.CompilerDirectives.transferToInterpreterAndInvalidate:()V
         3: .line 125
            new java.lang.ArithmeticException
            dup
            invokespecial java.lang.ArithmeticException.<init>:()V
            athrow
         4: .line 127
      StackMap locals: long
      StackMap stack:
            getstatic com.oracle.truffle.js.builtins.math.RoundNode.$assertionsDisabled:Z
            ifne 5
            lload 3 /* longValue */
            invokestatic com.oracle.truffle.js.runtime.JSRuntime.longIsRepresentableAsInt:(J)Z
            ifne 5
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         5: .line 128
      StackMap locals:
      StackMap stack:
            lload 3 /* longValue */
            l2i
            ireturn
        end local 3 // long longValue
        end local 1 // double value
        end local 0 // com.oracle.truffle.js.builtins.math.RoundNode this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    6     0       this  Lcom/oracle/truffle/js/builtins/math/RoundNode;
            0    6     1      value  D
            1    6     3  longValue  J
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.dsl.Specialization(guards = {"!isCornercase(value)", "isDoubleInInt32Range(value)"}, rewriteOn = {Ljava/lang/ArithmeticException;})
    MethodParameters:
       Name  Flags
      value  

  protected double roundDouble(double, com.oracle.truffle.api.profiles.ConditionProfile, com.oracle.truffle.api.profiles.ConditionProfile);
    descriptor: (DLcom/oracle/truffle/api/profiles/ConditionProfile;Lcom/oracle/truffle/api/profiles/ConditionProfile;)D
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=5, locals=7, args_size=4
        start local 0 // com.oracle.truffle.js.builtins.math.RoundNode this
        start local 1 // double value
        start local 3 // com.oracle.truffle.api.profiles.ConditionProfile profileA
        start local 4 // com.oracle.truffle.api.profiles.ConditionProfile profileB
         0: .line 136
            aload 0 /* this */
            dload 1 /* value */
            invokevirtual com.oracle.truffle.js.builtins.math.RoundNode.round:(D)J
            lstore 5 /* longValue */
        start local 5 // long longValue
         1: .line 137
            aload 3 /* profileA */
            lload 5 /* longValue */
            ldc -9223372036854775808
            lcmp
            ifeq 2
            lload 5 /* longValue */
            ldc 9223372036854775807
            lcmp
            ifeq 2
            iconst_0
            goto 3
      StackMap locals: com.oracle.truffle.js.builtins.math.RoundNode double com.oracle.truffle.api.profiles.ConditionProfile com.oracle.truffle.api.profiles.ConditionProfile long
      StackMap stack: com.oracle.truffle.api.profiles.ConditionProfile
         2: iconst_1
      StackMap locals: com.oracle.truffle.js.builtins.math.RoundNode double com.oracle.truffle.api.profiles.ConditionProfile com.oracle.truffle.api.profiles.ConditionProfile long
      StackMap stack: com.oracle.truffle.api.profiles.ConditionProfile int
         3: invokevirtual com.oracle.truffle.api.profiles.ConditionProfile.profile:(Z)Z
            ifeq 5
         4: .line 139
            dload 1 /* value */
            dreturn
         5: .line 140
      StackMap locals:
      StackMap stack:
            aload 4 /* profileB */
            lload 5 /* longValue */
            lconst_0
            lcmp
            ifne 6
            dload 1 /* value */
            dconst_0
            dcmpg
            ifge 6
            iconst_1
            goto 7
      StackMap locals:
      StackMap stack: com.oracle.truffle.api.profiles.ConditionProfile
         6: iconst_0
      StackMap locals: com.oracle.truffle.js.builtins.math.RoundNode double com.oracle.truffle.api.profiles.ConditionProfile com.oracle.truffle.api.profiles.ConditionProfile long
      StackMap stack: com.oracle.truffle.api.profiles.ConditionProfile int
         7: invokevirtual com.oracle.truffle.api.profiles.ConditionProfile.profile:(Z)Z
            ifeq 9
         8: .line 141
            ldc -0.0
            dreturn
         9: .line 143
      StackMap locals:
      StackMap stack:
            lload 5 /* longValue */
            l2d
            dreturn
        end local 5 // long longValue
        end local 4 // com.oracle.truffle.api.profiles.ConditionProfile profileB
        end local 3 // com.oracle.truffle.api.profiles.ConditionProfile profileA
        end local 1 // double value
        end local 0 // com.oracle.truffle.js.builtins.math.RoundNode this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   10     0       this  Lcom/oracle/truffle/js/builtins/math/RoundNode;
            0   10     1      value  D
            0   10     3   profileA  Lcom/oracle/truffle/api/profiles/ConditionProfile;
            0   10     4   profileB  Lcom/oracle/truffle/api/profiles/ConditionProfile;
            1   10     5  longValue  J
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.dsl.Specialization(guards = {"!isCornercase(value)"}, replaces = {"roundDoubleInt"})
    RuntimeInvisibleParameterAnnotations: 
      0:
      1:
        com.oracle.truffle.api.dsl.Cached(value = "createBinaryProfile()")
      2:
        com.oracle.truffle.api.dsl.Cached(value = "createBinaryProfile()")
    MethodParameters:
          Name  Flags
      value     
      profileA  
      profileB  
}
SourceFile: "RoundNode.java"