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 start local 1 start local 2 start local 3 start local 4 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: aload 0
aload 1
invokevirtual org.jruby.ir.IRScope.getNewLabel:()Lorg/jruby/ir/operands/Label;
putfield org.jruby.ir.IRBuilder$EnsureBlockInfo.regionStart:Lorg/jruby/ir/operands/Label;
2: aload 0
aload 1
invokevirtual org.jruby.ir.IRScope.getNewLabel:()Lorg/jruby/ir/operands/Label;
putfield org.jruby.ir.IRBuilder$EnsureBlockInfo.start:Lorg/jruby/ir/operands/Label;
3: aload 0
aload 1
invokevirtual org.jruby.ir.IRScope.getNewLabel:()Lorg/jruby/ir/operands/Label;
putfield org.jruby.ir.IRBuilder$EnsureBlockInfo.end:Lorg/jruby/ir/operands/Label;
4: aload 0
aload 1
invokevirtual org.jruby.ir.IRScope.getNewLabel:()Lorg/jruby/ir/operands/Label;
putfield org.jruby.ir.IRBuilder$EnsureBlockInfo.dummyRescueBlockLabel:Lorg/jruby/ir/operands/Label;
5: aload 0
new java.util.ArrayList
dup
invokespecial java.util.ArrayList.<init>:()V
putfield org.jruby.ir.IRBuilder$EnsureBlockInfo.instrs:Ljava/util/List;
6: aload 0
aconst_null
putfield org.jruby.ir.IRBuilder$EnsureBlockInfo.savedGlobalException:Lorg/jruby/ir/operands/Variable;
7: aload 0
aload 3
putfield org.jruby.ir.IRBuilder$EnsureBlockInfo.innermostLoop:Lorg/jruby/ir/IRBuilder$IRLoop;
8: aload 0
aload 2
putfield org.jruby.ir.IRBuilder$EnsureBlockInfo.matchingRescueNode:Lorg/jruby/ast/RescueNode;
9: aload 0
aload 4
putfield org.jruby.ir.IRBuilder$EnsureBlockInfo.bodyRescuer:Lorg/jruby/ir/operands/Label;
10: aload 0
iconst_1
putfield org.jruby.ir.IRBuilder$EnsureBlockInfo.needsBacktrace:Z
11: return
end local 4 end local 3 end local 2 end local 1 end local 0 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 start local 1 0: aload 0
getfield org.jruby.ir.IRBuilder$EnsureBlockInfo.instrs:Ljava/util/List;
aload 1
invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
pop
1: return
end local 1 end local 0 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 start local 1 0: aload 0
getfield org.jruby.ir.IRBuilder$EnsureBlockInfo.instrs:Ljava/util/List;
iconst_0
aload 1
invokeinterface java.util.List.add:(ILjava/lang/Object;)V
1: return
end local 1 end local 0 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 start local 1 0: aload 1
new org.jruby.ir.instructions.LabelInstr
dup
aload 0
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: aload 0
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
start local 2 3: aload 1
aload 2
invokevirtual org.jruby.ir.IRBuilder.addInstr:(Lorg/jruby/ir/instructions/Instr;)V
end local 2 4: StackMap locals:
StackMap stack:
aload 3
invokeinterface java.util.Iterator.hasNext:()Z
ifne 2
5: return
end local 1 end local 0 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 start local 1 0: aload 0
getfield org.jruby.ir.IRBuilder$EnsureBlockInfo.savedGlobalException:Lorg/jruby/ir/operands/Variable;
ifnull 3
1: aload 0
getfield org.jruby.ir.IRBuilder$EnsureBlockInfo.needsBacktrace:Z
ifne 2
aload 1
aload 1
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: StackMap locals:
StackMap stack:
aload 1
new org.jruby.ir.instructions.PutGlobalVarInstr
dup
aload 1
ldc "$!"
invokevirtual org.jruby.ir.IRBuilder.symbol:(Ljava/lang/String;)Lorg/jruby/RubySymbol;
aload 0
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: StackMap locals:
StackMap stack:
aload 0
getfield org.jruby.ir.IRBuilder$EnsureBlockInfo.instrs:Ljava/util/List;
invokeinterface java.util.List.size:()I
ifne 4
return
4: StackMap locals:
StackMap stack:
new org.jruby.ir.transformations.inlining.SimpleCloneInfo
dup
aload 1
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
start local 2 5: aload 2
aload 0
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: aload 0
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
start local 3 8: aload 3
instanceof org.jruby.ir.instructions.LabelInstr
ifeq 9
aload 2
aload 3
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 9: StackMap locals:
StackMap stack:
aload 4
invokeinterface java.util.Iterator.hasNext:()Z
ifne 7
10: aload 1
new org.jruby.ir.instructions.LabelInstr
dup
aload 2
aload 0
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: aload 1
new org.jruby.ir.instructions.ExceptionRegionStartMarkerInstr
dup
aload 0
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: aload 0
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
start local 3 14: aload 3
aload 2
invokevirtual org.jruby.ir.instructions.Instr.clone:(Lorg/jruby/ir/transformations/inlining/CloneInfo;)Lorg/jruby/ir/instructions/Instr;
astore 5
start local 5 15: aload 5
instanceof org.jruby.ir.instructions.CallBase
ifeq 19
16: aload 5
checkcast org.jruby.ir.instructions.CallBase
astore 6
start local 6 17: aload 6
aconst_null
invokevirtual org.jruby.ir.instructions.CallBase.getClosureArg:(Lorg/jruby/ir/operands/Operand;)Lorg/jruby/ir/operands/Operand;
astore 7
start local 7 18: aload 7
instanceof org.jruby.ir.operands.WrappedIRClosure
ifeq 19
aload 1
getfield org.jruby.ir.IRBuilder.scope:Lorg/jruby/ir/IRScope;
aload 7
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 end local 6 19: 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
aload 5
invokevirtual org.jruby.ir.IRBuilder.addInstr:(Lorg/jruby/ir/instructions/Instr;)V
end local 5 end local 3 20: 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: aload 1
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: return
end local 2 end local 1 end local 0 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