public abstract class org.jruby.ir.instructions.Instr
  minor version: 0
  major version: 59
  flags: flags: (0x0421) ACC_PUBLIC, ACC_SUPER, ACC_ABSTRACT
  this_class: org.jruby.ir.instructions.Instr
  super_class: java.lang.Object
{
  public static final org.jruby.ir.operands.Operand[] EMPTY_OPERANDS;
    descriptor: [Lorg/jruby/ir/operands/Operand;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL

  private final transient org.jruby.ir.Operation operation;
    descriptor: Lorg/jruby/ir/Operation;
    flags: (0x0092) ACC_PRIVATE, ACC_FINAL, ACC_TRANSIENT

  private boolean isDead;
    descriptor: Z
    flags: (0x0002) ACC_PRIVATE

  private static final java.lang.reflect.Field[] EMPTY_FIELD_ARRAY;
    descriptor: [Ljava/lang/reflect/Field;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final java.lang.ClassValue<java.lang.reflect.Field[]> dumpableFields;
    descriptor: Ljava/lang/ClassValue;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    Signature: Ljava/lang/ClassValue<[Ljava/lang/reflect/Field;>;

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=0, args_size=0
         0: .line 39
            iconst_0
            anewarray org.jruby.ir.operands.Operand
            putstatic org.jruby.ir.instructions.Instr.EMPTY_OPERANDS:[Lorg/jruby/ir/operands/Operand;
         1: .line 90
            iconst_0
            anewarray java.lang.reflect.Field
            putstatic org.jruby.ir.instructions.Instr.EMPTY_FIELD_ARRAY:[Ljava/lang/reflect/Field;
         2: .line 95
            new org.jruby.ir.instructions.Instr$1
            dup
            invokespecial org.jruby.ir.instructions.Instr$1.<init>:()V
            putstatic org.jruby.ir.instructions.Instr.dumpableFields:Ljava/lang/ClassValue;
         3: .line 123
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>(org.jruby.ir.Operation);
    descriptor: (Lorg/jruby/ir/Operation;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.jruby.ir.instructions.Instr this
        start local 1 // org.jruby.ir.Operation operation
         0: .line 47
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 48
            aload 0 /* this */
            aload 1 /* operation */
            putfield org.jruby.ir.instructions.Instr.operation:Lorg/jruby/ir/Operation;
         2: .line 49
            return
        end local 1 // org.jruby.ir.Operation operation
        end local 0 // org.jruby.ir.instructions.Instr this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    3     0       this  Lorg/jruby/ir/instructions/Instr;
            0    3     1  operation  Lorg/jruby/ir/Operation;
    MethodParameters:
           Name  Flags
      operation  

  public java.lang.String[] toStringNonOperandArgs();
    descriptor: ()[Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.jruby.ir.instructions.Instr this
         0: .line 52
            getstatic org.jruby.util.StringSupport.EMPTY_STRING_ARRAY:[Ljava/lang/String;
            areturn
        end local 0 // org.jruby.ir.instructions.Instr this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/jruby/ir/instructions/Instr;

  public void encode(org.jruby.ir.persistence.IRWriterEncoder);
    descriptor: (Lorg/jruby/ir/persistence/IRWriterEncoder;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // org.jruby.ir.instructions.Instr this
        start local 1 // org.jruby.ir.persistence.IRWriterEncoder e
         0: .line 56
            getstatic org.jruby.RubyInstanceConfig.IR_WRITING_DEBUG:Z
            ifeq 1
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            new java.lang.StringBuilder
            dup
            ldc "Instr("
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            invokevirtual org.jruby.ir.instructions.Instr.getOperation:()Lorg/jruby/ir/Operation;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc "): "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* this */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
         1: .line 57
      StackMap locals:
      StackMap stack:
            aload 1 /* e */
            aload 0 /* this */
            invokevirtual org.jruby.ir.instructions.Instr.getOperation:()Lorg/jruby/ir/Operation;
            invokeinterface org.jruby.ir.persistence.IRWriterEncoder.encode:(Lorg/jruby/ir/Operation;)V
         2: .line 58
            return
        end local 1 // org.jruby.ir.persistence.IRWriterEncoder e
        end local 0 // org.jruby.ir.instructions.Instr this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/jruby/ir/instructions/Instr;
            0    3     1     e  Lorg/jruby/ir/persistence/IRWriterEncoder;
    MethodParameters:
      Name  Flags
      e     

  public java.lang.String toString();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=4, args_size=1
        start local 0 // org.jruby.ir.instructions.Instr this
         0: .line 70
            new java.lang.StringBuilder
            dup
            aload 0 /* this */
            invokevirtual org.jruby.ir.instructions.Instr.isDead:()Z
            ifeq 1
            ldc "[DEAD]"
            goto 2
      StackMap locals: org.jruby.ir.instructions.Instr
      StackMap stack: new 0 new 0
         1: ldc ""
      StackMap locals: org.jruby.ir.instructions.Instr
      StackMap stack: new 0 new 0 java.lang.String
         2: invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            astore 1 /* buf */
        start local 1 // java.lang.StringBuilder buf
         3: .line 72
            aload 0 /* this */
            instanceof org.jruby.ir.instructions.ResultInstr
            ifeq 4
            aload 1 /* buf */
            aload 0 /* this */
            checkcast org.jruby.ir.instructions.ResultInstr
            invokeinterface org.jruby.ir.instructions.ResultInstr.getResult:()Lorg/jruby/ir/operands/Variable;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc " = "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
         4: .line 74
      StackMap locals: java.lang.StringBuilder
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.jruby.ir.instructions.Instr.getOperands:()[Lorg/jruby/ir/operands/Operand;
            astore 2 /* operands */
        start local 2 // org.jruby.ir.operands.Operand[] operands
         5: .line 76
            aload 1 /* buf */
            aload 0 /* this */
            getfield org.jruby.ir.instructions.Instr.operation:Lorg/jruby/ir/Operation;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            bipush 40
            invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
            pop
         6: .line 77
            aload 0 /* this */
            aload 1 /* buf */
            aload 2 /* operands */
            invokevirtual org.jruby.ir.instructions.Instr.toArgList:(Ljava/lang/StringBuilder;[Ljava/lang/Object;)Ljava/lang/StringBuilder;
            pop
         7: .line 79
            aload 0 /* this */
            invokevirtual org.jruby.ir.instructions.Instr.toStringNonOperandArgs:()[Ljava/lang/String;
            astore 3 /* extraArgs */
        start local 3 // java.lang.String[] extraArgs
         8: .line 80
            aload 3 /* extraArgs */
            arraylength
            iconst_1
            if_icmplt 12
         9: .line 81
            aload 2 /* operands */
            arraylength
            ifle 10
            aload 1 /* buf */
            bipush 32
            invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
            pop
        10: .line 82
      StackMap locals: org.jruby.ir.operands.Operand[] java.lang.String[]
      StackMap stack:
            aload 1 /* buf */
            bipush 59
            invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
            pop
        11: .line 83
            aload 0 /* this */
            aload 1 /* buf */
            aload 3 /* extraArgs */
            invokevirtual org.jruby.ir.instructions.Instr.toArgList:(Ljava/lang/StringBuilder;[Ljava/lang/Object;)Ljava/lang/StringBuilder;
            pop
        12: .line 85
      StackMap locals:
      StackMap stack:
            aload 1 /* buf */
            bipush 41
            invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
            pop
        13: .line 87
            aload 1 /* buf */
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            areturn
        end local 3 // java.lang.String[] extraArgs
        end local 2 // org.jruby.ir.operands.Operand[] operands
        end local 1 // java.lang.StringBuilder buf
        end local 0 // org.jruby.ir.instructions.Instr this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   14     0       this  Lorg/jruby/ir/instructions/Instr;
            3   14     1        buf  Ljava/lang/StringBuilder;
            5   14     2   operands  [Lorg/jruby/ir/operands/Operand;
            8   14     3  extraArgs  [Ljava/lang/String;

  public java.lang.reflect.Field[] dumpableFields();
    descriptor: ()[Ljava/lang/reflect/Field;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.jruby.ir.instructions.Instr this
         0: .line 126
            getstatic org.jruby.ir.instructions.Instr.dumpableFields:Ljava/lang/ClassValue;
            aload 0 /* this */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokevirtual java.lang.ClassValue.get:(Ljava/lang/Class;)Ljava/lang/Object;
            checkcast java.lang.reflect.Field[]
            areturn
        end local 0 // org.jruby.ir.instructions.Instr this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/jruby/ir/instructions/Instr;

  private java.lang.StringBuilder toArgList(java.lang.StringBuilder, java.lang.Object[]);
    descriptor: (Ljava/lang/StringBuilder;[Ljava/lang/Object;)Ljava/lang/StringBuilder;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=4, args_size=3
        start local 0 // org.jruby.ir.instructions.Instr this
        start local 1 // java.lang.StringBuilder buf
        start local 2 // java.lang.Object[] args
         0: .line 130
            aload 2 /* args */
            arraylength
            ifgt 1
            aload 1 /* buf */
            areturn
         1: .line 132
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 3 /* i */
        start local 3 // int i
         2: goto 5
         3: .line 133
      StackMap locals: int
      StackMap stack:
            aload 1 /* buf */
            aload 2 /* args */
            iload 3 /* i */
            aaload
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc ", "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
         4: .line 132
            iinc 3 /* i */ 1
      StackMap locals:
      StackMap stack:
         5: iload 3 /* i */
            aload 2 /* args */
            arraylength
            iconst_1
            isub
            if_icmplt 3
        end local 3 // int i
         6: .line 135
            aload 1 /* buf */
            aload 2 /* args */
            aload 2 /* args */
            arraylength
            iconst_1
            isub
            aaload
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            pop
         7: .line 137
            aload 1 /* buf */
            areturn
        end local 2 // java.lang.Object[] args
        end local 1 // java.lang.StringBuilder buf
        end local 0 // org.jruby.ir.instructions.Instr this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    8     0  this  Lorg/jruby/ir/instructions/Instr;
            0    8     1   buf  Ljava/lang/StringBuilder;
            0    8     2  args  [Ljava/lang/Object;
            2    6     3     i  I
    MethodParameters:
      Name  Flags
      buf   
      args  

  public org.jruby.ir.Operation getOperation();
    descriptor: ()Lorg/jruby/ir/Operation;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.jruby.ir.instructions.Instr this
         0: .line 142
            aload 0 /* this */
            getfield org.jruby.ir.instructions.Instr.operation:Lorg/jruby/ir/Operation;
            areturn
        end local 0 // org.jruby.ir.instructions.Instr this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/jruby/ir/instructions/Instr;
    RuntimeInvisibleAnnotations: 
      org.jruby.ir.Interp()
    RuntimeInvisibleTypeAnnotations: 
      METHOD_RETURN
        org.jruby.ir.Interp()

  public boolean hasSideEffects();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.jruby.ir.instructions.Instr this
         0: .line 149
            aload 0 /* this */
            getfield org.jruby.ir.instructions.Instr.operation:Lorg/jruby/ir/Operation;
            invokevirtual org.jruby.ir.Operation.hasSideEffects:()Z
            ireturn
        end local 0 // org.jruby.ir.instructions.Instr this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/jruby/ir/instructions/Instr;

  public boolean canRaiseException();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.jruby.ir.instructions.Instr this
         0: .line 154
            aload 0 /* this */
            getfield org.jruby.ir.instructions.Instr.operation:Lorg/jruby/ir/Operation;
            invokevirtual org.jruby.ir.Operation.canRaiseException:()Z
            ireturn
        end local 0 // org.jruby.ir.instructions.Instr this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/jruby/ir/instructions/Instr;

  public boolean transfersControl();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.jruby.ir.instructions.Instr this
         0: .line 159
            aload 0 /* this */
            getfield org.jruby.ir.instructions.Instr.operation:Lorg/jruby/ir/Operation;
            invokevirtual org.jruby.ir.Operation.transfersControl:()Z
            ireturn
        end local 0 // org.jruby.ir.instructions.Instr this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/jruby/ir/instructions/Instr;

  public boolean computeScopeFlags(org.jruby.ir.IRScope);
    descriptor: (Lorg/jruby/ir/IRScope;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=2, args_size=2
        start local 0 // org.jruby.ir.instructions.Instr this
        start local 1 // org.jruby.ir.IRScope scope
         0: .line 167
            iconst_0
            ireturn
        end local 1 // org.jruby.ir.IRScope scope
        end local 0 // org.jruby.ir.instructions.Instr this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    1     0   this  Lorg/jruby/ir/instructions/Instr;
            0    1     1  scope  Lorg/jruby/ir/IRScope;
    MethodParameters:
       Name  Flags
      scope  

  public boolean isDeletable();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.jruby.ir.instructions.Instr this
         0: .line 176
            aload 0 /* this */
            invokevirtual org.jruby.ir.instructions.Instr.hasSideEffects:()Z
            ifne 1
            aload 0 /* this */
            getfield org.jruby.ir.instructions.Instr.operation:Lorg/jruby/ir/Operation;
            invokevirtual org.jruby.ir.Operation.isDebugOp:()Z
            ifne 1
            aload 0 /* this */
            invokevirtual org.jruby.ir.instructions.Instr.canRaiseException:()Z
            ifne 1
            aload 0 /* this */
            invokevirtual org.jruby.ir.instructions.Instr.transfersControl:()Z
            ifeq 2
      StackMap locals:
      StackMap stack:
         1: iconst_0
            goto 3
      StackMap locals:
      StackMap stack:
         2: iconst_1
      StackMap locals:
      StackMap stack: int
         3: ireturn
        end local 0 // org.jruby.ir.instructions.Instr this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lorg/jruby/ir/instructions/Instr;

  public boolean canBeDeletedFromScope(org.jruby.ir.IRScope);
    descriptor: (Lorg/jruby/ir/IRScope;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=3, args_size=2
        start local 0 // org.jruby.ir.instructions.Instr this
        start local 1 // org.jruby.ir.IRScope s
         0: .line 180
            aload 0 /* this */
            invokevirtual org.jruby.ir.instructions.Instr.isDeletable:()Z
            ifne 2
         1: .line 181
            iconst_0
            ireturn
         2: .line 184
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            instanceof org.jruby.ir.instructions.ResultInstr
            ifeq 7
         3: .line 185
            aload 0 /* this */
            checkcast org.jruby.ir.instructions.ResultInstr
            invokeinterface org.jruby.ir.instructions.ResultInstr.getResult:()Lorg/jruby/ir/operands/Variable;
            astore 2 /* r */
        start local 2 // org.jruby.ir.operands.Variable r
         4: .line 189
            aload 1 /* s */
            invokevirtual org.jruby.ir.IRScope.bindingHasEscaped:()Z
            ifeq 7
            aload 2 /* r */
            instanceof org.jruby.ir.operands.LocalVariable
            ifeq 5
            iconst_0
            goto 6
      StackMap locals: org.jruby.ir.operands.Variable
      StackMap stack:
         5: iconst_1
      StackMap locals:
      StackMap stack: int
         6: ireturn
        end local 2 // org.jruby.ir.operands.Variable r
         7: .line 192
      StackMap locals:
      StackMap stack:
            iconst_1
            ireturn
        end local 1 // org.jruby.ir.IRScope s
        end local 0 // org.jruby.ir.instructions.Instr this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    8     0  this  Lorg/jruby/ir/instructions/Instr;
            0    8     1     s  Lorg/jruby/ir/IRScope;
            4    7     2     r  Lorg/jruby/ir/operands/Variable;
    MethodParameters:
      Name  Flags
      s     

  public void markDead();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.jruby.ir.instructions.Instr this
         0: .line 197
            aload 0 /* this */
            iconst_1
            putfield org.jruby.ir.instructions.Instr.isDead:Z
         1: .line 198
            return
        end local 0 // org.jruby.ir.instructions.Instr this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/jruby/ir/instructions/Instr;

  public boolean isDead();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.jruby.ir.instructions.Instr this
         0: .line 202
            aload 0 /* this */
            getfield org.jruby.ir.instructions.Instr.isDead:Z
            ireturn
        end local 0 // org.jruby.ir.instructions.Instr this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/jruby/ir/instructions/Instr;
    RuntimeInvisibleAnnotations: 
      org.jruby.ir.Interp()
    RuntimeInvisibleTypeAnnotations: 
      METHOD_RETURN
        org.jruby.ir.Interp()

  public abstract org.jruby.ir.operands.Operand[] getOperands();
    descriptor: ()[Lorg/jruby/ir/operands/Operand;
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT

  public abstract void setOperand(int, org.jruby.ir.operands.Operand);
    descriptor: (ILorg/jruby/ir/operands/Operand;)V
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    MethodParameters:
         Name  Flags
      i        
      operand  

  public java.util.List<org.jruby.ir.operands.Variable> getUsedVariables();
    descriptor: ()Ljava/util/List;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=6, args_size=1
        start local 0 // org.jruby.ir.instructions.Instr this
         0: .line 211
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 1 /* vars */
        start local 1 // java.util.ArrayList vars
         1: .line 212
            aload 0 /* this */
            invokevirtual org.jruby.ir.instructions.Instr.getOperands:()[Lorg/jruby/ir/operands/Operand;
            dup
            astore 5
            arraylength
            istore 4
            iconst_0
            istore 3
            goto 5
      StackMap locals: org.jruby.ir.instructions.Instr java.util.ArrayList top int int org.jruby.ir.operands.Operand[]
      StackMap stack:
         2: aload 5
            iload 3
            aaload
            astore 2 /* operand */
        start local 2 // org.jruby.ir.operands.Operand operand
         3: .line 213
            aload 2 /* operand */
            aload 1 /* vars */
            invokevirtual org.jruby.ir.operands.Operand.addUsedVariables:(Ljava/util/List;)V
        end local 2 // org.jruby.ir.operands.Operand operand
         4: .line 212
            iinc 3 1
      StackMap locals:
      StackMap stack:
         5: iload 3
            iload 4
            if_icmplt 2
         6: .line 216
            aload 1 /* vars */
            areturn
        end local 1 // java.util.ArrayList vars
        end local 0 // org.jruby.ir.instructions.Instr this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    7     0     this  Lorg/jruby/ir/instructions/Instr;
            1    7     1     vars  Ljava/util/ArrayList<Lorg/jruby/ir/operands/Variable;>;
            3    4     2  operand  Lorg/jruby/ir/operands/Operand;
    Signature: ()Ljava/util/List<Lorg/jruby/ir/operands/Variable;>;

  public void renameVars(java.util.Map<org.jruby.ir.operands.Operand, org.jruby.ir.operands.Operand>);
    descriptor: (Ljava/util/Map;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=5, args_size=2
        start local 0 // org.jruby.ir.instructions.Instr this
        start local 1 // java.util.Map renameMap
         0: .line 220
            aload 0 /* this */
            aload 1 /* renameMap */
            iconst_1
            invokevirtual org.jruby.ir.instructions.Instr.simplifyOperands:(Ljava/util/Map;Z)V
         1: .line 221
            aload 0 /* this */
            instanceof org.jruby.ir.instructions.ResultInstr
            ifeq 6
         2: .line 222
            aload 0 /* this */
            checkcast org.jruby.ir.instructions.ResultInstr
            astore 2 /* ri */
        start local 2 // org.jruby.ir.instructions.ResultInstr ri
         3: .line 223
            aload 2 /* ri */
            invokeinterface org.jruby.ir.instructions.ResultInstr.getResult:()Lorg/jruby/ir/operands/Variable;
            astore 3 /* oldVar */
        start local 3 // org.jruby.ir.operands.Variable oldVar
         4: .line 224
            aload 1 /* renameMap */
            aload 3 /* oldVar */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast org.jruby.ir.operands.Variable
            astore 4 /* newVar */
        start local 4 // org.jruby.ir.operands.Variable newVar
         5: .line 225
            aload 4 /* newVar */
            ifnull 6
            aload 2 /* ri */
            aload 4 /* newVar */
            invokeinterface org.jruby.ir.instructions.ResultInstr.updateResult:(Lorg/jruby/ir/operands/Variable;)V
        end local 4 // org.jruby.ir.operands.Variable newVar
        end local 3 // org.jruby.ir.operands.Variable oldVar
        end local 2 // org.jruby.ir.instructions.ResultInstr ri
         6: .line 227
      StackMap locals:
      StackMap stack:
            return
        end local 1 // java.util.Map renameMap
        end local 0 // org.jruby.ir.instructions.Instr this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    7     0       this  Lorg/jruby/ir/instructions/Instr;
            0    7     1  renameMap  Ljava/util/Map<Lorg/jruby/ir/operands/Operand;Lorg/jruby/ir/operands/Operand;>;
            3    6     2         ri  Lorg/jruby/ir/instructions/ResultInstr;
            4    6     3     oldVar  Lorg/jruby/ir/operands/Variable;
            5    6     4     newVar  Lorg/jruby/ir/operands/Variable;
    Signature: (Ljava/util/Map<Lorg/jruby/ir/operands/Operand;Lorg/jruby/ir/operands/Operand;>;)V
    MethodParameters:
           Name  Flags
      renameMap  

  public abstract org.jruby.ir.instructions.Instr clone(org.jruby.ir.transformations.inlining.CloneInfo);
    descriptor: (Lorg/jruby/ir/transformations/inlining/CloneInfo;)Lorg/jruby/ir/instructions/Instr;
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    MethodParameters:
      Name  Flags
      info  

  public org.jruby.ir.operands.Operand[] cloneOperands(org.jruby.ir.transformations.inlining.CloneInfo);
    descriptor: (Lorg/jruby/ir/transformations/inlining/CloneInfo;)[Lorg/jruby/ir/operands/Operand;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=5, args_size=2
        start local 0 // org.jruby.ir.instructions.Instr this
        start local 1 // org.jruby.ir.transformations.inlining.CloneInfo info
         0: .line 243
            aload 0 /* this */
            invokevirtual org.jruby.ir.instructions.Instr.getOperands:()[Lorg/jruby/ir/operands/Operand;
            astore 2 /* operands */
        start local 2 // org.jruby.ir.operands.Operand[] operands
         1: .line 244
            aload 2 /* operands */
            arraylength
            anewarray org.jruby.ir.operands.Operand
            astore 3 /* newOperands */
        start local 3 // org.jruby.ir.operands.Operand[] newOperands
         2: .line 246
            iconst_0
            istore 4 /* i */
        start local 4 // int i
         3: goto 6
         4: .line 247
      StackMap locals: org.jruby.ir.operands.Operand[] org.jruby.ir.operands.Operand[] int
      StackMap stack:
            aload 3 /* newOperands */
            iload 4 /* i */
            aload 2 /* operands */
            iload 4 /* i */
            aaload
            aload 1 /* info */
            invokevirtual org.jruby.ir.operands.Operand.cloneForInlining:(Lorg/jruby/ir/transformations/inlining/CloneInfo;)Lorg/jruby/ir/operands/Operand;
            aastore
         5: .line 246
            iinc 4 /* i */ 1
      StackMap locals:
      StackMap stack:
         6: iload 4 /* i */
            aload 2 /* operands */
            arraylength
            if_icmplt 4
        end local 4 // int i
         7: .line 250
            aload 3 /* newOperands */
            areturn
        end local 3 // org.jruby.ir.operands.Operand[] newOperands
        end local 2 // org.jruby.ir.operands.Operand[] operands
        end local 1 // org.jruby.ir.transformations.inlining.CloneInfo info
        end local 0 // org.jruby.ir.instructions.Instr this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    8     0         this  Lorg/jruby/ir/instructions/Instr;
            0    8     1         info  Lorg/jruby/ir/transformations/inlining/CloneInfo;
            1    8     2     operands  [Lorg/jruby/ir/operands/Operand;
            2    8     3  newOperands  [Lorg/jruby/ir/operands/Operand;
            3    7     4            i  I
    MethodParameters:
      Name  Flags
      info  

  public void simplifyOperands(java.util.Map<org.jruby.ir.operands.Operand, org.jruby.ir.operands.Operand>, );
    descriptor: (Ljava/util/Map;Z)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=5, args_size=3
        start local 0 // org.jruby.ir.instructions.Instr this
        start local 1 // java.util.Map valueMap
        start local 2 // boolean force
         0: .line 261
            aload 0 /* this */
            invokevirtual org.jruby.ir.instructions.Instr.getOperands:()[Lorg/jruby/ir/operands/Operand;
            astore 3 /* operands */
        start local 3 // org.jruby.ir.operands.Operand[] operands
         1: .line 262
            iconst_0
            istore 4 /* i */
        start local 4 // int i
         2: goto 5
         3: .line 263
      StackMap locals: org.jruby.ir.operands.Operand[] int
      StackMap stack:
            aload 0 /* this */
            iload 4 /* i */
            aload 3 /* operands */
            iload 4 /* i */
            aaload
            aload 1 /* valueMap */
            iload 2 /* force */
            invokevirtual org.jruby.ir.operands.Operand.getSimplifiedOperand:(Ljava/util/Map;Z)Lorg/jruby/ir/operands/Operand;
            invokevirtual org.jruby.ir.instructions.Instr.setOperand:(ILorg/jruby/ir/operands/Operand;)V
         4: .line 262
            iinc 4 /* i */ 1
      StackMap locals:
      StackMap stack:
         5: iload 4 /* i */
            aload 3 /* operands */
            arraylength
            if_icmplt 3
        end local 4 // int i
         6: .line 265
            return
        end local 3 // org.jruby.ir.operands.Operand[] operands
        end local 2 // boolean force
        end local 1 // java.util.Map valueMap
        end local 0 // org.jruby.ir.instructions.Instr this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    7     0      this  Lorg/jruby/ir/instructions/Instr;
            0    7     1  valueMap  Ljava/util/Map<Lorg/jruby/ir/operands/Operand;Lorg/jruby/ir/operands/Operand;>;
            0    7     2     force  Z
            1    7     3  operands  [Lorg/jruby/ir/operands/Operand;
            2    6     4         i  I
    Signature: (Ljava/util/Map<Lorg/jruby/ir/operands/Operand;Lorg/jruby/ir/operands/Operand;>;Z)V
    MethodParameters:
          Name  Flags
      valueMap  
      force     

  public org.jruby.ir.operands.Operand simplifyAndGetResult(org.jruby.ir.IRScope, java.util.Map<org.jruby.ir.operands.Operand, org.jruby.ir.operands.Operand>);
    descriptor: (Lorg/jruby/ir/IRScope;Ljava/util/Map;)Lorg/jruby/ir/operands/Operand;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // org.jruby.ir.instructions.Instr this
        start local 1 // org.jruby.ir.IRScope scope
        start local 2 // java.util.Map valueMap
         0: .line 281
            aload 0 /* this */
            aload 2 /* valueMap */
            iconst_0
            invokevirtual org.jruby.ir.instructions.Instr.simplifyOperands:(Ljava/util/Map;Z)V
         1: .line 283
            aconst_null
            areturn
        end local 2 // java.util.Map valueMap
        end local 1 // org.jruby.ir.IRScope scope
        end local 0 // org.jruby.ir.instructions.Instr this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    2     0      this  Lorg/jruby/ir/instructions/Instr;
            0    2     1     scope  Lorg/jruby/ir/IRScope;
            0    2     2  valueMap  Ljava/util/Map<Lorg/jruby/ir/operands/Operand;Lorg/jruby/ir/operands/Operand;>;
    Signature: (Lorg/jruby/ir/IRScope;Ljava/util/Map<Lorg/jruby/ir/operands/Operand;Lorg/jruby/ir/operands/Operand;>;)Lorg/jruby/ir/operands/Operand;
    MethodParameters:
          Name  Flags
      scope     
      valueMap  

  public java.lang.Object interpret(org.jruby.runtime.ThreadContext, org.jruby.parser.StaticScope, org.jruby.runtime.DynamicScope, org.jruby.runtime.builtin.IRubyObject, java.lang.Object[]);
    descriptor: (Lorg/jruby/runtime/ThreadContext;Lorg/jruby/parser/StaticScope;Lorg/jruby/runtime/DynamicScope;Lorg/jruby/runtime/builtin/IRubyObject;[Ljava/lang/Object;)Ljava/lang/Object;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=6, args_size=6
        start local 0 // org.jruby.ir.instructions.Instr this
        start local 1 // org.jruby.runtime.ThreadContext context
        start local 2 // org.jruby.parser.StaticScope currScope
        start local 3 // org.jruby.runtime.DynamicScope currDynScope
        start local 4 // org.jruby.runtime.builtin.IRubyObject self
        start local 5 // java.lang.Object[] temp
         0: .line 288
            new java.lang.RuntimeException
            dup
            new java.lang.StringBuilder
            dup
            aload 0 /* this */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokevirtual java.lang.Class.getSimpleName:()Ljava/lang/String;
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc " should not be directly interpreted"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;)V
            athrow
        end local 5 // java.lang.Object[] temp
        end local 4 // org.jruby.runtime.builtin.IRubyObject self
        end local 3 // org.jruby.runtime.DynamicScope currDynScope
        end local 2 // org.jruby.parser.StaticScope currScope
        end local 1 // org.jruby.runtime.ThreadContext context
        end local 0 // org.jruby.ir.instructions.Instr this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    1     0          this  Lorg/jruby/ir/instructions/Instr;
            0    1     1       context  Lorg/jruby/runtime/ThreadContext;
            0    1     2     currScope  Lorg/jruby/parser/StaticScope;
            0    1     3  currDynScope  Lorg/jruby/runtime/DynamicScope;
            0    1     4          self  Lorg/jruby/runtime/builtin/IRubyObject;
            0    1     5          temp  [Ljava/lang/Object;
    RuntimeInvisibleAnnotations: 
      org.jruby.ir.Interp()
    RuntimeInvisibleTypeAnnotations: 
      METHOD_RETURN
        org.jruby.ir.Interp()
    MethodParameters:
              Name  Flags
      context       
      currScope     
      currDynScope  
      self          
      temp          

  public int interpretAndGetNewIPC(org.jruby.runtime.ThreadContext, org.jruby.runtime.DynamicScope, org.jruby.parser.StaticScope, org.jruby.runtime.builtin.IRubyObject, java.lang.Object[], int);
    descriptor: (Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/DynamicScope;Lorg/jruby/parser/StaticScope;Lorg/jruby/runtime/builtin/IRubyObject;[Ljava/lang/Object;I)I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=7, args_size=7
        start local 0 // org.jruby.ir.instructions.Instr this
        start local 1 // org.jruby.runtime.ThreadContext context
        start local 2 // org.jruby.runtime.DynamicScope currDynScope
        start local 3 // org.jruby.parser.StaticScope currScope
        start local 4 // org.jruby.runtime.builtin.IRubyObject self
        start local 5 // java.lang.Object[] temp
        start local 6 // int ipc
         0: .line 293
            new java.lang.RuntimeException
            dup
            new java.lang.StringBuilder
            dup
            aload 0 /* this */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokevirtual java.lang.Class.getSimpleName:()Ljava/lang/String;
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc " should not be directly interpreted"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;)V
            athrow
        end local 6 // int ipc
        end local 5 // java.lang.Object[] temp
        end local 4 // org.jruby.runtime.builtin.IRubyObject self
        end local 3 // org.jruby.parser.StaticScope currScope
        end local 2 // org.jruby.runtime.DynamicScope currDynScope
        end local 1 // org.jruby.runtime.ThreadContext context
        end local 0 // org.jruby.ir.instructions.Instr this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    1     0          this  Lorg/jruby/ir/instructions/Instr;
            0    1     1       context  Lorg/jruby/runtime/ThreadContext;
            0    1     2  currDynScope  Lorg/jruby/runtime/DynamicScope;
            0    1     3     currScope  Lorg/jruby/parser/StaticScope;
            0    1     4          self  Lorg/jruby/runtime/builtin/IRubyObject;
            0    1     5          temp  [Ljava/lang/Object;
            0    1     6           ipc  I
    RuntimeInvisibleAnnotations: 
      org.jruby.ir.Interp()
    RuntimeInvisibleTypeAnnotations: 
      METHOD_RETURN
        org.jruby.ir.Interp()
    MethodParameters:
              Name  Flags
      context       
      currDynScope  
      currScope     
      self          
      temp          
      ipc           

  public void visit(org.jruby.ir.IRVisitor);
    descriptor: (Lorg/jruby/ir/IRVisitor;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=2, args_size=2
        start local 0 // org.jruby.ir.instructions.Instr this
        start local 1 // org.jruby.ir.IRVisitor visitor
         0: .line 297
            new java.lang.RuntimeException
            dup
            new java.lang.StringBuilder
            dup
            aload 0 /* this */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokevirtual java.lang.Class.getSimpleName:()Ljava/lang/String;
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc " has no compile logic"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;)V
            athrow
        end local 1 // org.jruby.ir.IRVisitor visitor
        end local 0 // org.jruby.ir.instructions.Instr this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0     this  Lorg/jruby/ir/instructions/Instr;
            0    1     1  visitor  Lorg/jruby/ir/IRVisitor;
    MethodParameters:
         Name  Flags
      visitor  
}
SourceFile: "Instr.java"
NestMembers:
  org.jruby.ir.instructions.Instr$1
InnerClasses:
  org.jruby.ir.instructions.Instr$1