class org.jruby.ir.IRBuilder$EnsureBlockInfo
  minor version: 0
  major version: 59
  flags: flags: (0x0020) ACC_SUPER
  this_class: org.jruby.ir.IRBuilder$EnsureBlockInfo
  super_class: java.lang.Object
{
  org.jruby.ir.operands.Label regionStart;
    descriptor: Lorg/jruby/ir/operands/Label;
    flags: (0x0000) 

  org.jruby.ir.operands.Label start;
    descriptor: Lorg/jruby/ir/operands/Label;
    flags: (0x0000) 

  org.jruby.ir.operands.Label end;
    descriptor: Lorg/jruby/ir/operands/Label;
    flags: (0x0000) 

  org.jruby.ir.operands.Label dummyRescueBlockLabel;
    descriptor: Lorg/jruby/ir/operands/Label;
    flags: (0x0000) 

  org.jruby.ir.operands.Variable savedGlobalException;
    descriptor: Lorg/jruby/ir/operands/Variable;
    flags: (0x0000) 

  boolean needsBacktrace;
    descriptor: Z
    flags: (0x0000) 

  org.jruby.ir.operands.Label bodyRescuer;
    descriptor: Lorg/jruby/ir/operands/Label;
    flags: (0x0000) 

  org.jruby.ir.IRBuilder$IRLoop innermostLoop;
    descriptor: Lorg/jruby/ir/IRBuilder$IRLoop;
    flags: (0x0000) 

  org.jruby.ast.RescueNode matchingRescueNode;
    descriptor: Lorg/jruby/ast/RescueNode;
    flags: (0x0000) 

  java.util.List<org.jruby.ir.instructions.Instr> instrs;
    descriptor: Ljava/util/List;
    flags: (0x0000) 
    Signature: Ljava/util/List<Lorg/jruby/ir/instructions/Instr;>;

  public void <init>(org.jruby.ir.IRScope, org.jruby.ast.RescueNode, org.jruby.ir.IRBuilder$IRLoop, org.jruby.ir.operands.Label);
    descriptor: (Lorg/jruby/ir/IRScope;Lorg/jruby/ast/RescueNode;Lorg/jruby/ir/IRBuilder$IRLoop;Lorg/jruby/ir/operands/Label;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=5, args_size=5
        start local 0 // org.jruby.ir.IRBuilder$EnsureBlockInfo this
        start local 1 // org.jruby.ir.IRScope s
        start local 2 // org.jruby.ast.RescueNode n
        start local 3 // org.jruby.ir.IRBuilder$IRLoop l
        start local 4 // org.jruby.ir.operands.Label bodyRescuer
         0: .line 193
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 194
            aload 0 /* this */
            aload 1 /* s */
            invokevirtual org.jruby.ir.IRScope.getNewLabel:()Lorg/jruby/ir/operands/Label;
            putfield org.jruby.ir.IRBuilder$EnsureBlockInfo.regionStart:Lorg/jruby/ir/operands/Label;
         2: .line 195
            aload 0 /* this */
            aload 1 /* s */
            invokevirtual org.jruby.ir.IRScope.getNewLabel:()Lorg/jruby/ir/operands/Label;
            putfield org.jruby.ir.IRBuilder$EnsureBlockInfo.start:Lorg/jruby/ir/operands/Label;
         3: .line 196
            aload 0 /* this */
            aload 1 /* s */
            invokevirtual org.jruby.ir.IRScope.getNewLabel:()Lorg/jruby/ir/operands/Label;
            putfield org.jruby.ir.IRBuilder$EnsureBlockInfo.end:Lorg/jruby/ir/operands/Label;
         4: .line 197
            aload 0 /* this */
            aload 1 /* s */
            invokevirtual org.jruby.ir.IRScope.getNewLabel:()Lorg/jruby/ir/operands/Label;
            putfield org.jruby.ir.IRBuilder$EnsureBlockInfo.dummyRescueBlockLabel:Lorg/jruby/ir/operands/Label;
         5: .line 198
            aload 0 /* this */
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            putfield org.jruby.ir.IRBuilder$EnsureBlockInfo.instrs:Ljava/util/List;
         6: .line 199
            aload 0 /* this */
            aconst_null
            putfield org.jruby.ir.IRBuilder$EnsureBlockInfo.savedGlobalException:Lorg/jruby/ir/operands/Variable;
         7: .line 200
            aload 0 /* this */
            aload 3 /* l */
            putfield org.jruby.ir.IRBuilder$EnsureBlockInfo.innermostLoop:Lorg/jruby/ir/IRBuilder$IRLoop;
         8: .line 201
            aload 0 /* this */
            aload 2 /* n */
            putfield org.jruby.ir.IRBuilder$EnsureBlockInfo.matchingRescueNode:Lorg/jruby/ast/RescueNode;
         9: .line 202
            aload 0 /* this */
            aload 4 /* bodyRescuer */
            putfield org.jruby.ir.IRBuilder$EnsureBlockInfo.bodyRescuer:Lorg/jruby/ir/operands/Label;
        10: .line 203
            aload 0 /* this */
            iconst_1
            putfield org.jruby.ir.IRBuilder$EnsureBlockInfo.needsBacktrace:Z
        11: .line 204
            return
        end local 4 // org.jruby.ir.operands.Label bodyRescuer
        end local 3 // org.jruby.ir.IRBuilder$IRLoop l
        end local 2 // org.jruby.ast.RescueNode n
        end local 1 // org.jruby.ir.IRScope s
        end local 0 // org.jruby.ir.IRBuilder$EnsureBlockInfo this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   12     0         this  Lorg/jruby/ir/IRBuilder$EnsureBlockInfo;
            0   12     1            s  Lorg/jruby/ir/IRScope;
            0   12     2            n  Lorg/jruby/ast/RescueNode;
            0   12     3            l  Lorg/jruby/ir/IRBuilder$IRLoop;
            0   12     4  bodyRescuer  Lorg/jruby/ir/operands/Label;
    MethodParameters:
             Name  Flags
      s            
      n            
      l            
      bodyRescuer  

  public void addInstr(org.jruby.ir.instructions.Instr);
    descriptor: (Lorg/jruby/ir/instructions/Instr;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.jruby.ir.IRBuilder$EnsureBlockInfo this
        start local 1 // org.jruby.ir.instructions.Instr i
         0: .line 207
            aload 0 /* this */
            getfield org.jruby.ir.IRBuilder$EnsureBlockInfo.instrs:Ljava/util/List;
            aload 1 /* i */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
         1: .line 208
            return
        end local 1 // org.jruby.ir.instructions.Instr i
        end local 0 // org.jruby.ir.IRBuilder$EnsureBlockInfo this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/jruby/ir/IRBuilder$EnsureBlockInfo;
            0    2     1     i  Lorg/jruby/ir/instructions/Instr;
    MethodParameters:
      Name  Flags
      i     

  public void addInstrAtBeginning(org.jruby.ir.instructions.Instr);
    descriptor: (Lorg/jruby/ir/instructions/Instr;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // org.jruby.ir.IRBuilder$EnsureBlockInfo this
        start local 1 // org.jruby.ir.instructions.Instr i
         0: .line 211
            aload 0 /* this */
            getfield org.jruby.ir.IRBuilder$EnsureBlockInfo.instrs:Ljava/util/List;
            iconst_0
            aload 1 /* i */
            invokeinterface java.util.List.add:(ILjava/lang/Object;)V
         1: .line 212
            return
        end local 1 // org.jruby.ir.instructions.Instr i
        end local 0 // org.jruby.ir.IRBuilder$EnsureBlockInfo this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/jruby/ir/IRBuilder$EnsureBlockInfo;
            0    2     1     i  Lorg/jruby/ir/instructions/Instr;
    MethodParameters:
      Name  Flags
      i     

  public void emitBody(org.jruby.ir.IRBuilder);
    descriptor: (Lorg/jruby/ir/IRBuilder;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=4, args_size=2
        start local 0 // org.jruby.ir.IRBuilder$EnsureBlockInfo this
        start local 1 // org.jruby.ir.IRBuilder b
         0: .line 215
            aload 1 /* b */
            new org.jruby.ir.instructions.LabelInstr
            dup
            aload 0 /* this */
            getfield org.jruby.ir.IRBuilder$EnsureBlockInfo.start:Lorg/jruby/ir/operands/Label;
            invokespecial org.jruby.ir.instructions.LabelInstr.<init>:(Lorg/jruby/ir/operands/Label;)V
            invokevirtual org.jruby.ir.IRBuilder.addInstr:(Lorg/jruby/ir/instructions/Instr;)V
         1: .line 216
            aload 0 /* this */
            getfield org.jruby.ir.IRBuilder$EnsureBlockInfo.instrs:Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 3
            goto 4
      StackMap locals: org.jruby.ir.IRBuilder$EnsureBlockInfo org.jruby.ir.IRBuilder top java.util.Iterator
      StackMap stack:
         2: aload 3
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.jruby.ir.instructions.Instr
            astore 2 /* i */
        start local 2 // org.jruby.ir.instructions.Instr i
         3: .line 217
            aload 1 /* b */
            aload 2 /* i */
            invokevirtual org.jruby.ir.IRBuilder.addInstr:(Lorg/jruby/ir/instructions/Instr;)V
        end local 2 // org.jruby.ir.instructions.Instr i
         4: .line 216
      StackMap locals:
      StackMap stack:
            aload 3
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 2
         5: .line 219
            return
        end local 1 // org.jruby.ir.IRBuilder b
        end local 0 // org.jruby.ir.IRBuilder$EnsureBlockInfo this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    6     0  this  Lorg/jruby/ir/IRBuilder$EnsureBlockInfo;
            0    6     1     b  Lorg/jruby/ir/IRBuilder;
            3    4     2     i  Lorg/jruby/ir/instructions/Instr;
    MethodParameters:
      Name  Flags
      b     

  public void cloneIntoHostScope(org.jruby.ir.IRBuilder);
    descriptor: (Lorg/jruby/ir/IRBuilder;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=8, args_size=2
        start local 0 // org.jruby.ir.IRBuilder$EnsureBlockInfo this
        start local 1 // org.jruby.ir.IRBuilder builder
         0: .line 223
            aload 0 /* this */
            getfield org.jruby.ir.IRBuilder$EnsureBlockInfo.savedGlobalException:Lorg/jruby/ir/operands/Variable;
            ifnull 3
         1: .line 225
            aload 0 /* this */
            getfield org.jruby.ir.IRBuilder$EnsureBlockInfo.needsBacktrace:Z
            ifne 2
            aload 1 /* builder */
            aload 1 /* builder */
            getfield org.jruby.ir.IRBuilder.manager:Lorg/jruby/ir/IRManager;
            iconst_1
            invokevirtual org.jruby.ir.IRManager.needsBacktrace:(Z)Lorg/jruby/ir/instructions/ToggleBacktraceInstr;
            invokevirtual org.jruby.ir.IRBuilder.addInstr:(Lorg/jruby/ir/instructions/Instr;)V
         2: .line 226
      StackMap locals:
      StackMap stack:
            aload 1 /* builder */
            new org.jruby.ir.instructions.PutGlobalVarInstr
            dup
            aload 1 /* builder */
            ldc "$!"
            invokevirtual org.jruby.ir.IRBuilder.symbol:(Ljava/lang/String;)Lorg/jruby/RubySymbol;
            aload 0 /* this */
            getfield org.jruby.ir.IRBuilder$EnsureBlockInfo.savedGlobalException:Lorg/jruby/ir/operands/Variable;
            invokespecial org.jruby.ir.instructions.PutGlobalVarInstr.<init>:(Lorg/jruby/RubySymbol;Lorg/jruby/ir/operands/Operand;)V
            invokevirtual org.jruby.ir.IRBuilder.addInstr:(Lorg/jruby/ir/instructions/Instr;)V
         3: .line 233
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.jruby.ir.IRBuilder$EnsureBlockInfo.instrs:Ljava/util/List;
            invokeinterface java.util.List.size:()I
            ifne 4
            return
         4: .line 235
      StackMap locals:
      StackMap stack:
            new org.jruby.ir.transformations.inlining.SimpleCloneInfo
            dup
            aload 1 /* builder */
            getfield org.jruby.ir.IRBuilder.scope:Lorg/jruby/ir/IRScope;
            iconst_1
            invokespecial org.jruby.ir.transformations.inlining.SimpleCloneInfo.<init>:(Lorg/jruby/ir/IRScope;Z)V
            astore 2 /* ii */
        start local 2 // org.jruby.ir.transformations.inlining.SimpleCloneInfo ii
         5: .line 240
            aload 2 /* ii */
            aload 0 /* this */
            getfield org.jruby.ir.IRBuilder$EnsureBlockInfo.start:Lorg/jruby/ir/operands/Label;
            invokevirtual org.jruby.ir.transformations.inlining.SimpleCloneInfo.renameLabel:(Lorg/jruby/ir/operands/Label;)V
         6: .line 241
            aload 0 /* this */
            getfield org.jruby.ir.IRBuilder$EnsureBlockInfo.instrs:Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 4
            goto 9
      StackMap locals: org.jruby.ir.IRBuilder$EnsureBlockInfo org.jruby.ir.IRBuilder org.jruby.ir.transformations.inlining.SimpleCloneInfo top java.util.Iterator
      StackMap stack:
         7: aload 4
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.jruby.ir.instructions.Instr
            astore 3 /* i */
        start local 3 // org.jruby.ir.instructions.Instr i
         8: .line 242
            aload 3 /* i */
            instanceof org.jruby.ir.instructions.LabelInstr
            ifeq 9
            aload 2 /* ii */
            aload 3 /* i */
            checkcast org.jruby.ir.instructions.LabelInstr
            invokevirtual org.jruby.ir.instructions.LabelInstr.getLabel:()Lorg/jruby/ir/operands/Label;
            invokevirtual org.jruby.ir.transformations.inlining.SimpleCloneInfo.renameLabel:(Lorg/jruby/ir/operands/Label;)V
        end local 3 // org.jruby.ir.instructions.Instr i
         9: .line 241
      StackMap locals:
      StackMap stack:
            aload 4
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 7
        10: .line 246
            aload 1 /* builder */
            new org.jruby.ir.instructions.LabelInstr
            dup
            aload 2 /* ii */
            aload 0 /* this */
            getfield org.jruby.ir.IRBuilder$EnsureBlockInfo.start:Lorg/jruby/ir/operands/Label;
            invokevirtual org.jruby.ir.transformations.inlining.SimpleCloneInfo.getRenamedLabel:(Lorg/jruby/ir/operands/Label;)Lorg/jruby/ir/operands/Label;
            invokespecial org.jruby.ir.instructions.LabelInstr.<init>:(Lorg/jruby/ir/operands/Label;)V
            invokevirtual org.jruby.ir.IRBuilder.addInstr:(Lorg/jruby/ir/instructions/Instr;)V
        11: .line 247
            aload 1 /* builder */
            new org.jruby.ir.instructions.ExceptionRegionStartMarkerInstr
            dup
            aload 0 /* this */
            getfield org.jruby.ir.IRBuilder$EnsureBlockInfo.bodyRescuer:Lorg/jruby/ir/operands/Label;
            invokespecial org.jruby.ir.instructions.ExceptionRegionStartMarkerInstr.<init>:(Lorg/jruby/ir/operands/Label;)V
            invokevirtual org.jruby.ir.IRBuilder.addInstr:(Lorg/jruby/ir/instructions/Instr;)V
        12: .line 248
            aload 0 /* this */
            getfield org.jruby.ir.IRBuilder$EnsureBlockInfo.instrs:Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 4
            goto 20
      StackMap locals:
      StackMap stack:
        13: aload 4
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.jruby.ir.instructions.Instr
            astore 3 /* instr */
        start local 3 // org.jruby.ir.instructions.Instr instr
        14: .line 249
            aload 3 /* instr */
            aload 2 /* ii */
            invokevirtual org.jruby.ir.instructions.Instr.clone:(Lorg/jruby/ir/transformations/inlining/CloneInfo;)Lorg/jruby/ir/instructions/Instr;
            astore 5 /* clonedInstr */
        start local 5 // org.jruby.ir.instructions.Instr clonedInstr
        15: .line 250
            aload 5 /* clonedInstr */
            instanceof org.jruby.ir.instructions.CallBase
            ifeq 19
        16: .line 251
            aload 5 /* clonedInstr */
            checkcast org.jruby.ir.instructions.CallBase
            astore 6 /* call */
        start local 6 // org.jruby.ir.instructions.CallBase call
        17: .line 252
            aload 6 /* call */
            aconst_null
            invokevirtual org.jruby.ir.instructions.CallBase.getClosureArg:(Lorg/jruby/ir/operands/Operand;)Lorg/jruby/ir/operands/Operand;
            astore 7 /* block */
        start local 7 // org.jruby.ir.operands.Operand block
        18: .line 253
            aload 7 /* block */
            instanceof org.jruby.ir.operands.WrappedIRClosure
            ifeq 19
            aload 1 /* builder */
            getfield org.jruby.ir.IRBuilder.scope:Lorg/jruby/ir/IRScope;
            aload 7 /* block */
            checkcast org.jruby.ir.operands.WrappedIRClosure
            invokevirtual org.jruby.ir.operands.WrappedIRClosure.getClosure:()Lorg/jruby/ir/IRClosure;
            invokevirtual org.jruby.ir.IRScope.addClosure:(Lorg/jruby/ir/IRClosure;)V
        end local 7 // org.jruby.ir.operands.Operand block
        end local 6 // org.jruby.ir.instructions.CallBase call
        19: .line 255
      StackMap locals: org.jruby.ir.IRBuilder$EnsureBlockInfo org.jruby.ir.IRBuilder org.jruby.ir.transformations.inlining.SimpleCloneInfo org.jruby.ir.instructions.Instr java.util.Iterator org.jruby.ir.instructions.Instr
      StackMap stack:
            aload 1 /* builder */
            aload 5 /* clonedInstr */
            invokevirtual org.jruby.ir.IRBuilder.addInstr:(Lorg/jruby/ir/instructions/Instr;)V
        end local 5 // org.jruby.ir.instructions.Instr clonedInstr
        end local 3 // org.jruby.ir.instructions.Instr instr
        20: .line 248
      StackMap locals: org.jruby.ir.IRBuilder$EnsureBlockInfo org.jruby.ir.IRBuilder org.jruby.ir.transformations.inlining.SimpleCloneInfo top java.util.Iterator
      StackMap stack:
            aload 4
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 13
        21: .line 257
            aload 1 /* builder */
            new org.jruby.ir.instructions.ExceptionRegionEndMarkerInstr
            dup
            invokespecial org.jruby.ir.instructions.ExceptionRegionEndMarkerInstr.<init>:()V
            invokevirtual org.jruby.ir.IRBuilder.addInstr:(Lorg/jruby/ir/instructions/Instr;)V
        22: .line 258
            return
        end local 2 // org.jruby.ir.transformations.inlining.SimpleCloneInfo ii
        end local 1 // org.jruby.ir.IRBuilder builder
        end local 0 // org.jruby.ir.IRBuilder$EnsureBlockInfo this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   23     0         this  Lorg/jruby/ir/IRBuilder$EnsureBlockInfo;
            0   23     1      builder  Lorg/jruby/ir/IRBuilder;
            5   23     2           ii  Lorg/jruby/ir/transformations/inlining/SimpleCloneInfo;
            8    9     3            i  Lorg/jruby/ir/instructions/Instr;
           14   20     3        instr  Lorg/jruby/ir/instructions/Instr;
           15   20     5  clonedInstr  Lorg/jruby/ir/instructions/Instr;
           17   19     6         call  Lorg/jruby/ir/instructions/CallBase;
           18   19     7        block  Lorg/jruby/ir/operands/Operand;
    MethodParameters:
         Name  Flags
      builder  
}
SourceFile: "IRBuilder.java"
NestHost: org.jruby.ir.IRBuilder
InnerClasses:
  private EnsureBlockInfo = org.jruby.ir.IRBuilder$EnsureBlockInfo of org.jruby.ir.IRBuilder
  private IRLoop = org.jruby.ir.IRBuilder$IRLoop of org.jruby.ir.IRBuilder