public abstract class com.oracle.truffle.js.nodes.cast.JSToLengthNode 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.JSToLengthNode
  super_class: com.oracle.truffle.js.nodes.JavaScriptBaseNode
{
  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.JSToLengthNode this
         0: .line 56
            aload 0 /* this */
            invokespecial com.oracle.truffle.js.nodes.JavaScriptBaseNode.<init>:()V
            return
        end local 0 // com.oracle.truffle.js.nodes.cast.JSToLengthNode this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/js/nodes/cast/JSToLengthNode;

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

  public abstract long executeLong(java.lang.Object);
    descriptor: (Ljava/lang/Object;)J
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    MethodParameters:
       Name  Flags
      value  

  protected static long doInt(int, com.oracle.truffle.api.profiles.BranchProfile);
    descriptor: (ILcom/oracle/truffle/api/profiles/BranchProfile;)J
    flags: (0x000c) ACC_PROTECTED, ACC_STATIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // int value
        start local 1 // com.oracle.truffle.api.profiles.BranchProfile negativeBranch
         0: .line 67
            iload 0 /* value */
            ifge 3
         1: .line 68
            aload 1 /* negativeBranch */
            invokevirtual com.oracle.truffle.api.profiles.BranchProfile.enter:()V
         2: .line 69
            lconst_0
            lreturn
         3: .line 71
      StackMap locals:
      StackMap stack:
            iload 0 /* value */
            i2l
            lreturn
        end local 1 // com.oracle.truffle.api.profiles.BranchProfile negativeBranch
        end local 0 // int value
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    4     0           value  I
            0    4     1  negativeBranch  Lcom/oracle/truffle/api/profiles/BranchProfile;
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.dsl.Specialization()
    RuntimeInvisibleParameterAnnotations: 
      0:
      1:
        com.oracle.truffle.api.dsl.Cached()
        com.oracle.truffle.api.dsl.Cached$Shared(value = "negativeBranch")
    MethodParameters:
                Name  Flags
      value           
      negativeBranch  

  protected static long doSafeInteger(com.oracle.truffle.js.runtime.SafeInteger, com.oracle.truffle.api.profiles.BranchProfile);
    descriptor: (Lcom/oracle/truffle/js/runtime/SafeInteger;Lcom/oracle/truffle/api/profiles/BranchProfile;)J
    flags: (0x000c) ACC_PROTECTED, ACC_STATIC
    Code:
      stack=4, locals=4, args_size=2
        start local 0 // com.oracle.truffle.js.runtime.SafeInteger value
        start local 1 // com.oracle.truffle.api.profiles.BranchProfile negativeBranch
         0: .line 77
            aload 0 /* value */
            invokevirtual com.oracle.truffle.js.runtime.SafeInteger.longValue:()J
            lstore 2 /* longValue */
        start local 2 // long longValue
         1: .line 78
            lload 2 /* longValue */
            lconst_0
            lcmp
            ifge 4
         2: .line 79
            aload 1 /* negativeBranch */
            invokevirtual com.oracle.truffle.api.profiles.BranchProfile.enter:()V
         3: .line 80
            lconst_0
            lreturn
         4: .line 82
      StackMap locals: long
      StackMap stack:
            lload 2 /* longValue */
            lreturn
        end local 2 // long longValue
        end local 1 // com.oracle.truffle.api.profiles.BranchProfile negativeBranch
        end local 0 // com.oracle.truffle.js.runtime.SafeInteger value
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    5     0           value  Lcom/oracle/truffle/js/runtime/SafeInteger;
            0    5     1  negativeBranch  Lcom/oracle/truffle/api/profiles/BranchProfile;
            1    5     2       longValue  J
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.dsl.Specialization()
    RuntimeInvisibleParameterAnnotations: 
      0:
      1:
        com.oracle.truffle.api.dsl.Cached()
        com.oracle.truffle.api.dsl.Cached$Shared(value = "negativeBranch")
    MethodParameters:
                Name  Flags
      value           
      negativeBranch  

  protected static long doDouble(double, com.oracle.truffle.api.profiles.BranchProfile, com.oracle.truffle.api.profiles.BranchProfile);
    descriptor: (DLcom/oracle/truffle/api/profiles/BranchProfile;Lcom/oracle/truffle/api/profiles/BranchProfile;)J
    flags: (0x000c) ACC_PROTECTED, ACC_STATIC
    Code:
      stack=4, locals=4, args_size=3
        start local 0 // double value
        start local 2 // com.oracle.truffle.api.profiles.BranchProfile negativeBranch
        start local 3 // com.oracle.truffle.api.profiles.BranchProfile tooLargeBranch
         0: .line 90
            dload 0 /* value */
            d2l
            aload 2 /* negativeBranch */
            aload 3 /* tooLargeBranch */
            invokestatic com.oracle.truffle.js.nodes.cast.JSToLengthNode.doLong:(JLcom/oracle/truffle/api/profiles/BranchProfile;Lcom/oracle/truffle/api/profiles/BranchProfile;)J
            lreturn
        end local 3 // com.oracle.truffle.api.profiles.BranchProfile tooLargeBranch
        end local 2 // com.oracle.truffle.api.profiles.BranchProfile negativeBranch
        end local 0 // double value
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    1     0           value  D
            0    1     2  negativeBranch  Lcom/oracle/truffle/api/profiles/BranchProfile;
            0    1     3  tooLargeBranch  Lcom/oracle/truffle/api/profiles/BranchProfile;
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.dsl.Specialization()
    RuntimeInvisibleParameterAnnotations: 
      0:
      1:
        com.oracle.truffle.api.dsl.Cached()
        com.oracle.truffle.api.dsl.Cached$Shared(value = "negativeBranch")
      2:
        com.oracle.truffle.api.dsl.Cached()
        com.oracle.truffle.api.dsl.Cached$Shared(value = "tooLargeBranch")
    MethodParameters:
                Name  Flags
      value           
      negativeBranch  
      tooLargeBranch  

  protected static long doUndefined(com.oracle.truffle.api.object.DynamicObject);
    descriptor: (Lcom/oracle/truffle/api/object/DynamicObject;)J
    flags: (0x000c) ACC_PROTECTED, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.oracle.truffle.api.object.DynamicObject value
         0: .line 95
            lconst_0
            lreturn
        end local 0 // com.oracle.truffle.api.object.DynamicObject value
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    1     0  value  Lcom/oracle/truffle/api/object/DynamicObject;
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.dsl.Specialization(guards = {"isUndefined(value)"})
    MethodParameters:
       Name  Flags
      value  

  protected static long doObject(java.lang.Object, com.oracle.truffle.js.nodes.cast.JSToNumberNode, com.oracle.truffle.api.profiles.BranchProfile, com.oracle.truffle.api.profiles.BranchProfile);
    descriptor: (Ljava/lang/Object;Lcom/oracle/truffle/js/nodes/cast/JSToNumberNode;Lcom/oracle/truffle/api/profiles/BranchProfile;Lcom/oracle/truffle/api/profiles/BranchProfile;)J
    flags: (0x000c) ACC_PROTECTED, ACC_STATIC
    Code:
      stack=4, locals=5, args_size=4
        start local 0 // java.lang.Object value
        start local 1 // com.oracle.truffle.js.nodes.cast.JSToNumberNode toNumberNode
        start local 2 // com.oracle.truffle.api.profiles.BranchProfile negativeBranch
        start local 3 // com.oracle.truffle.api.profiles.BranchProfile tooLargeBranch
         0: .line 103
            aload 1 /* toNumberNode */
            aload 0 /* value */
            invokevirtual com.oracle.truffle.js.nodes.cast.JSToNumberNode.execute:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.Number
            astore 4 /* result */
        start local 4 // java.lang.Number result
         1: .line 104
            aload 4 /* result */
            invokestatic com.oracle.truffle.js.runtime.JSRuntime.toInteger:(Ljava/lang/Number;)J
            aload 2 /* negativeBranch */
            aload 3 /* tooLargeBranch */
            invokestatic com.oracle.truffle.js.nodes.cast.JSToLengthNode.doLong:(JLcom/oracle/truffle/api/profiles/BranchProfile;Lcom/oracle/truffle/api/profiles/BranchProfile;)J
            lreturn
        end local 4 // java.lang.Number result
        end local 3 // com.oracle.truffle.api.profiles.BranchProfile tooLargeBranch
        end local 2 // com.oracle.truffle.api.profiles.BranchProfile negativeBranch
        end local 1 // com.oracle.truffle.js.nodes.cast.JSToNumberNode toNumberNode
        end local 0 // java.lang.Object value
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    2     0           value  Ljava/lang/Object;
            0    2     1    toNumberNode  Lcom/oracle/truffle/js/nodes/cast/JSToNumberNode;
            0    2     2  negativeBranch  Lcom/oracle/truffle/api/profiles/BranchProfile;
            0    2     3  tooLargeBranch  Lcom/oracle/truffle/api/profiles/BranchProfile;
            1    2     4          result  Ljava/lang/Number;
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.dsl.Specialization()
    RuntimeInvisibleParameterAnnotations: 
      0:
      1:
        com.oracle.truffle.api.dsl.Cached(value = "create()")
      2:
        com.oracle.truffle.api.dsl.Cached()
        com.oracle.truffle.api.dsl.Cached$Shared(value = "negativeBranch")
      3:
        com.oracle.truffle.api.dsl.Cached()
        com.oracle.truffle.api.dsl.Cached$Shared(value = "tooLargeBranch")
    MethodParameters:
                Name  Flags
      value           
      toNumberNode    
      negativeBranch  
      tooLargeBranch  

  private static long doLong(long, com.oracle.truffle.api.profiles.BranchProfile, com.oracle.truffle.api.profiles.BranchProfile);
    descriptor: (JLcom/oracle/truffle/api/profiles/BranchProfile;Lcom/oracle/truffle/api/profiles/BranchProfile;)J
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=4, args_size=3
        start local 0 // long value
        start local 2 // com.oracle.truffle.api.profiles.BranchProfile negativeBranch
        start local 3 // com.oracle.truffle.api.profiles.BranchProfile tooLargeBranch
         0: .line 108
            lload 0 /* value */
            lconst_0
            lcmp
            ifge 3
         1: .line 109
            aload 2 /* negativeBranch */
            invokevirtual com.oracle.truffle.api.profiles.BranchProfile.enter:()V
         2: .line 110
            lconst_0
            lreturn
         3: .line 112
      StackMap locals:
      StackMap stack:
            lload 0 /* value */
            getstatic com.oracle.truffle.js.runtime.JSRuntime.MAX_SAFE_INTEGER_LONG:J
            lcmp
            ifle 6
         4: .line 113
            aload 3 /* tooLargeBranch */
            invokevirtual com.oracle.truffle.api.profiles.BranchProfile.enter:()V
         5: .line 114
            getstatic com.oracle.truffle.js.runtime.JSRuntime.MAX_SAFE_INTEGER_LONG:J
            lreturn
         6: .line 116
      StackMap locals:
      StackMap stack:
            lload 0 /* value */
            lreturn
        end local 3 // com.oracle.truffle.api.profiles.BranchProfile tooLargeBranch
        end local 2 // com.oracle.truffle.api.profiles.BranchProfile negativeBranch
        end local 0 // long value
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    7     0           value  J
            0    7     2  negativeBranch  Lcom/oracle/truffle/api/profiles/BranchProfile;
            0    7     3  tooLargeBranch  Lcom/oracle/truffle/api/profiles/BranchProfile;
    MethodParameters:
                Name  Flags
      value           
      negativeBranch  
      tooLargeBranch  final
}
SourceFile: "JSToLengthNode.java"
InnerClasses:
  public abstract Shared = com.oracle.truffle.api.dsl.Cached$Shared of com.oracle.truffle.api.dsl.Cached