public class org.jruby.ir.transformations.inlining.CFGInliner
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: org.jruby.ir.transformations.inlining.CFGInliner
super_class: java.lang.Object
{
public static final org.jruby.util.log.Logger LOG;
descriptor: Lorg/jruby/util/log/Logger;
flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
private static final boolean debug;
descriptor: Z
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private final org.jruby.ir.interpreter.FullInterpreterContext fullInterpreterContext;
descriptor: Lorg/jruby/ir/interpreter/FullInterpreterContext;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final org.jruby.ir.representations.CFG cfg;
descriptor: Lorg/jruby/ir/representations/CFG;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final org.jruby.ir.IRScope hostScope;
descriptor: Lorg/jruby/ir/IRScope;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
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: ldc Lorg/jruby/ir/transformations/inlining/CFGInliner;
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 org.jruby.ir.transformations.inlining.CFGInliner.$assertionsDisabled:Z
3: ldc Lorg/jruby/ir/transformations/inlining/CFGInliner;
invokestatic org.jruby.util.log.LoggerFactory.getLogger:(Ljava/lang/Class;)Lorg/jruby/util/log/Logger;
putstatic org.jruby.ir.transformations.inlining.CFGInliner.LOG:Lorg/jruby/util/log/Logger;
4: getstatic org.jruby.ir.IRManager.IR_INLINER_VERBOSE:Z
putstatic org.jruby.ir.transformations.inlining.CFGInliner.debug:Z
return
LocalVariableTable:
Start End Slot Name Signature
public void <init>(org.jruby.ir.interpreter.FullInterpreterContext);
descriptor: (Lorg/jruby/ir/interpreter/FullInterpreterContext;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: aload 0
aload 1
putfield org.jruby.ir.transformations.inlining.CFGInliner.fullInterpreterContext:Lorg/jruby/ir/interpreter/FullInterpreterContext;
2: aload 0
aload 1
invokevirtual org.jruby.ir.interpreter.FullInterpreterContext.getCFG:()Lorg/jruby/ir/representations/CFG;
putfield org.jruby.ir.transformations.inlining.CFGInliner.cfg:Lorg/jruby/ir/representations/CFG;
3: aload 0
aload 0
getfield org.jruby.ir.transformations.inlining.CFGInliner.cfg:Lorg/jruby/ir/representations/CFG;
invokevirtual org.jruby.ir.representations.CFG.getScope:()Lorg/jruby/ir/IRScope;
putfield org.jruby.ir.transformations.inlining.CFGInliner.hostScope:Lorg/jruby/ir/IRScope;
4: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lorg/jruby/ir/transformations/inlining/CFGInliner;
0 5 1 fullInterpreterContext Lorg/jruby/ir/interpreter/FullInterpreterContext;
MethodParameters:
Name Flags
fullInterpreterContext
private org.jruby.ir.transformations.inlining.SimpleCloneInfo cloneHostInstrs();
descriptor: ()Lorg/jruby/ir/transformations/inlining/SimpleCloneInfo;
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=4, args_size=1
start local 0 0: new org.jruby.ir.transformations.inlining.SimpleCloneInfo
dup
aload 0
getfield org.jruby.ir.transformations.inlining.CFGInliner.hostScope:Lorg/jruby/ir/IRScope;
iconst_0
invokespecial org.jruby.ir.transformations.inlining.SimpleCloneInfo.<init>:(Lorg/jruby/ir/IRScope;Z)V
astore 1
start local 1 1: aload 0
getfield org.jruby.ir.transformations.inlining.CFGInliner.cfg:Lorg/jruby/ir/representations/CFG;
invokevirtual org.jruby.ir.representations.CFG.getBasicBlocks:()Ljava/util/Collection;
invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
astore 3
goto 4
StackMap locals: org.jruby.ir.transformations.inlining.CFGInliner org.jruby.ir.transformations.inlining.SimpleCloneInfo top java.util.Iterator
StackMap stack:
2: aload 3
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.jruby.ir.representations.BasicBlock
astore 2
start local 2 3: aload 2
aload 1
invokevirtual org.jruby.ir.representations.BasicBlock.cloneInstrs:(Lorg/jruby/ir/transformations/inlining/SimpleCloneInfo;)V
end local 2 4: StackMap locals:
StackMap stack:
aload 3
invokeinterface java.util.Iterator.hasNext:()Z
ifne 2
5: aload 1
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Lorg/jruby/ir/transformations/inlining/CFGInliner;
1 6 1 ii Lorg/jruby/ir/transformations/inlining/SimpleCloneInfo;
3 4 2 b Lorg/jruby/ir/representations/BasicBlock;
private org.jruby.ir.representations.CFG cloneSelf(org.jruby.ir.transformations.inlining.InlineCloneInfo);
descriptor: (Lorg/jruby/ir/transformations/inlining/InlineCloneInfo;)Lorg/jruby/ir/representations/CFG;
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=9, args_size=2
start local 0 start local 1 0: new org.jruby.ir.representations.CFG
dup
aload 0
getfield org.jruby.ir.transformations.inlining.CFGInliner.hostScope:Lorg/jruby/ir/IRScope;
invokespecial org.jruby.ir.representations.CFG.<init>:(Lorg/jruby/ir/IRScope;)V
astore 2
start local 2 1: aload 0
getfield org.jruby.ir.transformations.inlining.CFGInliner.cfg:Lorg/jruby/ir/representations/CFG;
invokevirtual org.jruby.ir.representations.CFG.getBasicBlocks:()Ljava/util/Collection;
invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
astore 4
goto 4
StackMap locals: org.jruby.ir.transformations.inlining.CFGInliner org.jruby.ir.transformations.inlining.InlineCloneInfo org.jruby.ir.representations.CFG top java.util.Iterator
StackMap stack:
2: aload 4
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.jruby.ir.representations.BasicBlock
astore 3
start local 3 3: aload 3
invokevirtual org.jruby.ir.representations.BasicBlock.isEntryBB:()Z
ifne 4
aload 3
invokevirtual org.jruby.ir.representations.BasicBlock.isExitBB:()Z
ifne 4
aload 2
aload 3
aload 1
invokevirtual org.jruby.ir.representations.BasicBlock.cloneForInlining:(Lorg/jruby/ir/transformations/inlining/InlineCloneInfo;)Lorg/jruby/ir/representations/BasicBlock;
invokevirtual org.jruby.ir.representations.CFG.addBasicBlock:(Lorg/jruby/ir/representations/BasicBlock;)V
end local 3 4: StackMap locals:
StackMap stack:
aload 4
invokeinterface java.util.Iterator.hasNext:()Z
ifne 2
5: aload 0
getfield org.jruby.ir.transformations.inlining.CFGInliner.cfg:Lorg/jruby/ir/representations/CFG;
invokevirtual org.jruby.ir.representations.CFG.getBasicBlocks:()Ljava/util/Collection;
invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
astore 4
goto 14
StackMap locals:
StackMap stack:
6: aload 4
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.jruby.ir.representations.BasicBlock
astore 3
start local 3 7: aload 3
invokevirtual org.jruby.ir.representations.BasicBlock.isEntryBB:()Z
ifne 14
aload 3
invokevirtual org.jruby.ir.representations.BasicBlock.isExitBB:()Z
ifeq 8
goto 14
8: StackMap locals: org.jruby.ir.transformations.inlining.CFGInliner org.jruby.ir.transformations.inlining.InlineCloneInfo org.jruby.ir.representations.CFG org.jruby.ir.representations.BasicBlock java.util.Iterator
StackMap stack:
aload 1
aload 3
invokevirtual org.jruby.ir.transformations.inlining.InlineCloneInfo.getRenamedBB:(Lorg/jruby/ir/representations/BasicBlock;)Lorg/jruby/ir/representations/BasicBlock;
astore 5
start local 5 9: aload 0
getfield org.jruby.ir.transformations.inlining.CFGInliner.cfg:Lorg/jruby/ir/representations/CFG;
aload 3
invokevirtual org.jruby.ir.representations.CFG.getOutgoingEdges:(Lorg/jruby/ir/representations/BasicBlock;)Ljava/util/Collection;
invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
astore 7
goto 13
StackMap locals: org.jruby.ir.transformations.inlining.CFGInliner org.jruby.ir.transformations.inlining.InlineCloneInfo org.jruby.ir.representations.CFG org.jruby.ir.representations.BasicBlock java.util.Iterator org.jruby.ir.representations.BasicBlock top java.util.Iterator
StackMap stack:
10: aload 7
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.jruby.dirgra.Edge
astore 6
start local 6 11: aload 6
invokevirtual org.jruby.dirgra.Edge.getDestination:()Lorg/jruby/dirgra/Vertex;
invokevirtual org.jruby.dirgra.Vertex.getData:()Lorg/jruby/dirgra/ExplicitVertexID;
checkcast org.jruby.ir.representations.BasicBlock
astore 8
start local 8 12: aload 8
invokevirtual org.jruby.ir.representations.BasicBlock.isExitBB:()Z
ifne 13
aload 2
aload 5
aload 1
aload 8
invokevirtual org.jruby.ir.transformations.inlining.InlineCloneInfo.getRenamedBB:(Lorg/jruby/ir/representations/BasicBlock;)Lorg/jruby/ir/representations/BasicBlock;
aload 6
invokevirtual org.jruby.dirgra.Edge.getType:()Ljava/lang/Object;
invokevirtual org.jruby.ir.representations.CFG.addEdge:(Lorg/jruby/ir/representations/BasicBlock;Lorg/jruby/ir/representations/BasicBlock;Ljava/lang/Object;)V
end local 8 end local 6 13: StackMap locals:
StackMap stack:
aload 7
invokeinterface java.util.Iterator.hasNext:()Z
ifne 10
end local 5 end local 3 14: StackMap locals: org.jruby.ir.transformations.inlining.CFGInliner org.jruby.ir.transformations.inlining.InlineCloneInfo org.jruby.ir.representations.CFG top java.util.Iterator
StackMap stack:
aload 4
invokeinterface java.util.Iterator.hasNext:()Z
ifne 6
15: aload 2
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 16 0 this Lorg/jruby/ir/transformations/inlining/CFGInliner;
0 16 1 ii Lorg/jruby/ir/transformations/inlining/InlineCloneInfo;
1 16 2 selfClone Lorg/jruby/ir/representations/CFG;
3 4 3 b Lorg/jruby/ir/representations/BasicBlock;
7 14 3 b Lorg/jruby/ir/representations/BasicBlock;
9 14 5 rb Lorg/jruby/ir/representations/BasicBlock;
11 13 6 e Lorg/jruby/dirgra/Edge<Lorg/jruby/ir/representations/BasicBlock;>;
12 13 8 destination Lorg/jruby/ir/representations/BasicBlock;
MethodParameters:
Name Flags
ii
private boolean isRecursiveInline(org.jruby.ir.IRScope);
descriptor: (Lorg/jruby/ir/IRScope;)Z
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
getfield org.jruby.ir.transformations.inlining.CFGInliner.hostScope:Lorg/jruby/ir/IRScope;
invokevirtual org.jruby.ir.IRScope.getNearestMethod:()Lorg/jruby/ir/IRMethod;
aload 1
if_acmpne 1
iconst_1
ireturn
StackMap locals:
StackMap stack:
1: iconst_0
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lorg/jruby/ir/transformations/inlining/CFGInliner;
0 2 1 methodScope Lorg/jruby/ir/IRScope;
MethodParameters:
Name Flags
methodScope
private org.jruby.ir.operands.Variable getReceiverVariable(org.jruby.ir.operands.Operand);
descriptor: (Lorg/jruby/ir/operands/Operand;)Lorg/jruby/ir/operands/Variable;
flags: (0x0002) ACC_PRIVATE
Code:
stack=1, locals=2, args_size=2
start local 0 start local 1 0: aload 1
instanceof org.jruby.ir.operands.Variable
ifeq 1
aload 1
checkcast org.jruby.ir.operands.Variable
goto 2
StackMap locals:
StackMap stack:
1: aload 0
getfield org.jruby.ir.transformations.inlining.CFGInliner.hostScope:Lorg/jruby/ir/IRScope;
invokevirtual org.jruby.ir.IRScope.createTemporaryVariable:()Lorg/jruby/ir/operands/TemporaryLocalVariable;
StackMap locals:
StackMap stack: org.jruby.ir.operands.Variable
2: areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lorg/jruby/ir/transformations/inlining/CFGInliner;
0 3 1 receiver Lorg/jruby/ir/operands/Operand;
MethodParameters:
Name Flags
receiver
public org.jruby.ir.representations.BasicBlock findCallsiteBB(org.jruby.ir.instructions.CallBase);
descriptor: (Lorg/jruby/ir/instructions/CallBase;)Lorg/jruby/ir/representations/BasicBlock;
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=8, args_size=2
start local 0 start local 1 0: aload 1
invokevirtual org.jruby.ir.instructions.CallBase.getCallSiteId:()J
lstore 2
start local 2 1: getstatic org.jruby.ir.transformations.inlining.CFGInliner.debug:Z
ifeq 2
getstatic org.jruby.ir.transformations.inlining.CFGInliner.LOG:Lorg/jruby/util/log/Logger;
new java.lang.StringBuilder
dup
ldc "LOOKING FOR CALLSITEID: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
lload 2
invokevirtual java.lang.StringBuilder.append:(J)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
iconst_0
anewarray java.lang.Object
invokeinterface org.jruby.util.log.Logger.info:(Ljava/lang/String;[Ljava/lang/Object;)V
2: StackMap locals: long
StackMap stack:
aload 0
getfield org.jruby.ir.transformations.inlining.CFGInliner.cfg:Lorg/jruby/ir/representations/CFG;
invokevirtual org.jruby.ir.representations.CFG.getBasicBlocks:()Ljava/util/Collection;
invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
astore 5
goto 10
StackMap locals: org.jruby.ir.transformations.inlining.CFGInliner org.jruby.ir.instructions.CallBase long top java.util.Iterator
StackMap stack:
3: aload 5
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.jruby.ir.representations.BasicBlock
astore 4
start local 4 4: aload 4
invokevirtual org.jruby.ir.representations.BasicBlock.getInstrs:()Ljava/util/List;
invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
astore 7
goto 9
StackMap locals: org.jruby.ir.transformations.inlining.CFGInliner org.jruby.ir.instructions.CallBase long org.jruby.ir.representations.BasicBlock java.util.Iterator top java.util.Iterator
StackMap stack:
5: aload 7
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.jruby.ir.instructions.Instr
astore 6
start local 6 6: aload 6
instanceof org.jruby.ir.instructions.CallBase
ifeq 9
aload 6
checkcast org.jruby.ir.instructions.CallBase
invokevirtual org.jruby.ir.instructions.CallBase.getCallSiteId:()J
lload 2
lcmp
ifne 9
7: getstatic org.jruby.ir.transformations.inlining.CFGInliner.debug:Z
ifeq 8
getstatic org.jruby.ir.transformations.inlining.CFGInliner.LOG:Lorg/jruby/util/log/Logger;
new java.lang.StringBuilder
dup
ldc "Found it!!!! -- "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 1
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
ldc ", i: "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 6
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
iconst_0
anewarray java.lang.Object
invokeinterface org.jruby.util.log.Logger.info:(Ljava/lang/String;[Ljava/lang/Object;)V
8: StackMap locals: org.jruby.ir.transformations.inlining.CFGInliner org.jruby.ir.instructions.CallBase long org.jruby.ir.representations.BasicBlock java.util.Iterator org.jruby.ir.instructions.Instr java.util.Iterator
StackMap stack:
aload 4
areturn
end local 6 9: StackMap locals: org.jruby.ir.transformations.inlining.CFGInliner org.jruby.ir.instructions.CallBase long org.jruby.ir.representations.BasicBlock java.util.Iterator top java.util.Iterator
StackMap stack:
aload 7
invokeinterface java.util.Iterator.hasNext:()Z
ifne 5
end local 4 10: StackMap locals: org.jruby.ir.transformations.inlining.CFGInliner org.jruby.ir.instructions.CallBase long top java.util.Iterator
StackMap stack:
aload 5
invokeinterface java.util.Iterator.hasNext:()Z
ifne 3
11: getstatic org.jruby.ir.transformations.inlining.CFGInliner.debug:Z
ifeq 12
getstatic org.jruby.ir.transformations.inlining.CFGInliner.LOG:Lorg/jruby/util/log/Logger;
ldc "Did not find it"
iconst_0
anewarray java.lang.Object
invokeinterface org.jruby.util.log.Logger.info:(Ljava/lang/String;[Ljava/lang/Object;)V
12: StackMap locals: org.jruby.ir.transformations.inlining.CFGInliner org.jruby.ir.instructions.CallBase long
StackMap stack:
aconst_null
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 13 0 this Lorg/jruby/ir/transformations/inlining/CFGInliner;
0 13 1 call Lorg/jruby/ir/instructions/CallBase;
1 13 2 callSiteId J
4 10 4 bb Lorg/jruby/ir/representations/BasicBlock;
6 9 6 i Lorg/jruby/ir/instructions/Instr;
MethodParameters:
Name Flags
call
private void printInlineDebugPrologue(org.jruby.ir.IRScope, org.jruby.ir.instructions.CallBase);
descriptor: (Lorg/jruby/ir/IRScope;Lorg/jruby/ir/instructions/CallBase;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=3, args_size=3
start local 0 start local 1 start local 2 0: getstatic org.jruby.ir.transformations.inlining.CFGInliner.LOG:Lorg/jruby/util/log/Logger;
ldc "---------------------------------- PROLOGUE (start) --------"
iconst_0
anewarray java.lang.Object
invokeinterface org.jruby.util.log.Logger.info:(Ljava/lang/String;[Ljava/lang/Object;)V
1: getstatic org.jruby.ir.transformations.inlining.CFGInliner.LOG:Lorg/jruby/util/log/Logger;
new java.lang.StringBuilder
dup
ldc "Looking for: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 2
invokevirtual org.jruby.ir.instructions.CallBase.getCallSiteId:()J
invokevirtual java.lang.StringBuilder.append:(J)Ljava/lang/StringBuilder;
ldc ":\n > "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 2
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
ldc "\n"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
iconst_0
anewarray java.lang.Object
invokeinterface org.jruby.util.log.Logger.info:(Ljava/lang/String;[Ljava/lang/Object;)V
2: aload 0
aload 0
getfield org.jruby.ir.transformations.inlining.CFGInliner.cfg:Lorg/jruby/ir/representations/CFG;
ldc "host of inline"
invokevirtual org.jruby.ir.transformations.inlining.CFGInliner.printInlineCFG:(Lorg/jruby/ir/representations/CFG;Ljava/lang/String;)V
3: getstatic org.jruby.ir.transformations.inlining.CFGInliner.LOG:Lorg/jruby/util/log/Logger;
new java.lang.StringBuilder
dup
ldc "method to inline cfg:\n"
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 1
invokevirtual org.jruby.ir.IRScope.getCFG:()Lorg/jruby/ir/representations/CFG;
invokevirtual org.jruby.ir.representations.CFG.toStringGraph:()Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
iconst_0
anewarray java.lang.Object
invokeinterface org.jruby.util.log.Logger.info:(Ljava/lang/String;[Ljava/lang/Object;)V
4: getstatic org.jruby.ir.transformations.inlining.CFGInliner.LOG:Lorg/jruby/util/log/Logger;
new java.lang.StringBuilder
dup
ldc "method to inline instrs:\n"
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 1
invokevirtual org.jruby.ir.IRScope.getCFG:()Lorg/jruby/ir/representations/CFG;
invokevirtual org.jruby.ir.representations.CFG.toStringInstrs:()Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
iconst_0
anewarray java.lang.Object
invokeinterface org.jruby.util.log.Logger.info:(Ljava/lang/String;[Ljava/lang/Object;)V
5: getstatic org.jruby.ir.transformations.inlining.CFGInliner.LOG:Lorg/jruby/util/log/Logger;
ldc "---------------------------------- PROLOGUE (end) -----------"
iconst_0
anewarray java.lang.Object
invokeinterface org.jruby.util.log.Logger.info:(Ljava/lang/String;[Ljava/lang/Object;)V
6: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 this Lorg/jruby/ir/transformations/inlining/CFGInliner;
0 7 1 scopeToInline Lorg/jruby/ir/IRScope;
0 7 2 call Lorg/jruby/ir/instructions/CallBase;
MethodParameters:
Name Flags
scopeToInline
call
private void printInlineFoundBB(org.jruby.ir.representations.BasicBlock);
descriptor: (Lorg/jruby/ir/representations/BasicBlock;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=2, args_size=2
start local 0 start local 1 0: getstatic org.jruby.ir.transformations.inlining.CFGInliner.LOG:Lorg/jruby/util/log/Logger;
ldc "---------------------------------- callBB (start) -----------"
iconst_0
anewarray java.lang.Object
invokeinterface org.jruby.util.log.Logger.info:(Ljava/lang/String;[Ljava/lang/Object;)V
1: getstatic org.jruby.ir.transformations.inlining.CFGInliner.LOG:Lorg/jruby/util/log/Logger;
aload 1
invokevirtual org.jruby.ir.representations.BasicBlock.toStringInstrs:()Ljava/lang/String;
iconst_0
anewarray java.lang.Object
invokeinterface org.jruby.util.log.Logger.info:(Ljava/lang/String;[Ljava/lang/Object;)V
2: getstatic org.jruby.ir.transformations.inlining.CFGInliner.LOG:Lorg/jruby/util/log/Logger;
ldc "---------------------------------- callBB (end) -------------"
iconst_0
anewarray java.lang.Object
invokeinterface org.jruby.util.log.Logger.info:(Ljava/lang/String;[Ljava/lang/Object;)V
3: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lorg/jruby/ir/transformations/inlining/CFGInliner;
0 4 1 bb Lorg/jruby/ir/representations/BasicBlock;
MethodParameters:
Name Flags
bb
private void printInlineCannotFindCallsiteBB(org.jruby.ir.instructions.CallBase);
descriptor: (Lorg/jruby/ir/instructions/CallBase;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=2, args_size=2
start local 0 start local 1 0: getstatic org.jruby.ir.transformations.inlining.CFGInliner.LOG:Lorg/jruby/util/log/Logger;
ldc "----------------------------------"
iconst_0
anewarray java.lang.Object
invokeinterface org.jruby.util.log.Logger.info:(Ljava/lang/String;[Ljava/lang/Object;)V
1: getstatic org.jruby.ir.transformations.inlining.CFGInliner.LOG:Lorg/jruby/util/log/Logger;
new java.lang.StringBuilder
dup
ldc "Did not find BB with call: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 1
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
iconst_0
anewarray java.lang.Object
invokeinterface org.jruby.util.log.Logger.info:(Ljava/lang/String;[Ljava/lang/Object;)V
2: aload 0
aload 0
getfield org.jruby.ir.transformations.inlining.CFGInliner.cfg:Lorg/jruby/ir/representations/CFG;
ldc ""
invokevirtual org.jruby.ir.transformations.inlining.CFGInliner.printInlineCFG:(Lorg/jruby/ir/representations/CFG;Ljava/lang/String;)V
3: getstatic org.jruby.ir.transformations.inlining.CFGInliner.LOG:Lorg/jruby/util/log/Logger;
ldc "----------------------------------"
iconst_0
anewarray java.lang.Object
invokeinterface org.jruby.util.log.Logger.info:(Ljava/lang/String;[Ljava/lang/Object;)V
4: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lorg/jruby/ir/transformations/inlining/CFGInliner;
0 5 1 call Lorg/jruby/ir/instructions/CallBase;
MethodParameters:
Name Flags
call
private void printInlineCFG(org.jruby.ir.representations.CFG, java.lang.String);
descriptor: (Lorg/jruby/ir/representations/CFG;Ljava/lang/String;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=3, args_size=3
start local 0 start local 1 start local 2 0: getstatic org.jruby.ir.transformations.inlining.CFGInliner.LOG:Lorg/jruby/util/log/Logger;
new java.lang.StringBuilder
dup
aload 2
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
ldc " cfg:\n"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 1
invokevirtual org.jruby.ir.representations.CFG.toStringGraph:()Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
iconst_0
anewarray java.lang.Object
invokeinterface org.jruby.util.log.Logger.info:(Ljava/lang/String;[Ljava/lang/Object;)V
1: getstatic org.jruby.ir.transformations.inlining.CFGInliner.LOG:Lorg/jruby/util/log/Logger;
new java.lang.StringBuilder
dup
aload 2
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
ldc " instrs:\n"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 1
invokevirtual org.jruby.ir.representations.CFG.toStringInstrs:()Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
iconst_0
anewarray java.lang.Object
invokeinterface org.jruby.util.log.Logger.info:(Ljava/lang/String;[Ljava/lang/Object;)V
2: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lorg/jruby/ir/transformations/inlining/CFGInliner;
0 3 1 aCFG Lorg/jruby/ir/representations/CFG;
0 3 2 label Ljava/lang/String;
MethodParameters:
Name Flags
aCFG
label
private void printInlineEpilogue();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=1, args_size=1
start local 0 0: getstatic org.jruby.ir.transformations.inlining.CFGInliner.LOG:Lorg/jruby/util/log/Logger;
ldc "---------------------------------- EPILOGUE (start) --------"
iconst_0
anewarray java.lang.Object
invokeinterface org.jruby.util.log.Logger.info:(Ljava/lang/String;[Ljava/lang/Object;)V
1: aload 0
aload 0
getfield org.jruby.ir.transformations.inlining.CFGInliner.cfg:Lorg/jruby/ir/representations/CFG;
ldc ""
invokevirtual org.jruby.ir.transformations.inlining.CFGInliner.printInlineCFG:(Lorg/jruby/ir/representations/CFG;Ljava/lang/String;)V
2: getstatic org.jruby.ir.transformations.inlining.CFGInliner.LOG:Lorg/jruby/util/log/Logger;
ldc "---------------------------------- EPILOGUE (end) -----------"
iconst_0
anewarray java.lang.Object
invokeinterface org.jruby.util.log.Logger.info:(Ljava/lang/String;[Ljava/lang/Object;)V
3: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lorg/jruby/ir/transformations/inlining/CFGInliner;
private void printInlineSplitBBs(org.jruby.ir.representations.BasicBlock, org.jruby.ir.representations.BasicBlock);
descriptor: (Lorg/jruby/ir/representations/BasicBlock;Lorg/jruby/ir/representations/BasicBlock;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=3, args_size=3
start local 0 start local 1 start local 2 0: getstatic org.jruby.ir.transformations.inlining.CFGInliner.LOG:Lorg/jruby/util/log/Logger;
ldc "---------------------------------- SPLIT BB (start) --------"
iconst_0
anewarray java.lang.Object
invokeinterface org.jruby.util.log.Logger.info:(Ljava/lang/String;[Ljava/lang/Object;)V
1: getstatic org.jruby.ir.transformations.inlining.CFGInliner.LOG:Lorg/jruby/util/log/Logger;
new java.lang.StringBuilder
dup
ldc "Before:"
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 1
invokevirtual org.jruby.ir.representations.BasicBlock.getLabel:()Lorg/jruby/ir/operands/Label;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
iconst_0
anewarray java.lang.Object
invokeinterface org.jruby.util.log.Logger.info:(Ljava/lang/String;[Ljava/lang/Object;)V
2: getstatic org.jruby.ir.transformations.inlining.CFGInliner.LOG:Lorg/jruby/util/log/Logger;
aload 1
invokevirtual org.jruby.ir.representations.BasicBlock.toStringInstrs:()Ljava/lang/String;
iconst_0
anewarray java.lang.Object
invokeinterface org.jruby.util.log.Logger.info:(Ljava/lang/String;[Ljava/lang/Object;)V
3: getstatic org.jruby.ir.transformations.inlining.CFGInliner.LOG:Lorg/jruby/util/log/Logger;
new java.lang.StringBuilder
dup
ldc "After:"
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 2
invokevirtual org.jruby.ir.representations.BasicBlock.getLabel:()Lorg/jruby/ir/operands/Label;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
iconst_0
anewarray java.lang.Object
invokeinterface org.jruby.util.log.Logger.info:(Ljava/lang/String;[Ljava/lang/Object;)V
4: getstatic org.jruby.ir.transformations.inlining.CFGInliner.LOG:Lorg/jruby/util/log/Logger;
aload 2
invokevirtual org.jruby.ir.representations.BasicBlock.toStringInstrs:()Ljava/lang/String;
iconst_0
anewarray java.lang.Object
invokeinterface org.jruby.util.log.Logger.info:(Ljava/lang/String;[Ljava/lang/Object;)V
5: aload 0
aload 0
getfield org.jruby.ir.transformations.inlining.CFGInliner.cfg:Lorg/jruby/ir/representations/CFG;
ldc ""
invokevirtual org.jruby.ir.transformations.inlining.CFGInliner.printInlineCFG:(Lorg/jruby/ir/representations/CFG;Ljava/lang/String;)V
6: getstatic org.jruby.ir.transformations.inlining.CFGInliner.LOG:Lorg/jruby/util/log/Logger;
ldc "---------------------------------- SPLIT BB (end) -----------"
iconst_0
anewarray java.lang.Object
invokeinterface org.jruby.util.log.Logger.info:(Ljava/lang/String;[Ljava/lang/Object;)V
7: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 this Lorg/jruby/ir/transformations/inlining/CFGInliner;
0 8 1 beforeBB Lorg/jruby/ir/representations/BasicBlock;
0 8 2 afterBB Lorg/jruby/ir/representations/BasicBlock;
MethodParameters:
Name Flags
beforeBB
afterBB
public java.lang.String inlineMethod(org.jruby.ir.IRScope, org.jruby.RubyModule, int, org.jruby.ir.representations.BasicBlock, org.jruby.ir.instructions.CallBase, boolean);
descriptor: (Lorg/jruby/ir/IRScope;Lorg/jruby/RubyModule;ILorg/jruby/ir/representations/BasicBlock;Lorg/jruby/ir/instructions/CallBase;Z)Ljava/lang/String;
flags: (0x0001) ACC_PUBLIC
Code:
stack=7, locals=25, args_size=7
start local 0 start local 1 start local 2 start local 3 start local 4 start local 5 start local 6 0: aload 0
aload 1
invokevirtual org.jruby.ir.transformations.inlining.CFGInliner.isRecursiveInline:(Lorg/jruby/ir/IRScope;)Z
ifeq 1
ldc "cannot inline recursive scopes"
areturn
1: StackMap locals:
StackMap stack:
getstatic org.jruby.ir.transformations.inlining.CFGInliner.debug:Z
ifeq 2
aload 0
aload 1
aload 5
invokevirtual org.jruby.ir.transformations.inlining.CFGInliner.printInlineDebugPrologue:(Lorg/jruby/ir/IRScope;Lorg/jruby/ir/instructions/CallBase;)V
2: StackMap locals:
StackMap stack:
aload 4
ifnonnull 8
3: aload 0
aload 5
invokevirtual org.jruby.ir.transformations.inlining.CFGInliner.findCallsiteBB:(Lorg/jruby/ir/instructions/CallBase;)Lorg/jruby/ir/representations/BasicBlock;
astore 4
4: aload 4
ifnonnull 7
5: getstatic org.jruby.ir.transformations.inlining.CFGInliner.debug:Z
ifeq 6
aload 0
aload 5
invokevirtual org.jruby.ir.transformations.inlining.CFGInliner.printInlineCannotFindCallsiteBB:(Lorg/jruby/ir/instructions/CallBase;)V
6: StackMap locals:
StackMap stack:
new java.lang.StringBuilder
dup
ldc "cannot find callsite in host scope: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 5
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
areturn
7: StackMap locals:
StackMap stack:
getstatic org.jruby.ir.transformations.inlining.CFGInliner.debug:Z
ifeq 8
aload 0
aload 4
invokevirtual org.jruby.ir.transformations.inlining.CFGInliner.printInlineFoundBB:(Lorg/jruby/ir/representations/BasicBlock;)V
8: StackMap locals:
StackMap stack:
aload 0
getfield org.jruby.ir.transformations.inlining.CFGInliner.hostScope:Lorg/jruby/ir/IRScope;
invokevirtual org.jruby.ir.IRScope.getNewLabel:()Lorg/jruby/ir/operands/Label;
astore 7
start local 7 9: aload 4
aload 5
aload 7
iconst_0
invokevirtual org.jruby.ir.representations.BasicBlock.splitAtInstruction:(Lorg/jruby/ir/instructions/Site;Lorg/jruby/ir/operands/Label;Z)Lorg/jruby/ir/representations/BasicBlock;
astore 8
start local 8 10: aload 4
astore 9
start local 9 11: aload 0
aload 9
aload 8
invokevirtual org.jruby.ir.transformations.inlining.CFGInliner.connectOuterEdges:(Lorg/jruby/ir/representations/BasicBlock;Lorg/jruby/ir/representations/BasicBlock;)V
12: getstatic org.jruby.ir.transformations.inlining.CFGInliner.debug:Z
ifeq 13
aload 0
aload 9
aload 8
invokevirtual org.jruby.ir.transformations.inlining.CFGInliner.printInlineSplitBBs:(Lorg/jruby/ir/representations/BasicBlock;Lorg/jruby/ir/representations/BasicBlock;)V
13: StackMap locals: org.jruby.ir.operands.Label org.jruby.ir.representations.BasicBlock org.jruby.ir.representations.BasicBlock
StackMap stack:
iload 6
ifeq 14
aload 0
invokevirtual org.jruby.ir.transformations.inlining.CFGInliner.cloneHostInstrs:()Lorg/jruby/ir/transformations/inlining/SimpleCloneInfo;
goto 15
StackMap locals:
StackMap stack:
14: aconst_null
StackMap locals:
StackMap stack: org.jruby.ir.transformations.inlining.SimpleCloneInfo
15: astore 10
start local 10 16: aload 0
aload 5
invokevirtual org.jruby.ir.instructions.CallBase.getReceiver:()Lorg/jruby/ir/operands/Operand;
invokevirtual org.jruby.ir.transformations.inlining.CFGInliner.getReceiverVariable:(Lorg/jruby/ir/operands/Operand;)Lorg/jruby/ir/operands/Variable;
astore 11
start local 11 17: new org.jruby.ir.transformations.inlining.InlineCloneInfo
dup
aload 5
aload 0
getfield org.jruby.ir.transformations.inlining.CFGInliner.cfg:Lorg/jruby/ir/representations/CFG;
aload 11
aload 1
invokespecial org.jruby.ir.transformations.inlining.InlineCloneInfo.<init>:(Lorg/jruby/ir/instructions/CallBase;Lorg/jruby/ir/representations/CFG;Lorg/jruby/ir/operands/Variable;Lorg/jruby/ir/IRScope;)V
astore 12
start local 12 18: aload 1
invokevirtual org.jruby.ir.IRScope.getCFG:()Lorg/jruby/ir/representations/CFG;
astore 13
start local 13 19: new java.util.ArrayList
dup
aload 13
invokevirtual org.jruby.ir.representations.CFG.getBasicBlocks:()Ljava/util/Collection;
invokespecial java.util.ArrayList.<init>:(Ljava/util/Collection;)V
astore 14
start local 14 20: aload 0
aload 1
invokevirtual org.jruby.ir.transformations.inlining.CFGInliner.isRecursiveInline:(Lorg/jruby/ir/IRScope;)Z
ifeq 31
21: aload 0
aload 12
invokevirtual org.jruby.ir.transformations.inlining.CFGInliner.cloneSelf:(Lorg/jruby/ir/transformations/inlining/InlineCloneInfo;)Lorg/jruby/ir/representations/CFG;
astore 15
start local 15 22: aload 15
invokevirtual org.jruby.ir.representations.CFG.getBasicBlocks:()Ljava/util/Collection;
invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
astore 17
goto 29
StackMap locals: org.jruby.ir.transformations.inlining.CFGInliner org.jruby.ir.IRScope org.jruby.RubyModule int org.jruby.ir.representations.BasicBlock org.jruby.ir.instructions.CallBase int org.jruby.ir.operands.Label org.jruby.ir.representations.BasicBlock org.jruby.ir.representations.BasicBlock org.jruby.ir.transformations.inlining.SimpleCloneInfo org.jruby.ir.operands.Variable org.jruby.ir.transformations.inlining.InlineCloneInfo org.jruby.ir.representations.CFG java.util.List org.jruby.ir.representations.CFG top java.util.Iterator
StackMap stack:
23: aload 17
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.jruby.ir.representations.BasicBlock
astore 16
start local 16 24: aload 0
getfield org.jruby.ir.transformations.inlining.CFGInliner.cfg:Lorg/jruby/ir/representations/CFG;
aload 16
invokevirtual org.jruby.ir.representations.CFG.addBasicBlock:(Lorg/jruby/ir/representations/BasicBlock;)V
25: aload 15
aload 16
invokevirtual org.jruby.ir.representations.CFG.getOutgoingEdges:(Lorg/jruby/ir/representations/BasicBlock;)Ljava/util/Collection;
invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
astore 19
goto 28
StackMap locals: org.jruby.ir.transformations.inlining.CFGInliner org.jruby.ir.IRScope org.jruby.RubyModule int org.jruby.ir.representations.BasicBlock org.jruby.ir.instructions.CallBase int org.jruby.ir.operands.Label org.jruby.ir.representations.BasicBlock org.jruby.ir.representations.BasicBlock org.jruby.ir.transformations.inlining.SimpleCloneInfo org.jruby.ir.operands.Variable org.jruby.ir.transformations.inlining.InlineCloneInfo org.jruby.ir.representations.CFG java.util.List org.jruby.ir.representations.CFG org.jruby.ir.representations.BasicBlock java.util.Iterator top java.util.Iterator
StackMap stack:
26: aload 19
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.jruby.dirgra.Edge
astore 18
start local 18 27: aload 0
getfield org.jruby.ir.transformations.inlining.CFGInliner.cfg:Lorg/jruby/ir/representations/CFG;
aload 16
aload 18
invokevirtual org.jruby.dirgra.Edge.getDestination:()Lorg/jruby/dirgra/Vertex;
invokevirtual org.jruby.dirgra.Vertex.getData:()Lorg/jruby/dirgra/ExplicitVertexID;
checkcast org.jruby.ir.representations.BasicBlock
aload 18
invokevirtual org.jruby.dirgra.Edge.getType:()Ljava/lang/Object;
invokevirtual org.jruby.ir.representations.CFG.addEdge:(Lorg/jruby/ir/representations/BasicBlock;Lorg/jruby/ir/representations/BasicBlock;Ljava/lang/Object;)V
end local 18 28: StackMap locals:
StackMap stack:
aload 19
invokeinterface java.util.Iterator.hasNext:()Z
ifne 26
end local 16 29: StackMap locals: org.jruby.ir.transformations.inlining.CFGInliner org.jruby.ir.IRScope org.jruby.RubyModule int org.jruby.ir.representations.BasicBlock org.jruby.ir.instructions.CallBase int org.jruby.ir.operands.Label org.jruby.ir.representations.BasicBlock org.jruby.ir.representations.BasicBlock org.jruby.ir.transformations.inlining.SimpleCloneInfo org.jruby.ir.operands.Variable org.jruby.ir.transformations.inlining.InlineCloneInfo org.jruby.ir.representations.CFG java.util.List org.jruby.ir.representations.CFG top java.util.Iterator
StackMap stack:
aload 17
invokeinterface java.util.Iterator.hasNext:()Z
ifne 23
end local 15 30: goto 45
31: StackMap locals: org.jruby.ir.transformations.inlining.CFGInliner org.jruby.ir.IRScope org.jruby.RubyModule int org.jruby.ir.representations.BasicBlock org.jruby.ir.instructions.CallBase int org.jruby.ir.operands.Label org.jruby.ir.representations.BasicBlock org.jruby.ir.representations.BasicBlock org.jruby.ir.transformations.inlining.SimpleCloneInfo org.jruby.ir.operands.Variable org.jruby.ir.transformations.inlining.InlineCloneInfo org.jruby.ir.representations.CFG java.util.List
StackMap stack:
aload 13
invokevirtual org.jruby.ir.representations.CFG.getBasicBlocks:()Ljava/util/Collection;
invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
astore 16
goto 34
StackMap locals: org.jruby.ir.transformations.inlining.CFGInliner org.jruby.ir.IRScope org.jruby.RubyModule int org.jruby.ir.representations.BasicBlock org.jruby.ir.instructions.CallBase int org.jruby.ir.operands.Label org.jruby.ir.representations.BasicBlock org.jruby.ir.representations.BasicBlock org.jruby.ir.transformations.inlining.SimpleCloneInfo org.jruby.ir.operands.Variable org.jruby.ir.transformations.inlining.InlineCloneInfo org.jruby.ir.representations.CFG java.util.List top java.util.Iterator
StackMap stack:
32: aload 16
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.jruby.ir.representations.BasicBlock
astore 15
start local 15 33: aload 15
invokevirtual org.jruby.ir.representations.BasicBlock.isEntryBB:()Z
ifne 34
aload 15
invokevirtual org.jruby.ir.representations.BasicBlock.isExitBB:()Z
ifne 34
aload 0
getfield org.jruby.ir.transformations.inlining.CFGInliner.cfg:Lorg/jruby/ir/representations/CFG;
aload 15
aload 12
invokevirtual org.jruby.ir.representations.BasicBlock.cloneForInlining:(Lorg/jruby/ir/transformations/inlining/InlineCloneInfo;)Lorg/jruby/ir/representations/BasicBlock;
invokevirtual org.jruby.ir.representations.CFG.addBasicBlock:(Lorg/jruby/ir/representations/BasicBlock;)V
end local 15 34: StackMap locals:
StackMap stack:
aload 16
invokeinterface java.util.Iterator.hasNext:()Z
ifne 32
35: aload 13
invokevirtual org.jruby.ir.representations.CFG.getBasicBlocks:()Ljava/util/Collection;
invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
astore 16
goto 44
StackMap locals:
StackMap stack:
36: aload 16
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.jruby.ir.representations.BasicBlock
astore 15
start local 15 37: aload 15
invokevirtual org.jruby.ir.representations.BasicBlock.isEntryBB:()Z
ifne 44
aload 15
invokevirtual org.jruby.ir.representations.BasicBlock.isExitBB:()Z
ifeq 38
goto 44
38: StackMap locals: org.jruby.ir.transformations.inlining.CFGInliner org.jruby.ir.IRScope org.jruby.RubyModule int org.jruby.ir.representations.BasicBlock org.jruby.ir.instructions.CallBase int org.jruby.ir.operands.Label org.jruby.ir.representations.BasicBlock org.jruby.ir.representations.BasicBlock org.jruby.ir.transformations.inlining.SimpleCloneInfo org.jruby.ir.operands.Variable org.jruby.ir.transformations.inlining.InlineCloneInfo org.jruby.ir.representations.CFG java.util.List org.jruby.ir.representations.BasicBlock java.util.Iterator
StackMap stack:
aload 12
aload 15
invokevirtual org.jruby.ir.transformations.inlining.InlineCloneInfo.getRenamedBB:(Lorg/jruby/ir/representations/BasicBlock;)Lorg/jruby/ir/representations/BasicBlock;
astore 17
start local 17 39: aload 13
aload 15
invokevirtual org.jruby.ir.representations.CFG.getOutgoingEdges:(Lorg/jruby/ir/representations/BasicBlock;)Ljava/util/Collection;
invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
astore 19
goto 43
StackMap locals: org.jruby.ir.transformations.inlining.CFGInliner org.jruby.ir.IRScope org.jruby.RubyModule int org.jruby.ir.representations.BasicBlock org.jruby.ir.instructions.CallBase int org.jruby.ir.operands.Label org.jruby.ir.representations.BasicBlock org.jruby.ir.representations.BasicBlock org.jruby.ir.transformations.inlining.SimpleCloneInfo org.jruby.ir.operands.Variable org.jruby.ir.transformations.inlining.InlineCloneInfo org.jruby.ir.representations.CFG java.util.List org.jruby.ir.representations.BasicBlock java.util.Iterator org.jruby.ir.representations.BasicBlock top java.util.Iterator
StackMap stack:
40: aload 19
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.jruby.dirgra.Edge
astore 18
start local 18 41: aload 18
invokevirtual org.jruby.dirgra.Edge.getDestination:()Lorg/jruby/dirgra/Vertex;
invokevirtual org.jruby.dirgra.Vertex.getData:()Lorg/jruby/dirgra/ExplicitVertexID;
checkcast org.jruby.ir.representations.BasicBlock
astore 20
start local 20 42: aload 20
invokevirtual org.jruby.ir.representations.BasicBlock.isExitBB:()Z
ifne 43
aload 0
getfield org.jruby.ir.transformations.inlining.CFGInliner.cfg:Lorg/jruby/ir/representations/CFG;
aload 17
aload 12
aload 20
invokevirtual org.jruby.ir.transformations.inlining.InlineCloneInfo.getRenamedBB:(Lorg/jruby/ir/representations/BasicBlock;)Lorg/jruby/ir/representations/BasicBlock;
aload 18
invokevirtual org.jruby.dirgra.Edge.getType:()Ljava/lang/Object;
invokevirtual org.jruby.ir.representations.CFG.addEdge:(Lorg/jruby/ir/representations/BasicBlock;Lorg/jruby/ir/representations/BasicBlock;Ljava/lang/Object;)V
end local 20 end local 18 43: StackMap locals:
StackMap stack:
aload 19
invokeinterface java.util.Iterator.hasNext:()Z
ifne 40
end local 17 end local 15 44: StackMap locals: org.jruby.ir.transformations.inlining.CFGInliner org.jruby.ir.IRScope org.jruby.RubyModule int org.jruby.ir.representations.BasicBlock org.jruby.ir.instructions.CallBase int org.jruby.ir.operands.Label org.jruby.ir.representations.BasicBlock org.jruby.ir.representations.BasicBlock org.jruby.ir.transformations.inlining.SimpleCloneInfo org.jruby.ir.operands.Variable org.jruby.ir.transformations.inlining.InlineCloneInfo org.jruby.ir.representations.CFG java.util.List top java.util.Iterator
StackMap stack:
aload 16
invokeinterface java.util.Iterator.hasNext:()Z
ifne 36
45: StackMap locals: org.jruby.ir.transformations.inlining.CFGInliner org.jruby.ir.IRScope org.jruby.RubyModule int org.jruby.ir.representations.BasicBlock org.jruby.ir.instructions.CallBase int org.jruby.ir.operands.Label org.jruby.ir.representations.BasicBlock org.jruby.ir.representations.BasicBlock org.jruby.ir.transformations.inlining.SimpleCloneInfo org.jruby.ir.operands.Variable org.jruby.ir.transformations.inlining.InlineCloneInfo org.jruby.ir.representations.CFG java.util.List
StackMap stack:
getstatic org.jruby.ir.transformations.inlining.CFGInliner.$assertionsDisabled:Z
ifne 46
aload 13
aload 13
invokevirtual org.jruby.ir.representations.CFG.getEntryBB:()Lorg/jruby/ir/representations/BasicBlock;
invokevirtual org.jruby.ir.representations.CFG.outDegree:(Lorg/jruby/ir/representations/BasicBlock;)I
iconst_2
if_icmpeq 46
new java.lang.AssertionError
dup
new java.lang.StringBuilder
dup
ldc "Entry BB of inlinee method does not have outdegree 2: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 13
invokevirtual org.jruby.ir.representations.CFG.toStringGraph:()Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
46: StackMap locals:
StackMap stack:
aload 13
aload 13
invokevirtual org.jruby.ir.representations.CFG.getEntryBB:()Lorg/jruby/ir/representations/BasicBlock;
invokevirtual org.jruby.ir.representations.CFG.getOutgoingDestinations:(Lorg/jruby/ir/representations/BasicBlock;)Ljava/lang/Iterable;
invokeinterface java.lang.Iterable.iterator:()Ljava/util/Iterator;
astore 16
goto 55
StackMap locals: org.jruby.ir.transformations.inlining.CFGInliner org.jruby.ir.IRScope org.jruby.RubyModule int org.jruby.ir.representations.BasicBlock org.jruby.ir.instructions.CallBase int org.jruby.ir.operands.Label org.jruby.ir.representations.BasicBlock org.jruby.ir.representations.BasicBlock org.jruby.ir.transformations.inlining.SimpleCloneInfo org.jruby.ir.operands.Variable org.jruby.ir.transformations.inlining.InlineCloneInfo org.jruby.ir.representations.CFG java.util.List top java.util.Iterator
StackMap stack:
47: aload 16
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.jruby.ir.representations.BasicBlock
astore 15
start local 15 48: aload 15
invokevirtual org.jruby.ir.representations.BasicBlock.isExitBB:()Z
ifeq 49
goto 55
49: StackMap locals: org.jruby.ir.transformations.inlining.CFGInliner org.jruby.ir.IRScope org.jruby.RubyModule int org.jruby.ir.representations.BasicBlock org.jruby.ir.instructions.CallBase int org.jruby.ir.operands.Label org.jruby.ir.representations.BasicBlock org.jruby.ir.representations.BasicBlock org.jruby.ir.transformations.inlining.SimpleCloneInfo org.jruby.ir.operands.Variable org.jruby.ir.transformations.inlining.InlineCloneInfo org.jruby.ir.representations.CFG java.util.List org.jruby.ir.representations.BasicBlock java.util.Iterator
StackMap stack:
aload 12
aload 15
invokevirtual org.jruby.ir.transformations.inlining.InlineCloneInfo.getRenamedBB:(Lorg/jruby/ir/representations/BasicBlock;)Lorg/jruby/ir/representations/BasicBlock;
astore 17
start local 17 50: aload 5
invokevirtual org.jruby.ir.instructions.CallBase.getReceiver:()Lorg/jruby/ir/operands/Operand;
aload 11
if_acmpeq 52
51: aload 17
new org.jruby.ir.instructions.CopyInstr
dup
aload 11
aload 5
invokevirtual org.jruby.ir.instructions.CallBase.getReceiver:()Lorg/jruby/ir/operands/Operand;
invokespecial org.jruby.ir.instructions.CopyInstr.<init>:(Lorg/jruby/ir/operands/Variable;Lorg/jruby/ir/operands/Operand;)V
invokevirtual org.jruby.ir.representations.BasicBlock.insertInstr:(Lorg/jruby/ir/instructions/Instr;)V
52: StackMap locals: org.jruby.ir.representations.BasicBlock
StackMap stack:
aload 12
invokevirtual org.jruby.ir.transformations.inlining.InlineCloneInfo.canMapArgsStatically:()Z
ifne 54
53: ldc "cannot assign non-statically assigned method arguments"
areturn
54: StackMap locals:
StackMap stack:
aload 0
getfield org.jruby.ir.transformations.inlining.CFGInliner.cfg:Lorg/jruby/ir/representations/CFG;
aload 9
aload 17
getstatic org.jruby.ir.representations.CFG$EdgeType.FALL_THROUGH:Lorg/jruby/ir/representations/CFG$EdgeType;
invokevirtual org.jruby.ir.representations.CFG.addEdge:(Lorg/jruby/ir/representations/BasicBlock;Lorg/jruby/ir/representations/BasicBlock;Ljava/lang/Object;)V
end local 17 end local 15 55: StackMap locals: org.jruby.ir.transformations.inlining.CFGInliner org.jruby.ir.IRScope org.jruby.RubyModule int org.jruby.ir.representations.BasicBlock org.jruby.ir.instructions.CallBase int org.jruby.ir.operands.Label org.jruby.ir.representations.BasicBlock org.jruby.ir.representations.BasicBlock org.jruby.ir.transformations.inlining.SimpleCloneInfo org.jruby.ir.operands.Variable org.jruby.ir.transformations.inlining.InlineCloneInfo org.jruby.ir.representations.CFG java.util.List top java.util.Iterator
StackMap stack:
aload 16
invokeinterface java.util.Iterator.hasNext:()Z
ifne 47
56: aload 13
aload 13
invokevirtual org.jruby.ir.representations.CFG.getExitBB:()Lorg/jruby/ir/representations/BasicBlock;
invokevirtual org.jruby.ir.representations.CFG.getIncomingEdges:(Lorg/jruby/ir/representations/BasicBlock;)Ljava/lang/Iterable;
invokeinterface java.lang.Iterable.iterator:()Ljava/util/Iterator;
astore 16
goto 69
StackMap locals:
StackMap stack:
57: aload 16
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.jruby.dirgra.Edge
astore 15
start local 15 58: aload 15
invokevirtual org.jruby.dirgra.Edge.getSource:()Lorg/jruby/dirgra/Vertex;
invokevirtual org.jruby.dirgra.Vertex.getData:()Lorg/jruby/dirgra/ExplicitVertexID;
checkcast org.jruby.ir.representations.BasicBlock
astore 17
start local 17 59: aload 17
invokevirtual org.jruby.ir.representations.BasicBlock.isEntryBB:()Z
ifeq 60
goto 69
60: StackMap locals: org.jruby.ir.transformations.inlining.CFGInliner org.jruby.ir.IRScope org.jruby.RubyModule int org.jruby.ir.representations.BasicBlock org.jruby.ir.instructions.CallBase int org.jruby.ir.operands.Label org.jruby.ir.representations.BasicBlock org.jruby.ir.representations.BasicBlock org.jruby.ir.transformations.inlining.SimpleCloneInfo org.jruby.ir.operands.Variable org.jruby.ir.transformations.inlining.InlineCloneInfo org.jruby.ir.representations.CFG java.util.List org.jruby.dirgra.Edge java.util.Iterator org.jruby.ir.representations.BasicBlock
StackMap stack:
aload 12
aload 17
invokevirtual org.jruby.ir.transformations.inlining.InlineCloneInfo.getRenamedBB:(Lorg/jruby/ir/representations/BasicBlock;)Lorg/jruby/ir/representations/BasicBlock;
astore 18
start local 18 61: aload 15
invokevirtual org.jruby.dirgra.Edge.getType:()Ljava/lang/Object;
getstatic org.jruby.ir.representations.CFG$EdgeType.EXCEPTION:Lorg/jruby/ir/representations/CFG$EdgeType;
if_acmpne 68
62: aload 0
getfield org.jruby.ir.transformations.inlining.CFGInliner.cfg:Lorg/jruby/ir/representations/CFG;
aload 8
invokevirtual org.jruby.ir.representations.CFG.getRescuerBBFor:(Lorg/jruby/ir/representations/BasicBlock;)Lorg/jruby/ir/representations/BasicBlock;
astore 19
start local 19 63: aload 19
ifnull 66
64: aload 0
getfield org.jruby.ir.transformations.inlining.CFGInliner.cfg:Lorg/jruby/ir/representations/CFG;
aload 18
aload 19
getstatic org.jruby.ir.representations.CFG$EdgeType.EXCEPTION:Lorg/jruby/ir/representations/CFG$EdgeType;
invokevirtual org.jruby.ir.representations.CFG.addEdge:(Lorg/jruby/ir/representations/BasicBlock;Lorg/jruby/ir/representations/BasicBlock;Ljava/lang/Object;)V
65: goto 69
66: StackMap locals: org.jruby.ir.representations.BasicBlock org.jruby.ir.representations.BasicBlock
StackMap stack:
aload 0
getfield org.jruby.ir.transformations.inlining.CFGInliner.cfg:Lorg/jruby/ir/representations/CFG;
aload 18
aload 0
getfield org.jruby.ir.transformations.inlining.CFGInliner.cfg:Lorg/jruby/ir/representations/CFG;
invokevirtual org.jruby.ir.representations.CFG.getExitBB:()Lorg/jruby/ir/representations/BasicBlock;
getstatic org.jruby.ir.representations.CFG$EdgeType.EXIT:Lorg/jruby/ir/representations/CFG$EdgeType;
invokevirtual org.jruby.ir.representations.CFG.addEdge:(Lorg/jruby/ir/representations/BasicBlock;Lorg/jruby/ir/representations/BasicBlock;Ljava/lang/Object;)V
end local 19 67: goto 69
68: StackMap locals:
StackMap stack:
aload 0
getfield org.jruby.ir.transformations.inlining.CFGInliner.cfg:Lorg/jruby/ir/representations/CFG;
aload 18
aload 8
aload 15
invokevirtual org.jruby.dirgra.Edge.getType:()Ljava/lang/Object;
invokevirtual org.jruby.ir.representations.CFG.addEdge:(Lorg/jruby/ir/representations/BasicBlock;Lorg/jruby/ir/representations/BasicBlock;Ljava/lang/Object;)V
end local 18 end local 17 end local 15 69: StackMap locals: org.jruby.ir.transformations.inlining.CFGInliner org.jruby.ir.IRScope org.jruby.RubyModule int org.jruby.ir.representations.BasicBlock org.jruby.ir.instructions.CallBase int org.jruby.ir.operands.Label org.jruby.ir.representations.BasicBlock org.jruby.ir.representations.BasicBlock org.jruby.ir.transformations.inlining.SimpleCloneInfo org.jruby.ir.operands.Variable org.jruby.ir.transformations.inlining.InlineCloneInfo org.jruby.ir.representations.CFG java.util.List top java.util.Iterator
StackMap stack:
aload 16
invokeinterface java.util.Iterator.hasNext:()Z
ifne 57
70: aload 0
getfield org.jruby.ir.transformations.inlining.CFGInliner.cfg:Lorg/jruby/ir/representations/CFG;
aload 9
invokevirtual org.jruby.ir.representations.CFG.getRescuerBBFor:(Lorg/jruby/ir/representations/BasicBlock;)Lorg/jruby/ir/representations/BasicBlock;
astore 15
start local 15 71: aload 15
ifnull 72
aload 0
getfield org.jruby.ir.transformations.inlining.CFGInliner.cfg:Lorg/jruby/ir/representations/CFG;
aload 8
aload 15
invokevirtual org.jruby.ir.representations.CFG.setRescuerBB:(Lorg/jruby/ir/representations/BasicBlock;Lorg/jruby/ir/representations/BasicBlock;)V
72: StackMap locals: org.jruby.ir.transformations.inlining.CFGInliner org.jruby.ir.IRScope org.jruby.RubyModule int org.jruby.ir.representations.BasicBlock org.jruby.ir.instructions.CallBase int org.jruby.ir.operands.Label org.jruby.ir.representations.BasicBlock org.jruby.ir.representations.BasicBlock org.jruby.ir.transformations.inlining.SimpleCloneInfo org.jruby.ir.operands.Variable org.jruby.ir.transformations.inlining.InlineCloneInfo org.jruby.ir.representations.CFG java.util.List org.jruby.ir.representations.BasicBlock
StackMap stack:
aload 14
invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
astore 17
goto 82
StackMap locals: org.jruby.ir.transformations.inlining.CFGInliner org.jruby.ir.IRScope org.jruby.RubyModule int org.jruby.ir.representations.BasicBlock org.jruby.ir.instructions.CallBase int org.jruby.ir.operands.Label org.jruby.ir.representations.BasicBlock org.jruby.ir.representations.BasicBlock org.jruby.ir.transformations.inlining.SimpleCloneInfo org.jruby.ir.operands.Variable org.jruby.ir.transformations.inlining.InlineCloneInfo org.jruby.ir.representations.CFG java.util.List org.jruby.ir.representations.BasicBlock top java.util.Iterator
StackMap stack:
73: aload 17
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.jruby.ir.representations.BasicBlock
astore 16
start local 16 74: aload 16
invokevirtual org.jruby.ir.representations.BasicBlock.isEntryBB:()Z
ifne 82
aload 16
invokevirtual org.jruby.ir.representations.BasicBlock.isExitBB:()Z
ifeq 75
goto 82
75: StackMap locals: org.jruby.ir.transformations.inlining.CFGInliner org.jruby.ir.IRScope org.jruby.RubyModule int org.jruby.ir.representations.BasicBlock org.jruby.ir.instructions.CallBase int org.jruby.ir.operands.Label org.jruby.ir.representations.BasicBlock org.jruby.ir.representations.BasicBlock org.jruby.ir.transformations.inlining.SimpleCloneInfo org.jruby.ir.operands.Variable org.jruby.ir.transformations.inlining.InlineCloneInfo org.jruby.ir.representations.CFG java.util.List org.jruby.ir.representations.BasicBlock org.jruby.ir.representations.BasicBlock java.util.Iterator
StackMap stack:
aload 12
aload 16
invokevirtual org.jruby.ir.transformations.inlining.InlineCloneInfo.getRenamedBB:(Lorg/jruby/ir/representations/BasicBlock;)Lorg/jruby/ir/representations/BasicBlock;
astore 18
start local 18 76: aload 13
aload 16
invokevirtual org.jruby.ir.representations.CFG.getRescuerBBFor:(Lorg/jruby/ir/representations/BasicBlock;)Lorg/jruby/ir/representations/BasicBlock;
astore 19
start local 19 77: aload 19
ifnull 80
78: aload 0
getfield org.jruby.ir.transformations.inlining.CFGInliner.cfg:Lorg/jruby/ir/representations/CFG;
aload 18
aload 12
aload 19
invokevirtual org.jruby.ir.transformations.inlining.InlineCloneInfo.getRenamedBB:(Lorg/jruby/ir/representations/BasicBlock;)Lorg/jruby/ir/representations/BasicBlock;
invokevirtual org.jruby.ir.representations.CFG.setRescuerBB:(Lorg/jruby/ir/representations/BasicBlock;Lorg/jruby/ir/representations/BasicBlock;)V
79: goto 82
StackMap locals: org.jruby.ir.representations.BasicBlock org.jruby.ir.representations.BasicBlock
StackMap stack:
80: aload 15
ifnull 82
81: aload 0
getfield org.jruby.ir.transformations.inlining.CFGInliner.cfg:Lorg/jruby/ir/representations/CFG;
aload 18
aload 15
invokevirtual org.jruby.ir.representations.CFG.setRescuerBB:(Lorg/jruby/ir/representations/BasicBlock;Lorg/jruby/ir/representations/BasicBlock;)V
end local 19 end local 18 end local 16 82: StackMap locals: org.jruby.ir.transformations.inlining.CFGInliner org.jruby.ir.IRScope org.jruby.RubyModule int org.jruby.ir.representations.BasicBlock org.jruby.ir.instructions.CallBase int org.jruby.ir.operands.Label org.jruby.ir.representations.BasicBlock org.jruby.ir.representations.BasicBlock org.jruby.ir.transformations.inlining.SimpleCloneInfo org.jruby.ir.operands.Variable org.jruby.ir.transformations.inlining.InlineCloneInfo org.jruby.ir.representations.CFG java.util.List org.jruby.ir.representations.BasicBlock top java.util.Iterator
StackMap stack:
aload 17
invokeinterface java.util.Iterator.hasNext:()Z
ifne 73
83: aload 0
getfield org.jruby.ir.transformations.inlining.CFGInliner.fullInterpreterContext:Lorg/jruby/ir/interpreter/FullInterpreterContext;
invokevirtual org.jruby.ir.interpreter.FullInterpreterContext.generateInstructionsForInterpretation:()V
84: aload 0
getfield org.jruby.ir.transformations.inlining.CFGInliner.hostScope:Lorg/jruby/ir/IRScope;
invokevirtual org.jruby.ir.IRScope.getNewLabel:()Lorg/jruby/ir/operands/Label;
astore 16
start local 16 85: aload 9
new org.jruby.ir.instructions.ModuleVersionGuardInstr
dup
aload 2
iload 3
aload 5
invokevirtual org.jruby.ir.instructions.CallBase.getReceiver:()Lorg/jruby/ir/operands/Operand;
aload 16
invokespecial org.jruby.ir.instructions.ModuleVersionGuardInstr.<init>:(Lorg/jruby/RubyModule;ILorg/jruby/ir/operands/Operand;Lorg/jruby/ir/operands/Label;)V
invokevirtual org.jruby.ir.representations.BasicBlock.addInstr:(Lorg/jruby/ir/instructions/Instr;)V
86: new org.jruby.ir.representations.BasicBlock
dup
aload 0
getfield org.jruby.ir.transformations.inlining.CFGInliner.cfg:Lorg/jruby/ir/representations/CFG;
aload 16
invokespecial org.jruby.ir.representations.BasicBlock.<init>:(Lorg/jruby/ir/representations/CFG;Lorg/jruby/ir/operands/Label;)V
astore 17
start local 17 87: aload 0
getfield org.jruby.ir.transformations.inlining.CFGInliner.cfg:Lorg/jruby/ir/representations/CFG;
aload 17
invokevirtual org.jruby.ir.representations.CFG.addBasicBlock:(Lorg/jruby/ir/representations/BasicBlock;)V
88: aload 17
aload 5
invokevirtual org.jruby.ir.representations.BasicBlock.addInstr:(Lorg/jruby/ir/instructions/Instr;)V
89: aload 17
90: new org.jruby.ir.instructions.JumpInstr
dup
aload 10
ifnonnull 91
aload 7
goto 92
StackMap locals: org.jruby.ir.transformations.inlining.CFGInliner org.jruby.ir.IRScope org.jruby.RubyModule int org.jruby.ir.representations.BasicBlock org.jruby.ir.instructions.CallBase int org.jruby.ir.operands.Label org.jruby.ir.representations.BasicBlock org.jruby.ir.representations.BasicBlock org.jruby.ir.transformations.inlining.SimpleCloneInfo org.jruby.ir.operands.Variable org.jruby.ir.transformations.inlining.InlineCloneInfo org.jruby.ir.representations.CFG java.util.List org.jruby.ir.representations.BasicBlock org.jruby.ir.operands.Label org.jruby.ir.representations.BasicBlock
StackMap stack: org.jruby.ir.representations.BasicBlock new 90 new 90
91: aload 10
aload 7
invokevirtual org.jruby.ir.transformations.inlining.SimpleCloneInfo.getRenamedLabel:(Lorg/jruby/ir/operands/Label;)Lorg/jruby/ir/operands/Label;
StackMap locals: org.jruby.ir.transformations.inlining.CFGInliner org.jruby.ir.IRScope org.jruby.RubyModule int org.jruby.ir.representations.BasicBlock org.jruby.ir.instructions.CallBase int org.jruby.ir.operands.Label org.jruby.ir.representations.BasicBlock org.jruby.ir.representations.BasicBlock org.jruby.ir.transformations.inlining.SimpleCloneInfo org.jruby.ir.operands.Variable org.jruby.ir.transformations.inlining.InlineCloneInfo org.jruby.ir.representations.CFG java.util.List org.jruby.ir.representations.BasicBlock org.jruby.ir.operands.Label org.jruby.ir.representations.BasicBlock
StackMap stack: org.jruby.ir.representations.BasicBlock new 90 new 90 org.jruby.ir.operands.Label
92: invokespecial org.jruby.ir.instructions.JumpInstr.<init>:(Lorg/jruby/ir/operands/Label;)V
invokevirtual org.jruby.ir.representations.BasicBlock.addInstr:(Lorg/jruby/ir/instructions/Instr;)V
93: aload 5
invokevirtual org.jruby.ir.instructions.CallBase.blockInlining:()V
94: aload 0
getfield org.jruby.ir.transformations.inlining.CFGInliner.cfg:Lorg/jruby/ir/representations/CFG;
aload 9
aload 17
getstatic org.jruby.ir.representations.CFG$EdgeType.REGULAR:Lorg/jruby/ir/representations/CFG$EdgeType;
invokevirtual org.jruby.ir.representations.CFG.addEdge:(Lorg/jruby/ir/representations/BasicBlock;Lorg/jruby/ir/representations/BasicBlock;Ljava/lang/Object;)V
95: aload 0
getfield org.jruby.ir.transformations.inlining.CFGInliner.cfg:Lorg/jruby/ir/representations/CFG;
aload 17
aload 8
getstatic org.jruby.ir.representations.CFG$EdgeType.REGULAR:Lorg/jruby/ir/representations/CFG$EdgeType;
invokevirtual org.jruby.ir.representations.CFG.addEdge:(Lorg/jruby/ir/representations/BasicBlock;Lorg/jruby/ir/representations/BasicBlock;Ljava/lang/Object;)V
96: aload 5
aconst_null
invokevirtual org.jruby.ir.instructions.CallBase.getClosureArg:(Lorg/jruby/ir/operands/Operand;)Lorg/jruby/ir/operands/Operand;
astore 18
start local 18 97: aload 12
invokevirtual org.jruby.ir.transformations.inlining.InlineCloneInfo.getYieldSites:()Ljava/util/List;
astore 19
start local 19 98: aload 18
ifnull 104
aload 19
invokeinterface java.util.List.isEmpty:()Z
ifne 104
99: aload 19
invokeinterface java.util.List.size:()I
iconst_1
if_icmple 100
ldc "cannot inline a scope with two or more yields"
areturn
100: StackMap locals: org.jruby.ir.operands.Operand java.util.List
StackMap stack:
aload 18
instanceof org.jruby.ir.operands.WrappedIRClosure
ifne 102
101: new java.lang.RuntimeException
dup
ldc "Encountered a dynamic closure arg. Cannot inline it here! Convert the yield to a call by converting the closure into a dummy method (have to convert all frame vars to call arguments, or at least convert the frame into a call arg"
invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;)V
athrow
102: StackMap locals:
StackMap stack:
aload 19
iconst_0
invokeinterface java.util.List.get:(I)Ljava/lang/Object;
checkcast org.jruby.ir.Tuple
astore 20
start local 20 103: aload 0
aload 12
aload 18
checkcast org.jruby.ir.operands.WrappedIRClosure
invokevirtual org.jruby.ir.operands.WrappedIRClosure.getClosure:()Lorg/jruby/ir/IRClosure;
aload 20
getfield org.jruby.ir.Tuple.a:Ljava/lang/Object;
checkcast org.jruby.ir.representations.BasicBlock
aload 20
getfield org.jruby.ir.Tuple.b:Ljava/lang/Object;
checkcast org.jruby.ir.instructions.YieldInstr
invokevirtual org.jruby.ir.transformations.inlining.CFGInliner.inlineClosureAtYieldSite:(Lorg/jruby/ir/transformations/inlining/InlineCloneInfo;Lorg/jruby/ir/IRClosure;Lorg/jruby/ir/representations/BasicBlock;Lorg/jruby/ir/instructions/YieldInstr;)V
end local 20 104: StackMap locals:
StackMap stack:
new java.util.ArrayList
dup
invokespecial java.util.ArrayList.<init>:()V
astore 20
start local 20 105: aload 0
getfield org.jruby.ir.transformations.inlining.CFGInliner.cfg:Lorg/jruby/ir/representations/CFG;
invokevirtual org.jruby.ir.representations.CFG.getBasicBlocks:()Ljava/util/Collection;
invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
astore 22
goto 111
StackMap locals: org.jruby.ir.transformations.inlining.CFGInliner org.jruby.ir.IRScope org.jruby.RubyModule int org.jruby.ir.representations.BasicBlock org.jruby.ir.instructions.CallBase int org.jruby.ir.operands.Label org.jruby.ir.representations.BasicBlock org.jruby.ir.representations.BasicBlock org.jruby.ir.transformations.inlining.SimpleCloneInfo org.jruby.ir.operands.Variable org.jruby.ir.transformations.inlining.InlineCloneInfo org.jruby.ir.representations.CFG java.util.List org.jruby.ir.representations.BasicBlock org.jruby.ir.operands.Label org.jruby.ir.representations.BasicBlock org.jruby.ir.operands.Operand java.util.List java.util.List top java.util.Iterator
StackMap stack:
106: aload 22
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.jruby.ir.representations.BasicBlock
astore 21
start local 21 107: aload 21
invokevirtual org.jruby.ir.representations.BasicBlock.getInstrs:()Ljava/util/List;
invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
astore 24
goto 110
StackMap locals: org.jruby.ir.transformations.inlining.CFGInliner org.jruby.ir.IRScope org.jruby.RubyModule int org.jruby.ir.representations.BasicBlock org.jruby.ir.instructions.CallBase int org.jruby.ir.operands.Label org.jruby.ir.representations.BasicBlock org.jruby.ir.representations.BasicBlock org.jruby.ir.transformations.inlining.SimpleCloneInfo org.jruby.ir.operands.Variable org.jruby.ir.transformations.inlining.InlineCloneInfo org.jruby.ir.representations.CFG java.util.List org.jruby.ir.representations.BasicBlock org.jruby.ir.operands.Label org.jruby.ir.representations.BasicBlock org.jruby.ir.operands.Operand java.util.List java.util.List org.jruby.ir.representations.BasicBlock java.util.Iterator top java.util.Iterator
StackMap stack:
108: aload 24
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.jruby.ir.instructions.Instr
astore 23
start local 23 109: aload 23
invokevirtual org.jruby.ir.instructions.Instr.getOperation:()Lorg/jruby/ir/Operation;
invokevirtual org.jruby.ir.Operation.isReturn:()Z
ifeq 110
aload 20
aload 21
invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
pop
end local 23 110: StackMap locals:
StackMap stack:
aload 24
invokeinterface java.util.Iterator.hasNext:()Z
ifne 108
end local 21 111: StackMap locals: org.jruby.ir.transformations.inlining.CFGInliner org.jruby.ir.IRScope org.jruby.RubyModule int org.jruby.ir.representations.BasicBlock org.jruby.ir.instructions.CallBase int org.jruby.ir.operands.Label org.jruby.ir.representations.BasicBlock org.jruby.ir.representations.BasicBlock org.jruby.ir.transformations.inlining.SimpleCloneInfo org.jruby.ir.operands.Variable org.jruby.ir.transformations.inlining.InlineCloneInfo org.jruby.ir.representations.CFG java.util.List org.jruby.ir.representations.BasicBlock org.jruby.ir.operands.Label org.jruby.ir.representations.BasicBlock org.jruby.ir.operands.Operand java.util.List java.util.List top java.util.Iterator
StackMap stack:
aload 22
invokeinterface java.util.Iterator.hasNext:()Z
ifne 106
112: aload 0
getfield org.jruby.ir.transformations.inlining.CFGInliner.cfg:Lorg/jruby/ir/representations/CFG;
aload 20
invokevirtual org.jruby.ir.representations.CFG.optimize:(Ljava/util/List;)V
113: aload 0
invokevirtual org.jruby.ir.transformations.inlining.CFGInliner.addMissingJumps:()V
114: getstatic org.jruby.ir.transformations.inlining.CFGInliner.debug:Z
ifeq 115
aload 0
invokevirtual org.jruby.ir.transformations.inlining.CFGInliner.printInlineEpilogue:()V
115: StackMap locals: org.jruby.ir.transformations.inlining.CFGInliner org.jruby.ir.IRScope org.jruby.RubyModule int org.jruby.ir.representations.BasicBlock org.jruby.ir.instructions.CallBase int org.jruby.ir.operands.Label org.jruby.ir.representations.BasicBlock org.jruby.ir.representations.BasicBlock org.jruby.ir.transformations.inlining.SimpleCloneInfo org.jruby.ir.operands.Variable org.jruby.ir.transformations.inlining.InlineCloneInfo org.jruby.ir.representations.CFG java.util.List org.jruby.ir.representations.BasicBlock org.jruby.ir.operands.Label org.jruby.ir.representations.BasicBlock org.jruby.ir.operands.Operand java.util.List java.util.List
StackMap stack:
aconst_null
areturn
end local 20 end local 19 end local 18 end local 17 end local 16 end local 15 end local 14 end local 13 end local 12 end local 11 end local 10 end local 9 end local 8 end local 7 end local 6 end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 116 0 this Lorg/jruby/ir/transformations/inlining/CFGInliner;
0 116 1 scopeToInline Lorg/jruby/ir/IRScope;
0 116 2 implClass Lorg/jruby/RubyModule;
0 116 3 classToken I
0 116 4 callBB Lorg/jruby/ir/representations/BasicBlock;
0 116 5 call Lorg/jruby/ir/instructions/CallBase;
0 116 6 cloneHost Z
9 116 7 splitBBLabel Lorg/jruby/ir/operands/Label;
10 116 8 afterInlineBB Lorg/jruby/ir/representations/BasicBlock;
11 116 9 beforeInlineBB Lorg/jruby/ir/representations/BasicBlock;
16 116 10 hostCloneInfo Lorg/jruby/ir/transformations/inlining/SimpleCloneInfo;
17 116 11 callReceiverVar Lorg/jruby/ir/operands/Variable;
18 116 12 ii Lorg/jruby/ir/transformations/inlining/InlineCloneInfo;
19 116 13 methodToInline Lorg/jruby/ir/representations/CFG;
20 116 14 methodBBs Ljava/util/List<Lorg/jruby/ir/representations/BasicBlock;>;
22 30 15 selfClone Lorg/jruby/ir/representations/CFG;
24 29 16 b Lorg/jruby/ir/representations/BasicBlock;
27 28 18 e Lorg/jruby/dirgra/Edge<Lorg/jruby/ir/representations/BasicBlock;>;
33 34 15 b Lorg/jruby/ir/representations/BasicBlock;
37 44 15 x Lorg/jruby/ir/representations/BasicBlock;
39 44 17 rx Lorg/jruby/ir/representations/BasicBlock;
41 43 18 e Lorg/jruby/dirgra/Edge<Lorg/jruby/ir/representations/BasicBlock;>;
42 43 20 b Lorg/jruby/ir/representations/BasicBlock;
48 55 15 destination Lorg/jruby/ir/representations/BasicBlock;
50 55 17 dstBB Lorg/jruby/ir/representations/BasicBlock;
58 69 15 e Lorg/jruby/dirgra/Edge<Lorg/jruby/ir/representations/BasicBlock;>;
59 69 17 source Lorg/jruby/ir/representations/BasicBlock;
61 69 18 clonedSource Lorg/jruby/ir/representations/BasicBlock;
63 67 19 rescuerOfSplitBB Lorg/jruby/ir/representations/BasicBlock;
71 116 15 callBBrescuer Lorg/jruby/ir/representations/BasicBlock;
74 82 16 x Lorg/jruby/ir/representations/BasicBlock;
76 82 18 xRenamed Lorg/jruby/ir/representations/BasicBlock;
77 82 19 xProtector Lorg/jruby/ir/representations/BasicBlock;
85 116 16 failurePathLabel Lorg/jruby/ir/operands/Label;
87 116 17 failurePathBB Lorg/jruby/ir/representations/BasicBlock;
97 116 18 closureArg Lorg/jruby/ir/operands/Operand;
98 116 19 yieldSites Ljava/util/List;
103 104 20 t Lorg/jruby/ir/Tuple;
105 116 20 returnBBs Ljava/util/List<Lorg/jruby/ir/representations/BasicBlock;>;
107 111 21 basicBlock Lorg/jruby/ir/representations/BasicBlock;
109 110 23 instr Lorg/jruby/ir/instructions/Instr;
MethodParameters:
Name Flags
scopeToInline
implClass
classToken
callBB
call
cloneHost
private void addMissingJumps();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=7, args_size=1
start local 0 0: aload 0
getfield org.jruby.ir.transformations.inlining.CFGInliner.cfg:Lorg/jruby/ir/representations/CFG;
invokevirtual org.jruby.ir.representations.CFG.getBasicBlocks:()Ljava/util/Collection;
invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
astore 2
goto 18
StackMap locals: org.jruby.ir.transformations.inlining.CFGInliner top java.util.Iterator
StackMap stack:
1: aload 2
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.jruby.ir.representations.BasicBlock
astore 1
start local 1 2: iconst_0
istore 3
start local 3 3: aconst_null
astore 4
start local 4 4: aload 0
getfield org.jruby.ir.transformations.inlining.CFGInliner.cfg:Lorg/jruby/ir/representations/CFG;
aload 1
invokevirtual org.jruby.ir.representations.CFG.getOutgoingEdges:(Lorg/jruby/ir/representations/BasicBlock;)Ljava/util/Collection;
invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
astore 6
goto 12
StackMap locals: org.jruby.ir.transformations.inlining.CFGInliner org.jruby.ir.representations.BasicBlock java.util.Iterator int org.jruby.ir.operands.Label top java.util.Iterator
StackMap stack:
5: aload 6
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.jruby.dirgra.Edge
astore 5
start local 5 6: aload 5
invokevirtual org.jruby.dirgra.Edge.getType:()Ljava/lang/Object;
getstatic org.jruby.ir.representations.CFG$EdgeType.FALL_THROUGH:Lorg/jruby/ir/representations/CFG$EdgeType;
if_acmpne 9
7: iconst_1
istore 3
8: goto 12
StackMap locals: org.jruby.ir.transformations.inlining.CFGInliner org.jruby.ir.representations.BasicBlock java.util.Iterator int org.jruby.ir.operands.Label org.jruby.dirgra.Edge java.util.Iterator
StackMap stack:
9: aload 5
invokevirtual org.jruby.dirgra.Edge.getType:()Ljava/lang/Object;
getstatic org.jruby.ir.representations.CFG$EdgeType.REGULAR:Lorg/jruby/ir/representations/CFG$EdgeType;
if_acmpeq 10
aload 5
invokevirtual org.jruby.dirgra.Edge.getType:()Ljava/lang/Object;
getstatic org.jruby.ir.representations.CFG$EdgeType.EXIT:Lorg/jruby/ir/representations/CFG$EdgeType;
if_acmpne 12
10: StackMap locals:
StackMap stack:
iload 3
ifeq 11
goto 12
11: StackMap locals:
StackMap stack:
aload 5
invokevirtual org.jruby.dirgra.Edge.getDestination:()Lorg/jruby/dirgra/Vertex;
invokevirtual org.jruby.dirgra.Vertex.getData:()Lorg/jruby/dirgra/ExplicitVertexID;
checkcast org.jruby.ir.representations.BasicBlock
invokevirtual org.jruby.ir.representations.BasicBlock.getLabel:()Lorg/jruby/ir/operands/Label;
astore 4
end local 5 12: StackMap locals: org.jruby.ir.transformations.inlining.CFGInliner org.jruby.ir.representations.BasicBlock java.util.Iterator int org.jruby.ir.operands.Label top java.util.Iterator
StackMap stack:
aload 6
invokeinterface java.util.Iterator.hasNext:()Z
ifne 5
13: iload 3
ifeq 14
goto 18
14: StackMap locals: org.jruby.ir.transformations.inlining.CFGInliner org.jruby.ir.representations.BasicBlock java.util.Iterator int org.jruby.ir.operands.Label
StackMap stack:
aload 4
ifnonnull 15
goto 18
15: StackMap locals:
StackMap stack:
aload 1
invokevirtual org.jruby.ir.representations.BasicBlock.getLastInstr:()Lorg/jruby/ir/instructions/Instr;
astore 5
start local 5 16: aload 5
ifnull 18
aload 5
invokevirtual org.jruby.ir.instructions.Instr.transfersControl:()Z
ifne 18
17: aload 1
new org.jruby.ir.instructions.JumpInstr
dup
aload 4
invokespecial org.jruby.ir.instructions.JumpInstr.<init>:(Lorg/jruby/ir/operands/Label;)V
invokevirtual org.jruby.ir.representations.BasicBlock.addInstr:(Lorg/jruby/ir/instructions/Instr;)V
end local 5 end local 4 end local 3 end local 1 18: StackMap locals: org.jruby.ir.transformations.inlining.CFGInliner top java.util.Iterator
StackMap stack:
aload 2
invokeinterface java.util.Iterator.hasNext:()Z
ifne 1
19: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 20 0 this Lorg/jruby/ir/transformations/inlining/CFGInliner;
2 18 1 bb Lorg/jruby/ir/representations/BasicBlock;
3 18 3 fallThrough Z
4 18 4 jumpLabel Lorg/jruby/ir/operands/Label;
6 12 5 edge Lorg/jruby/dirgra/Edge<Lorg/jruby/ir/representations/BasicBlock;>;
16 18 5 lastInstr Lorg/jruby/ir/instructions/Instr;
private void connectOuterEdges(org.jruby.ir.representations.BasicBlock, org.jruby.ir.representations.BasicBlock);
descriptor: (Lorg/jruby/ir/representations/BasicBlock;Lorg/jruby/ir/representations/BasicBlock;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=5, args_size=3
start local 0 start local 1 start local 2 0: aload 0
getfield org.jruby.ir.transformations.inlining.CFGInliner.cfg:Lorg/jruby/ir/representations/CFG;
aload 2
invokevirtual org.jruby.ir.representations.CFG.addBasicBlock:(Lorg/jruby/ir/representations/BasicBlock;)V
1: aload 0
getfield org.jruby.ir.transformations.inlining.CFGInliner.cfg:Lorg/jruby/ir/representations/CFG;
aload 1
invokevirtual org.jruby.ir.representations.CFG.getOutgoingEdges:(Lorg/jruby/ir/representations/BasicBlock;)Ljava/util/Collection;
invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
astore 4
goto 4
StackMap locals: org.jruby.ir.transformations.inlining.CFGInliner org.jruby.ir.representations.BasicBlock org.jruby.ir.representations.BasicBlock top java.util.Iterator
StackMap stack:
2: aload 4
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.jruby.dirgra.Edge
astore 3
start local 3 3: aload 0
getfield org.jruby.ir.transformations.inlining.CFGInliner.cfg:Lorg/jruby/ir/representations/CFG;
aload 2
aload 3
invokevirtual org.jruby.dirgra.Edge.getDestination:()Lorg/jruby/dirgra/Vertex;
invokevirtual org.jruby.dirgra.Vertex.getData:()Lorg/jruby/dirgra/ExplicitVertexID;
checkcast org.jruby.ir.representations.BasicBlock
aload 3
invokevirtual org.jruby.dirgra.Edge.getType:()Ljava/lang/Object;
invokevirtual org.jruby.ir.representations.CFG.addEdge:(Lorg/jruby/ir/representations/BasicBlock;Lorg/jruby/ir/representations/BasicBlock;Ljava/lang/Object;)V
end local 3 4: StackMap locals:
StackMap stack:
aload 4
invokeinterface java.util.Iterator.hasNext:()Z
ifne 2
5: aload 0
getfield org.jruby.ir.transformations.inlining.CFGInliner.cfg:Lorg/jruby/ir/representations/CFG;
aload 1
invokevirtual org.jruby.ir.representations.CFG.removeAllOutgoingEdgesForBB:(Lorg/jruby/ir/representations/BasicBlock;)V
6: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 this Lorg/jruby/ir/transformations/inlining/CFGInliner;
0 7 1 beforeInlineBB Lorg/jruby/ir/representations/BasicBlock;
0 7 2 afterInlineBB Lorg/jruby/ir/representations/BasicBlock;
3 4 3 e Lorg/jruby/dirgra/Edge<Lorg/jruby/ir/representations/BasicBlock;>;
MethodParameters:
Name Flags
beforeInlineBB
afterInlineBB
private void inlineClosureAtYieldSite(org.jruby.ir.transformations.inlining.InlineCloneInfo, org.jruby.ir.IRClosure, org.jruby.ir.representations.BasicBlock, org.jruby.ir.instructions.YieldInstr);
descriptor: (Lorg/jruby/ir/transformations/inlining/InlineCloneInfo;Lorg/jruby/ir/IRClosure;Lorg/jruby/ir/representations/BasicBlock;Lorg/jruby/ir/instructions/YieldInstr;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=15, args_size=5
start local 0 start local 1 start local 2 start local 3 start local 4 0: aload 3
aload 4
aload 0
getfield org.jruby.ir.transformations.inlining.CFGInliner.hostScope:Lorg/jruby/ir/IRScope;
invokevirtual org.jruby.ir.IRScope.getNewLabel:()Lorg/jruby/ir/operands/Label;
iconst_0
invokevirtual org.jruby.ir.representations.BasicBlock.splitAtInstruction:(Lorg/jruby/ir/instructions/Site;Lorg/jruby/ir/operands/Label;Z)Lorg/jruby/ir/representations/BasicBlock;
astore 5
start local 5 1: aload 3
astore 6
start local 6 2: aload 0
aload 6
aload 5
invokevirtual org.jruby.ir.transformations.inlining.CFGInliner.connectOuterEdges:(Lorg/jruby/ir/representations/BasicBlock;Lorg/jruby/ir/representations/BasicBlock;)V
3: getstatic org.jruby.ir.transformations.inlining.CFGInliner.debug:Z
ifeq 4
aload 0
aload 6
aload 5
invokevirtual org.jruby.ir.transformations.inlining.CFGInliner.printInlineSplitBBs:(Lorg/jruby/ir/representations/BasicBlock;Lorg/jruby/ir/representations/BasicBlock;)V
4: StackMap locals: org.jruby.ir.representations.BasicBlock org.jruby.ir.representations.BasicBlock
StackMap stack:
aload 1
aload 2
invokevirtual org.jruby.ir.transformations.inlining.InlineCloneInfo.cloneForInliningClosure:(Lorg/jruby/ir/IRScope;)Lorg/jruby/ir/transformations/inlining/InlineCloneInfo;
astore 1
5: aload 1
aload 4
aload 6
aload 2
invokevirtual org.jruby.ir.IRClosure.getBlockBody:()Lorg/jruby/runtime/BlockBody;
invokevirtual org.jruby.runtime.BlockBody.getSignature:()Lorg/jruby/runtime/Signature;
invokevirtual org.jruby.runtime.Signature.arityValue:()I
invokevirtual org.jruby.ir.transformations.inlining.InlineCloneInfo.setupYieldArgsAndYieldResult:(Lorg/jruby/ir/instructions/YieldInstr;Lorg/jruby/ir/representations/BasicBlock;I)V
6: aload 2
invokevirtual org.jruby.ir.IRClosure.getCFG:()Lorg/jruby/ir/representations/CFG;
astore 7
start local 7 7: aload 7
invokevirtual org.jruby.ir.representations.CFG.getGlobalEnsureBB:()Lorg/jruby/ir/representations/BasicBlock;
astore 8
start local 8 8: aload 7
invokevirtual org.jruby.ir.representations.CFG.getBasicBlocks:()Ljava/util/Collection;
invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
astore 10
goto 11
StackMap locals: org.jruby.ir.transformations.inlining.CFGInliner org.jruby.ir.transformations.inlining.InlineCloneInfo org.jruby.ir.IRClosure org.jruby.ir.representations.BasicBlock org.jruby.ir.instructions.YieldInstr org.jruby.ir.representations.BasicBlock org.jruby.ir.representations.BasicBlock org.jruby.ir.representations.CFG org.jruby.ir.representations.BasicBlock top java.util.Iterator
StackMap stack:
9: aload 10
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.jruby.ir.representations.BasicBlock
astore 9
start local 9 10: aload 9
invokevirtual org.jruby.ir.representations.BasicBlock.isEntryBB:()Z
ifne 11
aload 9
invokevirtual org.jruby.ir.representations.BasicBlock.isExitBB:()Z
ifne 11
aload 9
aload 8
if_acmpeq 11
aload 0
getfield org.jruby.ir.transformations.inlining.CFGInliner.cfg:Lorg/jruby/ir/representations/CFG;
aload 9
aload 1
invokevirtual org.jruby.ir.representations.BasicBlock.cloneForInlining:(Lorg/jruby/ir/transformations/inlining/InlineCloneInfo;)Lorg/jruby/ir/representations/BasicBlock;
invokevirtual org.jruby.ir.representations.CFG.addBasicBlock:(Lorg/jruby/ir/representations/BasicBlock;)V
end local 9 11: StackMap locals:
StackMap stack:
aload 10
invokeinterface java.util.Iterator.hasNext:()Z
ifne 9
12: aload 7
invokevirtual org.jruby.ir.representations.CFG.getBasicBlocks:()Ljava/util/Collection;
invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
astore 10
goto 21
StackMap locals:
StackMap stack:
13: aload 10
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.jruby.ir.representations.BasicBlock
astore 9
start local 9 14: aload 9
invokevirtual org.jruby.ir.representations.BasicBlock.isEntryBB:()Z
ifne 21
aload 9
invokevirtual org.jruby.ir.representations.BasicBlock.isExitBB:()Z
ifeq 15
goto 21
15: StackMap locals: org.jruby.ir.transformations.inlining.CFGInliner org.jruby.ir.transformations.inlining.InlineCloneInfo org.jruby.ir.IRClosure org.jruby.ir.representations.BasicBlock org.jruby.ir.instructions.YieldInstr org.jruby.ir.representations.BasicBlock org.jruby.ir.representations.BasicBlock org.jruby.ir.representations.CFG org.jruby.ir.representations.BasicBlock org.jruby.ir.representations.BasicBlock java.util.Iterator
StackMap stack:
aload 1
aload 9
invokevirtual org.jruby.ir.transformations.inlining.InlineCloneInfo.getRenamedBB:(Lorg/jruby/ir/representations/BasicBlock;)Lorg/jruby/ir/representations/BasicBlock;
astore 11
start local 11 16: aload 7
aload 9
invokevirtual org.jruby.ir.representations.CFG.getOutgoingEdges:(Lorg/jruby/ir/representations/BasicBlock;)Ljava/util/Collection;
invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
astore 13
goto 20
StackMap locals: org.jruby.ir.transformations.inlining.CFGInliner org.jruby.ir.transformations.inlining.InlineCloneInfo org.jruby.ir.IRClosure org.jruby.ir.representations.BasicBlock org.jruby.ir.instructions.YieldInstr org.jruby.ir.representations.BasicBlock org.jruby.ir.representations.BasicBlock org.jruby.ir.representations.CFG org.jruby.ir.representations.BasicBlock org.jruby.ir.representations.BasicBlock java.util.Iterator org.jruby.ir.representations.BasicBlock top java.util.Iterator
StackMap stack:
17: aload 13
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.jruby.dirgra.Edge
astore 12
start local 12 18: aload 12
invokevirtual org.jruby.dirgra.Edge.getDestination:()Lorg/jruby/dirgra/Vertex;
invokevirtual org.jruby.dirgra.Vertex.getData:()Lorg/jruby/dirgra/ExplicitVertexID;
checkcast org.jruby.ir.representations.BasicBlock
astore 14
start local 14 19: aload 14
invokevirtual org.jruby.ir.representations.BasicBlock.isExitBB:()Z
ifne 20
aload 14
aload 8
if_acmpeq 20
aload 0
getfield org.jruby.ir.transformations.inlining.CFGInliner.cfg:Lorg/jruby/ir/representations/CFG;
aload 11
aload 1
aload 14
invokevirtual org.jruby.ir.transformations.inlining.InlineCloneInfo.getRenamedBB:(Lorg/jruby/ir/representations/BasicBlock;)Lorg/jruby/ir/representations/BasicBlock;
aload 12
invokevirtual org.jruby.dirgra.Edge.getType:()Ljava/lang/Object;
invokevirtual org.jruby.ir.representations.CFG.addEdge:(Lorg/jruby/ir/representations/BasicBlock;Lorg/jruby/ir/representations/BasicBlock;Ljava/lang/Object;)V
end local 14 end local 12 20: StackMap locals:
StackMap stack:
aload 13
invokeinterface java.util.Iterator.hasNext:()Z
ifne 17
end local 11 end local 9 21: StackMap locals: org.jruby.ir.transformations.inlining.CFGInliner org.jruby.ir.transformations.inlining.InlineCloneInfo org.jruby.ir.IRClosure org.jruby.ir.representations.BasicBlock org.jruby.ir.instructions.YieldInstr org.jruby.ir.representations.BasicBlock org.jruby.ir.representations.BasicBlock org.jruby.ir.representations.CFG org.jruby.ir.representations.BasicBlock top java.util.Iterator
StackMap stack:
aload 10
invokeinterface java.util.Iterator.hasNext:()Z
ifne 13
22: aload 7
aload 7
invokevirtual org.jruby.ir.representations.CFG.getEntryBB:()Lorg/jruby/ir/representations/BasicBlock;
invokevirtual org.jruby.ir.representations.CFG.getOutgoingEdges:(Lorg/jruby/ir/representations/BasicBlock;)Ljava/util/Collection;
invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
astore 10
goto 27
StackMap locals:
StackMap stack:
23: aload 10
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.jruby.dirgra.Edge
astore 9
start local 9 24: aload 9
invokevirtual org.jruby.dirgra.Edge.getDestination:()Lorg/jruby/dirgra/Vertex;
invokevirtual org.jruby.dirgra.Vertex.getData:()Lorg/jruby/dirgra/ExplicitVertexID;
checkcast org.jruby.ir.representations.BasicBlock
astore 11
start local 11 25: aload 11
invokevirtual org.jruby.ir.representations.BasicBlock.isExitBB:()Z
ifne 27
aload 11
aload 8
if_acmpeq 27
26: aload 0
getfield org.jruby.ir.transformations.inlining.CFGInliner.cfg:Lorg/jruby/ir/representations/CFG;
aload 6
aload 1
aload 11
invokevirtual org.jruby.ir.transformations.inlining.InlineCloneInfo.getRenamedBB:(Lorg/jruby/ir/representations/BasicBlock;)Lorg/jruby/ir/representations/BasicBlock;
getstatic org.jruby.ir.representations.CFG$EdgeType.FALL_THROUGH:Lorg/jruby/ir/representations/CFG$EdgeType;
invokevirtual org.jruby.ir.representations.CFG.addEdge:(Lorg/jruby/ir/representations/BasicBlock;Lorg/jruby/ir/representations/BasicBlock;Ljava/lang/Object;)V
end local 11 end local 9 27: StackMap locals:
StackMap stack:
aload 10
invokeinterface java.util.Iterator.hasNext:()Z
ifne 23
28: aload 7
aload 7
invokevirtual org.jruby.ir.representations.CFG.getExitBB:()Lorg/jruby/ir/representations/BasicBlock;
invokevirtual org.jruby.ir.representations.CFG.getIncomingEdges:(Lorg/jruby/ir/representations/BasicBlock;)Ljava/lang/Iterable;
invokeinterface java.lang.Iterable.iterator:()Ljava/util/Iterator;
astore 10
goto 42
StackMap locals:
StackMap stack:
29: aload 10
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.jruby.dirgra.Edge
astore 9
start local 9 30: aload 9
invokevirtual org.jruby.dirgra.Edge.getSource:()Lorg/jruby/dirgra/Vertex;
invokevirtual org.jruby.dirgra.Vertex.getData:()Lorg/jruby/dirgra/ExplicitVertexID;
checkcast org.jruby.ir.representations.BasicBlock
astore 11
start local 11 31: aload 11
invokevirtual org.jruby.ir.representations.BasicBlock.isEntryBB:()Z
ifeq 32
goto 42
32: StackMap locals: org.jruby.ir.transformations.inlining.CFGInliner org.jruby.ir.transformations.inlining.InlineCloneInfo org.jruby.ir.IRClosure org.jruby.ir.representations.BasicBlock org.jruby.ir.instructions.YieldInstr org.jruby.ir.representations.BasicBlock org.jruby.ir.representations.BasicBlock org.jruby.ir.representations.CFG org.jruby.ir.representations.BasicBlock org.jruby.dirgra.Edge java.util.Iterator org.jruby.ir.representations.BasicBlock
StackMap stack:
aload 1
aload 11
invokevirtual org.jruby.ir.transformations.inlining.InlineCloneInfo.getRenamedBB:(Lorg/jruby/ir/representations/BasicBlock;)Lorg/jruby/ir/representations/BasicBlock;
astore 12
start local 12 33: aload 9
invokevirtual org.jruby.dirgra.Edge.getType:()Ljava/lang/Object;
getstatic org.jruby.ir.representations.CFG$EdgeType.EXCEPTION:Lorg/jruby/ir/representations/CFG$EdgeType;
if_acmpne 40
34: aload 0
getfield org.jruby.ir.transformations.inlining.CFGInliner.cfg:Lorg/jruby/ir/representations/CFG;
aload 5
invokevirtual org.jruby.ir.representations.CFG.getRescuerBBFor:(Lorg/jruby/ir/representations/BasicBlock;)Lorg/jruby/ir/representations/BasicBlock;
astore 13
start local 13 35: aload 13
ifnull 38
36: aload 0
getfield org.jruby.ir.transformations.inlining.CFGInliner.cfg:Lorg/jruby/ir/representations/CFG;
aload 12
aload 13
getstatic org.jruby.ir.representations.CFG$EdgeType.EXCEPTION:Lorg/jruby/ir/representations/CFG$EdgeType;
invokevirtual org.jruby.ir.representations.CFG.addEdge:(Lorg/jruby/ir/representations/BasicBlock;Lorg/jruby/ir/representations/BasicBlock;Ljava/lang/Object;)V
37: goto 42
38: StackMap locals: org.jruby.ir.representations.BasicBlock org.jruby.ir.representations.BasicBlock
StackMap stack:
aload 0
getfield org.jruby.ir.transformations.inlining.CFGInliner.cfg:Lorg/jruby/ir/representations/CFG;
aload 12
aload 0
getfield org.jruby.ir.transformations.inlining.CFGInliner.cfg:Lorg/jruby/ir/representations/CFG;
invokevirtual org.jruby.ir.representations.CFG.getExitBB:()Lorg/jruby/ir/representations/BasicBlock;
getstatic org.jruby.ir.representations.CFG$EdgeType.EXIT:Lorg/jruby/ir/representations/CFG$EdgeType;
invokevirtual org.jruby.ir.representations.CFG.addEdge:(Lorg/jruby/ir/representations/BasicBlock;Lorg/jruby/ir/representations/BasicBlock;Ljava/lang/Object;)V
end local 13 39: goto 42
StackMap locals:
StackMap stack:
40: aload 11
aload 8
if_acmpeq 42
41: aload 0
getfield org.jruby.ir.transformations.inlining.CFGInliner.cfg:Lorg/jruby/ir/representations/CFG;
aload 12
aload 5
aload 9
invokevirtual org.jruby.dirgra.Edge.getType:()Ljava/lang/Object;
invokevirtual org.jruby.ir.representations.CFG.addEdge:(Lorg/jruby/ir/representations/BasicBlock;Lorg/jruby/ir/representations/BasicBlock;Ljava/lang/Object;)V
end local 12 end local 11 end local 9 42: StackMap locals: org.jruby.ir.transformations.inlining.CFGInliner org.jruby.ir.transformations.inlining.InlineCloneInfo org.jruby.ir.IRClosure org.jruby.ir.representations.BasicBlock org.jruby.ir.instructions.YieldInstr org.jruby.ir.representations.BasicBlock org.jruby.ir.representations.BasicBlock org.jruby.ir.representations.CFG org.jruby.ir.representations.BasicBlock top java.util.Iterator
StackMap stack:
aload 10
invokeinterface java.util.Iterator.hasNext:()Z
ifne 29
43: aload 0
getfield org.jruby.ir.transformations.inlining.CFGInliner.cfg:Lorg/jruby/ir/representations/CFG;
aload 6
invokevirtual org.jruby.ir.representations.CFG.getRescuerBBFor:(Lorg/jruby/ir/representations/BasicBlock;)Lorg/jruby/ir/representations/BasicBlock;
astore 9
start local 9 44: aload 9
ifnull 45
aload 0
getfield org.jruby.ir.transformations.inlining.CFGInliner.cfg:Lorg/jruby/ir/representations/CFG;
aload 5
aload 9
invokevirtual org.jruby.ir.representations.CFG.setRescuerBB:(Lorg/jruby/ir/representations/BasicBlock;Lorg/jruby/ir/representations/BasicBlock;)V
45: StackMap locals: org.jruby.ir.transformations.inlining.CFGInliner org.jruby.ir.transformations.inlining.InlineCloneInfo org.jruby.ir.IRClosure org.jruby.ir.representations.BasicBlock org.jruby.ir.instructions.YieldInstr org.jruby.ir.representations.BasicBlock org.jruby.ir.representations.BasicBlock org.jruby.ir.representations.CFG org.jruby.ir.representations.BasicBlock org.jruby.ir.representations.BasicBlock
StackMap stack:
aload 7
invokevirtual org.jruby.ir.representations.CFG.getBasicBlocks:()Ljava/util/Collection;
invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
astore 11
goto 54
StackMap locals: org.jruby.ir.transformations.inlining.CFGInliner org.jruby.ir.transformations.inlining.InlineCloneInfo org.jruby.ir.IRClosure org.jruby.ir.representations.BasicBlock org.jruby.ir.instructions.YieldInstr org.jruby.ir.representations.BasicBlock org.jruby.ir.representations.BasicBlock org.jruby.ir.representations.CFG org.jruby.ir.representations.BasicBlock org.jruby.ir.representations.BasicBlock top java.util.Iterator
StackMap stack:
46: aload 11
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.jruby.ir.representations.BasicBlock
astore 10
start local 10 47: aload 10
invokevirtual org.jruby.ir.representations.BasicBlock.isEntryBB:()Z
ifne 54
aload 10
invokevirtual org.jruby.ir.representations.BasicBlock.isExitBB:()Z
ifne 54
aload 10
aload 8
if_acmpne 48
goto 54
48: StackMap locals: org.jruby.ir.transformations.inlining.CFGInliner org.jruby.ir.transformations.inlining.InlineCloneInfo org.jruby.ir.IRClosure org.jruby.ir.representations.BasicBlock org.jruby.ir.instructions.YieldInstr org.jruby.ir.representations.BasicBlock org.jruby.ir.representations.BasicBlock org.jruby.ir.representations.CFG org.jruby.ir.representations.BasicBlock org.jruby.ir.representations.BasicBlock org.jruby.ir.representations.BasicBlock java.util.Iterator
StackMap stack:
aload 1
aload 7
aload 10
invokevirtual org.jruby.ir.representations.CFG.getRescuerBBFor:(Lorg/jruby/ir/representations/BasicBlock;)Lorg/jruby/ir/representations/BasicBlock;
invokevirtual org.jruby.ir.transformations.inlining.InlineCloneInfo.getRenamedBB:(Lorg/jruby/ir/representations/BasicBlock;)Lorg/jruby/ir/representations/BasicBlock;
astore 12
start local 12 49: aload 12
ifnull 52
50: aload 0
getfield org.jruby.ir.transformations.inlining.CFGInliner.cfg:Lorg/jruby/ir/representations/CFG;
aload 1
aload 10
invokevirtual org.jruby.ir.transformations.inlining.InlineCloneInfo.getRenamedBB:(Lorg/jruby/ir/representations/BasicBlock;)Lorg/jruby/ir/representations/BasicBlock;
aload 12
invokevirtual org.jruby.ir.representations.CFG.setRescuerBB:(Lorg/jruby/ir/representations/BasicBlock;Lorg/jruby/ir/representations/BasicBlock;)V
51: goto 54
StackMap locals: org.jruby.ir.representations.BasicBlock
StackMap stack:
52: aload 9
ifnull 54
53: aload 0
getfield org.jruby.ir.transformations.inlining.CFGInliner.cfg:Lorg/jruby/ir/representations/CFG;
aload 1
aload 10
invokevirtual org.jruby.ir.transformations.inlining.InlineCloneInfo.getRenamedBB:(Lorg/jruby/ir/representations/BasicBlock;)Lorg/jruby/ir/representations/BasicBlock;
aload 9
invokevirtual org.jruby.ir.representations.CFG.setRescuerBB:(Lorg/jruby/ir/representations/BasicBlock;Lorg/jruby/ir/representations/BasicBlock;)V
end local 12 end local 10 54: StackMap locals: org.jruby.ir.transformations.inlining.CFGInliner org.jruby.ir.transformations.inlining.InlineCloneInfo org.jruby.ir.IRClosure org.jruby.ir.representations.BasicBlock org.jruby.ir.instructions.YieldInstr org.jruby.ir.representations.BasicBlock org.jruby.ir.representations.BasicBlock org.jruby.ir.representations.CFG org.jruby.ir.representations.BasicBlock org.jruby.ir.representations.BasicBlock top java.util.Iterator
StackMap stack:
aload 11
invokeinterface java.util.Iterator.hasNext:()Z
ifne 46
55: return
end local 9 end local 8 end local 7 end local 6 end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 56 0 this Lorg/jruby/ir/transformations/inlining/CFGInliner;
0 56 1 ii Lorg/jruby/ir/transformations/inlining/InlineCloneInfo;
0 56 2 cl Lorg/jruby/ir/IRClosure;
0 56 3 yieldBB Lorg/jruby/ir/representations/BasicBlock;
0 56 4 yield Lorg/jruby/ir/instructions/YieldInstr;
1 56 5 afterInlineBB Lorg/jruby/ir/representations/BasicBlock;
2 56 6 beforeInlineBB Lorg/jruby/ir/representations/BasicBlock;
7 56 7 closureCFG Lorg/jruby/ir/representations/CFG;
8 56 8 closureGEB Lorg/jruby/ir/representations/BasicBlock;
10 11 9 b Lorg/jruby/ir/representations/BasicBlock;
14 21 9 b Lorg/jruby/ir/representations/BasicBlock;
16 21 11 bClone Lorg/jruby/ir/representations/BasicBlock;
18 20 12 e Lorg/jruby/dirgra/Edge<Lorg/jruby/ir/representations/BasicBlock;>;
19 20 14 edst Lorg/jruby/ir/representations/BasicBlock;
24 27 9 e Lorg/jruby/dirgra/Edge<Lorg/jruby/ir/representations/BasicBlock;>;
25 27 11 destination Lorg/jruby/ir/representations/BasicBlock;
30 42 9 e Lorg/jruby/dirgra/Edge<Lorg/jruby/ir/representations/BasicBlock;>;
31 42 11 source Lorg/jruby/ir/representations/BasicBlock;
33 42 12 clonedSource Lorg/jruby/ir/representations/BasicBlock;
35 39 13 rescuerOfSplitBB Lorg/jruby/ir/representations/BasicBlock;
44 56 9 yieldBBrescuer Lorg/jruby/ir/representations/BasicBlock;
47 54 10 cb Lorg/jruby/ir/representations/BasicBlock;
49 54 12 cbProtector Lorg/jruby/ir/representations/BasicBlock;
MethodParameters:
Name Flags
ii
cl
yieldBB
yield
}
SourceFile: "CFGInliner.java"
InnerClasses:
public final EdgeType = org.jruby.ir.representations.CFG$EdgeType of org.jruby.ir.representations.CFG