public abstract class com.oracle.truffle.js.nodes.cast.JSStringToNumberNode extends com.oracle.truffle.js.nodes.JavaScriptBaseNode
  minor version: 0
  major version: 59
  flags: flags: (0x0421) ACC_PUBLIC, ACC_SUPER, ACC_ABSTRACT
  this_class: com.oracle.truffle.js.nodes.cast.JSStringToNumberNode
  super_class: com.oracle.truffle.js.nodes.JavaScriptBaseNode
{
  static final int PREFIX_LENGTH;
    descriptor: I
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: 2

  static final int SAFE_HEX_DIGITS;
    descriptor: I
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: 15

  static final int SAFE_OCTAL_DIGITS;
    descriptor: I
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: 19

  static final int SAFE_BINARY_DIGITS;
    descriptor: I
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: 55

  static final int MAX_SAFE_INTEGER_LENGTH;
    descriptor: I
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: 17

  static final int SMALL_INT_LENGTH;
    descriptor: I
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: 9

  private com.oracle.truffle.js.nodes.cast.JSTrimWhitespaceNode trimWhitespaceNode;
    descriptor: Lcom/oracle/truffle/js/nodes/cast/JSTrimWhitespaceNode;
    flags: (0x0002) ACC_PRIVATE
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.nodes.Node$Child()

  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 59
            ldc Lcom/oracle/truffle/js/nodes/cast/JSStringToNumberNode;
            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.nodes.cast.JSStringToNumberNode.$assertionsDisabled:Z
         3: .line 68
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.js.nodes.cast.JSStringToNumberNode this
         0: .line 59
            aload 0 /* this */
            invokespecial com.oracle.truffle.js.nodes.JavaScriptBaseNode.<init>:()V
            return
        end local 0 // com.oracle.truffle.js.nodes.cast.JSStringToNumberNode this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/js/nodes/cast/JSStringToNumberNode;

  public final double executeString(java.lang.String);
    descriptor: (Ljava/lang/String;)D
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // com.oracle.truffle.js.nodes.cast.JSStringToNumberNode this
        start local 1 // java.lang.String input
         0: .line 73
            aload 0 /* this */
            getfield com.oracle.truffle.js.nodes.cast.JSStringToNumberNode.trimWhitespaceNode:Lcom/oracle/truffle/js/nodes/cast/JSTrimWhitespaceNode;
            ifnonnull 3
         1: .line 74
            invokestatic com.oracle.truffle.api.CompilerDirectives.transferToInterpreterAndInvalidate:()V
         2: .line 75
            aload 0 /* this */
            aload 0 /* this */
            invokestatic com.oracle.truffle.js.nodes.cast.JSTrimWhitespaceNode.create:()Lcom/oracle/truffle/js/nodes/cast/JSTrimWhitespaceNode;
            invokevirtual com.oracle.truffle.js.nodes.cast.JSStringToNumberNode.insert:(Lcom/oracle/truffle/api/nodes/Node;)Lcom/oracle/truffle/api/nodes/Node;
            checkcast com.oracle.truffle.js.nodes.cast.JSTrimWhitespaceNode
            putfield com.oracle.truffle.js.nodes.cast.JSStringToNumberNode.trimWhitespaceNode:Lcom/oracle/truffle/js/nodes/cast/JSTrimWhitespaceNode;
         3: .line 77
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            getfield com.oracle.truffle.js.nodes.cast.JSStringToNumberNode.trimWhitespaceNode:Lcom/oracle/truffle/js/nodes/cast/JSTrimWhitespaceNode;
            aload 1 /* input */
            invokevirtual com.oracle.truffle.js.nodes.cast.JSTrimWhitespaceNode.executeString:(Ljava/lang/String;)Ljava/lang/String;
            invokevirtual com.oracle.truffle.js.nodes.cast.JSStringToNumberNode.executeNoTrim:(Ljava/lang/String;)D
            dreturn
        end local 1 // java.lang.String input
        end local 0 // com.oracle.truffle.js.nodes.cast.JSStringToNumberNode this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    4     0   this  Lcom/oracle/truffle/js/nodes/cast/JSStringToNumberNode;
            0    4     1  input  Ljava/lang/String;
    MethodParameters:
       Name  Flags
      input  

  protected abstract double executeNoTrim(java.lang.String);
    descriptor: (Ljava/lang/String;)D
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT
    MethodParameters:
       Name  Flags
      input  

  public static com.oracle.truffle.js.nodes.cast.JSStringToNumberNode create();
    descriptor: ()Lcom/oracle/truffle/js/nodes/cast/JSStringToNumberNode;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=0, args_size=0
         0: .line 83
            new java.lang.Error
            dup
            ldc "Unresolved compilation problem: \n\tJSStringToNumberNodeGen cannot be resolved\n"
            invokespecial java.lang.Error.<init>:(Ljava/lang/String;)V
            athrow
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  protected static final boolean startsWithI(java.lang.String);
    descriptor: (Ljava/lang/String;)Z
    flags: (0x001c) ACC_PROTECTED, ACC_STATIC, ACC_FINAL
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // java.lang.String input
         0: .line 87
            aload 0 /* input */
            invokevirtual java.lang.String.length:()I
            ldc "Infinity"
            invokevirtual java.lang.String.length:()I
            if_icmplt 2
            aload 0 /* input */
            invokevirtual java.lang.String.length:()I
            ldc "Infinity"
            invokevirtual java.lang.String.length:()I
            iconst_1
            iadd
            if_icmpgt 2
            aload 0 /* input */
            iconst_0
            invokevirtual java.lang.String.charAt:(I)C
            bipush 73
            if_icmpeq 1
            aload 0 /* input */
            iconst_1
            invokevirtual java.lang.String.charAt:(I)C
            bipush 73
            if_icmpne 2
      StackMap locals:
      StackMap stack:
         1: iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         2: iconst_0
            ireturn
        end local 0 // java.lang.String input
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    3     0  input  Ljava/lang/String;
    MethodParameters:
       Name  Flags
      input  

  protected static final boolean startsWithValidDouble(java.lang.String);
    descriptor: (Ljava/lang/String;)Z
    flags: (0x001c) ACC_PROTECTED, ACC_STATIC, ACC_FINAL
    Code:
      stack=2, locals=3, args_size=1
        start local 0 // java.lang.String input
         0: .line 95
            aload 0 /* input */
            iconst_0
            invokevirtual java.lang.String.charAt:(I)C
            istore 1 /* firstChar */
        start local 1 // char firstChar
         1: .line 96
            iload 1 /* firstChar */
            invokestatic com.oracle.truffle.js.runtime.JSRuntime.isAsciiDigit:(C)Z
            ifne 2
            iload 1 /* firstChar */
            bipush 45
            if_icmpeq 2
            iload 1 /* firstChar */
            bipush 46
            if_icmpeq 2
            iload 1 /* firstChar */
            bipush 43
            if_icmpne 7
         2: .line 97
      StackMap locals: int
      StackMap stack:
            aload 0 /* input */
            invokevirtual java.lang.String.length:()I
            iconst_2
            if_icmplt 6
         3: .line 98
            aload 0 /* input */
            iconst_1
            invokevirtual java.lang.String.charAt:(I)C
            istore 2 /* secondChar */
        start local 2 // char secondChar
         4: .line 99
            iload 2 /* secondChar */
            invokestatic com.oracle.truffle.js.runtime.JSRuntime.isAsciiDigit:(C)Z
            ifne 5
            iload 2 /* secondChar */
            bipush 46
            if_icmpeq 5
            iload 2 /* secondChar */
            bipush 101
            if_icmpeq 5
            iload 2 /* secondChar */
            bipush 69
            if_icmpeq 5
            iconst_0
            ireturn
      StackMap locals: int
      StackMap stack:
         5: iconst_1
            ireturn
        end local 2 // char secondChar
         6: .line 101
      StackMap locals:
      StackMap stack:
            iconst_1
            ireturn
         7: .line 104
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
        end local 1 // char firstChar
        end local 0 // java.lang.String input
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    8     0       input  Ljava/lang/String;
            1    8     1   firstChar  C
            4    6     2  secondChar  C
    MethodParameters:
       Name  Flags
      input  

  protected static final boolean startsWithValidInt(java.lang.String);
    descriptor: (Ljava/lang/String;)Z
    flags: (0x001c) ACC_PROTECTED, ACC_STATIC, ACC_FINAL
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // java.lang.String input
         0: .line 109
            aload 0 /* input */
            iconst_0
            invokevirtual java.lang.String.charAt:(I)C
            istore 1 /* firstChar */
        start local 1 // char firstChar
         1: .line 110
            iload 1 /* firstChar */
            invokestatic com.oracle.truffle.js.runtime.JSRuntime.isAsciiDigit:(C)Z
            ifne 2
            iload 1 /* firstChar */
            bipush 45
            if_icmpeq 2
            iload 1 /* firstChar */
            bipush 43
            if_icmpne 4
      StackMap locals: int
      StackMap stack:
         2: aload 0 /* input */
            invokevirtual java.lang.String.length:()I
            iconst_2
            if_icmplt 3
            aload 0 /* input */
            iconst_1
            invokevirtual java.lang.String.charAt:(I)C
            invokestatic com.oracle.truffle.js.runtime.JSRuntime.isAsciiDigit:(C)Z
            ifeq 4
      StackMap locals:
      StackMap stack:
         3: iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         4: iconst_0
            ireturn
        end local 1 // char firstChar
        end local 0 // java.lang.String input
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    5     0      input  Ljava/lang/String;
            1    5     1  firstChar  C
    MethodParameters:
       Name  Flags
      input  

  protected static final boolean allDigits(java.lang.String, int);
    descriptor: (Ljava/lang/String;I)Z
    flags: (0x001c) ACC_PROTECTED, ACC_STATIC, ACC_FINAL
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // java.lang.String input
        start local 1 // int maxLength
         0: .line 114
            getstatic com.oracle.truffle.js.nodes.cast.JSStringToNumberNode.$assertionsDisabled:Z
            ifne 1
            aload 0 /* input */
            invokevirtual java.lang.String.length:()I
            iload 1 /* maxLength */
            if_icmple 1
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         1: .line 115
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 2 /* i */
        start local 2 // int i
         2: goto 8
         3: .line 116
      StackMap locals: int
      StackMap stack:
            iload 2 /* i */
            aload 0 /* input */
            invokevirtual java.lang.String.length:()I
            if_icmplt 5
         4: .line 117
            iconst_1
            ireturn
         5: .line 118
      StackMap locals:
      StackMap stack:
            aload 0 /* input */
            iload 2 /* i */
            invokevirtual java.lang.String.charAt:(I)C
            invokestatic com.oracle.truffle.js.runtime.JSRuntime.isAsciiDigit:(C)Z
            ifne 7
         6: .line 119
            iconst_0
            ireturn
         7: .line 115
      StackMap locals:
      StackMap stack:
            iinc 2 /* i */ 1
      StackMap locals:
      StackMap stack:
         8: iload 2 /* i */
            iload 1 /* maxLength */
            if_icmplt 3
        end local 2 // int i
         9: .line 122
            iconst_0
            ireturn
        end local 1 // int maxLength
        end local 0 // java.lang.String input
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   10     0      input  Ljava/lang/String;
            0   10     1  maxLength  I
            2    9     2          i  I
    MethodParameters:
           Name  Flags
      input      
      maxLength  

  protected static final boolean isHex(java.lang.String);
    descriptor: (Ljava/lang/String;)Z
    flags: (0x001c) ACC_PROTECTED, ACC_STATIC, ACC_FINAL
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // java.lang.String input
         0: .line 126
            aload 0 /* input */
            invokevirtual java.lang.String.length:()I
            iconst_2
            if_icmplt 2
            aload 0 /* input */
            iconst_0
            invokevirtual java.lang.String.charAt:(I)C
            bipush 48
            if_icmpne 2
            aload 0 /* input */
            iconst_1
            invokevirtual java.lang.String.charAt:(I)C
            bipush 120
            if_icmpeq 1
            aload 0 /* input */
            iconst_1
            invokevirtual java.lang.String.charAt:(I)C
            bipush 88
            if_icmpne 2
      StackMap locals:
      StackMap stack:
         1: iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         2: iconst_0
            ireturn
        end local 0 // java.lang.String input
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    3     0  input  Ljava/lang/String;
    MethodParameters:
       Name  Flags
      input  

  protected static final boolean isOctal(java.lang.String);
    descriptor: (Ljava/lang/String;)Z
    flags: (0x001c) ACC_PROTECTED, ACC_STATIC, ACC_FINAL
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // java.lang.String input
         0: .line 130
            aload 0 /* input */
            invokevirtual java.lang.String.length:()I
            iconst_2
            if_icmplt 2
            aload 0 /* input */
            iconst_0
            invokevirtual java.lang.String.charAt:(I)C
            bipush 48
            if_icmpne 2
            aload 0 /* input */
            iconst_1
            invokevirtual java.lang.String.charAt:(I)C
            bipush 111
            if_icmpeq 1
            aload 0 /* input */
            iconst_1
            invokevirtual java.lang.String.charAt:(I)C
            bipush 79
            if_icmpne 2
      StackMap locals:
      StackMap stack:
         1: iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         2: iconst_0
            ireturn
        end local 0 // java.lang.String input
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    3     0  input  Ljava/lang/String;
    MethodParameters:
       Name  Flags
      input  

  protected static final boolean isBinary(java.lang.String);
    descriptor: (Ljava/lang/String;)Z
    flags: (0x001c) ACC_PROTECTED, ACC_STATIC, ACC_FINAL
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // java.lang.String input
         0: .line 134
            aload 0 /* input */
            invokevirtual java.lang.String.length:()I
            iconst_2
            if_icmplt 2
            aload 0 /* input */
            iconst_0
            invokevirtual java.lang.String.charAt:(I)C
            bipush 48
            if_icmpne 2
            aload 0 /* input */
            iconst_1
            invokevirtual java.lang.String.charAt:(I)C
            bipush 98
            if_icmpeq 1
            aload 0 /* input */
            iconst_1
            invokevirtual java.lang.String.charAt:(I)C
            bipush 66
            if_icmpne 2
      StackMap locals:
      StackMap stack:
         1: iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         2: iconst_0
            ireturn
        end local 0 // java.lang.String input
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    3     0  input  Ljava/lang/String;
    MethodParameters:
       Name  Flags
      input  

  protected double doLengthIsZero(java.lang.String);
    descriptor: (Ljava/lang/String;)D
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.oracle.truffle.js.nodes.cast.JSStringToNumberNode this
        start local 1 // java.lang.String input
         0: .line 139
            dconst_0
            dreturn
        end local 1 // java.lang.String input
        end local 0 // com.oracle.truffle.js.nodes.cast.JSStringToNumberNode this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    1     0   this  Lcom/oracle/truffle/js/nodes/cast/JSStringToNumberNode;
            0    1     1  input  Ljava/lang/String;
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.dsl.Specialization(guards = {"input.length() == 0"})
    MethodParameters:
       Name  Flags
      input  

  protected double doInfinity(java.lang.String, com.oracle.truffle.api.profiles.ConditionProfile);
    descriptor: (Ljava/lang/String;Lcom/oracle/truffle/api/profiles/ConditionProfile;)D
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // com.oracle.truffle.js.nodes.cast.JSStringToNumberNode this
        start local 1 // java.lang.String input
        start local 2 // com.oracle.truffle.api.profiles.ConditionProfile endsWithInfinity
         0: .line 145
            aload 2 /* endsWithInfinity */
            aload 1 /* input */
            ldc "Infinity"
            invokevirtual java.lang.String.endsWith:(Ljava/lang/String;)Z
            invokevirtual com.oracle.truffle.api.profiles.ConditionProfile.profile:(Z)Z
            ifeq 2
         1: .line 146
            aload 1 /* input */
            aload 1 /* input */
            iconst_0
            invokevirtual java.lang.String.charAt:(I)C
            invokestatic com.oracle.truffle.js.runtime.JSRuntime.identifyInfinity:(Ljava/lang/String;C)D
            dreturn
         2: .line 148
      StackMap locals:
      StackMap stack:
            ldc NaN
            dreturn
        end local 2 // com.oracle.truffle.api.profiles.ConditionProfile endsWithInfinity
        end local 1 // java.lang.String input
        end local 0 // com.oracle.truffle.js.nodes.cast.JSStringToNumberNode this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0    3     0              this  Lcom/oracle/truffle/js/nodes/cast/JSStringToNumberNode;
            0    3     1             input  Ljava/lang/String;
            0    3     2  endsWithInfinity  Lcom/oracle/truffle/api/profiles/ConditionProfile;
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.dsl.Specialization(guards = {"startsWithI(input)"})
    RuntimeInvisibleParameterAnnotations: 
      0:
      1:
        com.oracle.truffle.api.dsl.Cached(value = "createBinaryProfile()")
    MethodParameters:
                  Name  Flags
      input             
      endsWithInfinity  

  protected double doNaN(java.lang.String);
    descriptor: (Ljava/lang/String;)D
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.oracle.truffle.js.nodes.cast.JSStringToNumberNode this
        start local 1 // java.lang.String input
         0: .line 154
            ldc NaN
            dreturn
        end local 1 // java.lang.String input
        end local 0 // com.oracle.truffle.js.nodes.cast.JSStringToNumberNode this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    1     0   this  Lcom/oracle/truffle/js/nodes/cast/JSStringToNumberNode;
            0    1     1  input  Ljava/lang/String;
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.dsl.Specialization(guards = {"input.length() > 0", "!startsWithI(input)", "!startsWithValidDouble(input)", "!isHex(input)", "!isOctal(input)", "!isBinary(input)"})
    MethodParameters:
       Name  Flags
      input  

  protected double doHexSafe(java.lang.String);
    descriptor: (Ljava/lang/String;)D
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // com.oracle.truffle.js.nodes.cast.JSStringToNumberNode this
        start local 1 // java.lang.String input
         0: .line 160
            aload 1 /* input */
            iconst_2
            aload 1 /* input */
            invokevirtual java.lang.String.length:()I
            bipush 16
            invokestatic com.oracle.truffle.js.runtime.JSRuntime.parseSafeInteger:(Ljava/lang/String;III)J
            invokestatic com.oracle.truffle.js.nodes.cast.JSStringToNumberNode.safeIntegerToDouble:(J)D
            dreturn
        end local 1 // java.lang.String input
        end local 0 // com.oracle.truffle.js.nodes.cast.JSStringToNumberNode this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    1     0   this  Lcom/oracle/truffle/js/nodes/cast/JSStringToNumberNode;
            0    1     1  input  Ljava/lang/String;
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.dsl.Specialization(guards = {"isHex(input)", "input.length() <= SAFE_HEX_DIGITS"})
      com.oracle.truffle.api.CompilerDirectives$TruffleBoundary()
    MethodParameters:
       Name  Flags
      input  

  protected double doHex(java.lang.String);
    descriptor: (Ljava/lang/String;)D
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // com.oracle.truffle.js.nodes.cast.JSStringToNumberNode this
        start local 1 // java.lang.String input
         0: .line 167
            new java.math.BigInteger
            dup
            aload 1 /* input */
            iconst_2
            invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
            bipush 16
            invokespecial java.math.BigInteger.<init>:(Ljava/lang/String;I)V
            invokevirtual java.math.BigInteger.doubleValue:()D
         1: dreturn
         2: .line 168
      StackMap locals:
      StackMap stack: java.lang.NumberFormatException
            pop
         3: .line 169
            ldc NaN
            dreturn
        end local 1 // java.lang.String input
        end local 0 // com.oracle.truffle.js.nodes.cast.JSStringToNumberNode this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    4     0   this  Lcom/oracle/truffle/js/nodes/cast/JSStringToNumberNode;
            0    4     1  input  Ljava/lang/String;
      Exception table:
        from    to  target  type
           0     1       2  Class java.lang.NumberFormatException
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.dsl.Specialization(guards = {"isHex(input)", "input.length() > SAFE_HEX_DIGITS"})
      com.oracle.truffle.api.CompilerDirectives$TruffleBoundary()
    MethodParameters:
       Name  Flags
      input  

  protected double doOctalSafe(java.lang.String);
    descriptor: (Ljava/lang/String;)D
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // com.oracle.truffle.js.nodes.cast.JSStringToNumberNode this
        start local 1 // java.lang.String input
         0: .line 176
            aload 1 /* input */
            iconst_2
            aload 1 /* input */
            invokevirtual java.lang.String.length:()I
            bipush 8
            invokestatic com.oracle.truffle.js.runtime.JSRuntime.parseSafeInteger:(Ljava/lang/String;III)J
            invokestatic com.oracle.truffle.js.nodes.cast.JSStringToNumberNode.safeIntegerToDouble:(J)D
            dreturn
        end local 1 // java.lang.String input
        end local 0 // com.oracle.truffle.js.nodes.cast.JSStringToNumberNode this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    1     0   this  Lcom/oracle/truffle/js/nodes/cast/JSStringToNumberNode;
            0    1     1  input  Ljava/lang/String;
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.dsl.Specialization(guards = {"isOctal(input)", "input.length() <= SAFE_OCTAL_DIGITS"})
      com.oracle.truffle.api.CompilerDirectives$TruffleBoundary()
    MethodParameters:
       Name  Flags
      input  

  protected double doOctal(java.lang.String);
    descriptor: (Ljava/lang/String;)D
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // com.oracle.truffle.js.nodes.cast.JSStringToNumberNode this
        start local 1 // java.lang.String input
         0: .line 183
            new java.math.BigInteger
            dup
            aload 1 /* input */
            iconst_2
            invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
            bipush 8
            invokespecial java.math.BigInteger.<init>:(Ljava/lang/String;I)V
            invokevirtual java.math.BigInteger.doubleValue:()D
         1: dreturn
         2: .line 184
      StackMap locals:
      StackMap stack: java.lang.NumberFormatException
            pop
         3: .line 185
            ldc NaN
            dreturn
        end local 1 // java.lang.String input
        end local 0 // com.oracle.truffle.js.nodes.cast.JSStringToNumberNode this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    4     0   this  Lcom/oracle/truffle/js/nodes/cast/JSStringToNumberNode;
            0    4     1  input  Ljava/lang/String;
      Exception table:
        from    to  target  type
           0     1       2  Class java.lang.NumberFormatException
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.dsl.Specialization(guards = {"isOctal(input)", "input.length() > SAFE_OCTAL_DIGITS"})
      com.oracle.truffle.api.CompilerDirectives$TruffleBoundary()
    MethodParameters:
       Name  Flags
      input  

  protected double doBinarySafe(java.lang.String);
    descriptor: (Ljava/lang/String;)D
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // com.oracle.truffle.js.nodes.cast.JSStringToNumberNode this
        start local 1 // java.lang.String input
         0: .line 192
            aload 1 /* input */
            iconst_2
            aload 1 /* input */
            invokevirtual java.lang.String.length:()I
            iconst_2
            invokestatic com.oracle.truffle.js.runtime.JSRuntime.parseSafeInteger:(Ljava/lang/String;III)J
            invokestatic com.oracle.truffle.js.nodes.cast.JSStringToNumberNode.safeIntegerToDouble:(J)D
            dreturn
        end local 1 // java.lang.String input
        end local 0 // com.oracle.truffle.js.nodes.cast.JSStringToNumberNode this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    1     0   this  Lcom/oracle/truffle/js/nodes/cast/JSStringToNumberNode;
            0    1     1  input  Ljava/lang/String;
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.dsl.Specialization(guards = {"isBinary(input)", "input.length() <= SAFE_BINARY_DIGITS"})
      com.oracle.truffle.api.CompilerDirectives$TruffleBoundary()
    MethodParameters:
       Name  Flags
      input  

  protected double doBinary(java.lang.String);
    descriptor: (Ljava/lang/String;)D
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // com.oracle.truffle.js.nodes.cast.JSStringToNumberNode this
        start local 1 // java.lang.String input
         0: .line 199
            new java.math.BigInteger
            dup
            aload 1 /* input */
            iconst_2
            invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
            iconst_2
            invokespecial java.math.BigInteger.<init>:(Ljava/lang/String;I)V
            invokevirtual java.math.BigInteger.doubleValue:()D
         1: dreturn
         2: .line 200
      StackMap locals:
      StackMap stack: java.lang.NumberFormatException
            pop
         3: .line 201
            ldc NaN
            dreturn
        end local 1 // java.lang.String input
        end local 0 // com.oracle.truffle.js.nodes.cast.JSStringToNumberNode this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    4     0   this  Lcom/oracle/truffle/js/nodes/cast/JSStringToNumberNode;
            0    4     1  input  Ljava/lang/String;
      Exception table:
        from    to  target  type
           0     1       2  Class java.lang.NumberFormatException
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.dsl.Specialization(guards = {"isBinary(input)", "input.length() > SAFE_BINARY_DIGITS"})
      com.oracle.truffle.api.CompilerDirectives$TruffleBoundary()
    MethodParameters:
       Name  Flags
      input  

  protected double doSmallPosInt(java.lang.String);
    descriptor: (Ljava/lang/String;)D
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=3, locals=6, args_size=2
        start local 0 // com.oracle.truffle.js.nodes.cast.JSStringToNumberNode this
        start local 1 // java.lang.String input
         0: .line 207
            iconst_0
            istore 2 /* result */
        start local 2 // int result
         1: .line 208
            iconst_0
            istore 3 /* pos */
        start local 3 // int pos
         2: .line 209
            aload 1 /* input */
            invokevirtual java.lang.String.length:()I
            istore 4 /* len */
        start local 4 // int len
         3: .line 210
            goto 9
         4: .line 211
      StackMap locals: int int int
      StackMap stack:
            aload 1 /* input */
            iload 3 /* pos */
            invokevirtual java.lang.String.charAt:(I)C
            istore 5 /* c */
        start local 5 // char c
         5: .line 212
            getstatic com.oracle.truffle.js.nodes.cast.JSStringToNumberNode.$assertionsDisabled:Z
            ifne 6
            iload 5 /* c */
            invokestatic com.oracle.truffle.js.runtime.JSRuntime.isAsciiDigit:(C)Z
            ifne 6
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         6: .line 213
      StackMap locals: int
      StackMap stack:
            iload 2 /* result */
            bipush 10
            imul
            istore 2 /* result */
         7: .line 214
            iload 2 /* result */
            iload 5 /* c */
            bipush 48
            isub
            iadd
            istore 2 /* result */
         8: .line 215
            iinc 3 /* pos */ 1
        end local 5 // char c
         9: .line 210
      StackMap locals:
      StackMap stack:
            iload 3 /* pos */
            iload 4 /* len */
            if_icmplt 4
        10: .line 217
            getstatic com.oracle.truffle.js.nodes.cast.JSStringToNumberNode.$assertionsDisabled:Z
            ifne 12
            iload 2 /* result */
            iflt 11
            iload 2 /* result */
            i2l
            aload 1 /* input */
            invokestatic com.oracle.truffle.js.nodes.cast.JSStringToNumberNode.checkLongResult:(JLjava/lang/String;)Z
            ifne 12
      StackMap locals:
      StackMap stack:
        11: new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        12: .line 218
      StackMap locals:
      StackMap stack:
            iload 2 /* result */
            i2d
            dreturn
        end local 4 // int len
        end local 3 // int pos
        end local 2 // int result
        end local 1 // java.lang.String input
        end local 0 // com.oracle.truffle.js.nodes.cast.JSStringToNumberNode this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   13     0    this  Lcom/oracle/truffle/js/nodes/cast/JSStringToNumberNode;
            0   13     1   input  Ljava/lang/String;
            1   13     2  result  I
            2   13     3     pos  I
            3   13     4     len  I
            5    9     5       c  C
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.dsl.Specialization(guards = {"input.length() > 0", "input.length() <= SMALL_INT_LENGTH", "allDigits(input, SMALL_INT_LENGTH)"})
    MethodParameters:
       Name  Flags
      input  

  protected double doInteger(java.lang.String);
    descriptor: (Ljava/lang/String;)D
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=4, args_size=2
        start local 0 // com.oracle.truffle.js.nodes.cast.JSStringToNumberNode this
        start local 1 // java.lang.String input
         0: .line 223
            aload 1 /* input */
            invokestatic com.oracle.truffle.js.runtime.JSRuntime.parseSafeInteger:(Ljava/lang/String;)J
            lstore 2 /* result */
        start local 2 // long result
         1: .line 224
            lload 2 /* result */
            ldc -9223372036854775808
            lcmp
            ifne 3
         2: .line 225
            invokestatic com.oracle.truffle.js.nodes.JSNodeUtil.slowPathException:()Lcom/oracle/truffle/api/nodes/SlowPathException;
            athrow
         3: .line 227
      StackMap locals: long
      StackMap stack:
            getstatic com.oracle.truffle.js.nodes.cast.JSStringToNumberNode.$assertionsDisabled:Z
            ifne 4
            lload 2 /* result */
            aload 1 /* input */
            invokestatic com.oracle.truffle.js.nodes.cast.JSStringToNumberNode.checkLongResult:(JLjava/lang/String;)Z
            ifne 4
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         4: .line 228
      StackMap locals:
      StackMap stack:
            lload 2 /* result */
            l2d
            dreturn
        end local 2 // long result
        end local 1 // java.lang.String input
        end local 0 // com.oracle.truffle.js.nodes.cast.JSStringToNumberNode this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    5     0    this  Lcom/oracle/truffle/js/nodes/cast/JSStringToNumberNode;
            0    5     1   input  Ljava/lang/String;
            1    5     2  result  J
    Exceptions:
      throws com.oracle.truffle.api.nodes.SlowPathException
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.dsl.Specialization(guards = {"input.length() > 0", "input.length() <= MAX_SAFE_INTEGER_LENGTH", "startsWithValidInt(input)"}, rewriteOn = {Lcom/oracle/truffle/api/nodes/SlowPathException;}, replaces = {"doSmallPosInt"})
    MethodParameters:
       Name  Flags
      input  

  protected double doDouble(java.lang.String);
    descriptor: (Ljava/lang/String;)D
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.oracle.truffle.js.nodes.cast.JSStringToNumberNode this
        start local 1 // java.lang.String input
         0: .line 234
            aload 1 /* input */
            invokestatic com.oracle.truffle.js.runtime.JSRuntime.parseDoubleOrNaN:(Ljava/lang/String;)D
            dreturn
        end local 1 // java.lang.String input
        end local 0 // com.oracle.truffle.js.nodes.cast.JSStringToNumberNode this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    1     0   this  Lcom/oracle/truffle/js/nodes/cast/JSStringToNumberNode;
            0    1     1  input  Ljava/lang/String;
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.CompilerDirectives$TruffleBoundary()
      com.oracle.truffle.api.dsl.Specialization(guards = {"input.length() > 0", "startsWithValidDouble(input)"}, replaces = {"doInteger"})
    MethodParameters:
       Name  Flags
      input  

  private static double safeIntegerToDouble(long);
    descriptor: (J)D
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=2, args_size=1
        start local 0 // long result
         0: .line 238
            lload 0 /* result */
            ldc -9223372036854775808
            lcmp
            ifne 2
         1: .line 239
            ldc NaN
            dreturn
         2: .line 241
      StackMap locals:
      StackMap stack:
            getstatic com.oracle.truffle.js.nodes.cast.JSStringToNumberNode.$assertionsDisabled:Z
            ifne 3
            lload 0 /* result */
            invokestatic com.oracle.truffle.js.runtime.JSRuntime.isSafeInteger:(J)Z
            ifne 3
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         3: .line 242
      StackMap locals:
      StackMap stack:
            lload 0 /* result */
            l2d
            dreturn
        end local 0 // long result
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    4     0  result  J
    MethodParameters:
        Name  Flags
      result  

  private static boolean checkLongResult(long, java.lang.String);
    descriptor: (JLjava/lang/String;)Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=3, args_size=2
        start local 0 // long result
        start local 2 // java.lang.String input
         0: .line 247
            lload 0 /* result */
            l2d
            aload 2 /* input */
            invokestatic com.oracle.truffle.js.runtime.JSRuntime.parseDoubleOrNaN:(Ljava/lang/String;)D
            invokestatic java.lang.Double.compare:(DD)I
            ifne 1
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_0
            ireturn
        end local 2 // java.lang.String input
        end local 0 // long result
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    2     0  result  J
            0    2     2   input  Ljava/lang/String;
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.CompilerDirectives$TruffleBoundary()
    MethodParameters:
        Name  Flags
      result  
      input   
}
SourceFile: "JSStringToNumberNode.java"
InnerClasses:
  public abstract TruffleBoundary = com.oracle.truffle.api.CompilerDirectives$TruffleBoundary of com.oracle.truffle.api.CompilerDirectives
  public abstract Child = com.oracle.truffle.api.nodes.Node$Child of com.oracle.truffle.api.nodes.Node