public class org.jruby.ir.transformations.inlining.InlineCloneInfo extends org.jruby.ir.transformations.inlining.CloneInfo
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: org.jruby.ir.transformations.inlining.InlineCloneInfo
super_class: org.jruby.ir.transformations.inlining.CloneInfo
{
private static java.util.concurrent.atomic.AtomicInteger globalInlineCount;
descriptor: Ljava/util/concurrent/atomic/AtomicInteger;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
private org.jruby.ir.representations.CFG hostCFG;
descriptor: Lorg/jruby/ir/representations/CFG;
flags: (0x0002) ACC_PRIVATE
private org.jruby.util.ByteList inlineVarPrefix;
descriptor: Lorg/jruby/util/ByteList;
flags: (0x0002) ACC_PRIVATE
private org.jruby.ir.operands.Variable callReceiver;
descriptor: Lorg/jruby/ir/operands/Variable;
flags: (0x0002) ACC_PRIVATE
private org.jruby.ir.instructions.CallBase call;
descriptor: Lorg/jruby/ir/instructions/CallBase;
flags: (0x0002) ACC_PRIVATE
private org.jruby.ir.operands.Operand[] callArgs;
descriptor: [Lorg/jruby/ir/operands/Operand;
flags: (0x0002) ACC_PRIVATE
private org.jruby.ir.operands.Variable argsArray;
descriptor: Lorg/jruby/ir/operands/Variable;
flags: (0x0002) ACC_PRIVATE
private boolean canMapArgsStatically;
descriptor: Z
flags: (0x0002) ACC_PRIVATE
private java.util.Map<org.jruby.ir.representations.BasicBlock, org.jruby.ir.representations.BasicBlock> bbRenameMap;
descriptor: Ljava/util/Map;
flags: (0x0002) ACC_PRIVATE
Signature: Ljava/util/Map<Lorg/jruby/ir/representations/BasicBlock;Lorg/jruby/ir/representations/BasicBlock;>;
private boolean isClosure;
descriptor: Z
flags: (0x0002) ACC_PRIVATE
private org.jruby.ir.operands.Operand yieldArg;
descriptor: Lorg/jruby/ir/operands/Operand;
flags: (0x0002) ACC_PRIVATE
private org.jruby.ir.operands.Variable yieldResult;
descriptor: Lorg/jruby/ir/operands/Variable;
flags: (0x0002) ACC_PRIVATE
private java.util.List yieldSites;
descriptor: Ljava/util/List;
flags: (0x0002) ACC_PRIVATE
private org.jruby.ir.IRScope scopeBeingInlined;
descriptor: Lorg/jruby/ir/IRScope;
flags: (0x0002) ACC_PRIVATE
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=3, locals=0, args_size=0
0: new java.util.concurrent.atomic.AtomicInteger
dup
iconst_0
invokespecial java.util.concurrent.atomic.AtomicInteger.<init>:(I)V
putstatic org.jruby.ir.transformations.inlining.InlineCloneInfo.globalInlineCount:Ljava/util/concurrent/atomic/AtomicInteger;
return
LocalVariableTable:
Start End Slot Name Signature
public void <init>(org.jruby.ir.representations.CFG, org.jruby.ir.IRScope, org.jruby.ir.IRScope);
descriptor: (Lorg/jruby/ir/representations/CFG;Lorg/jruby/ir/IRScope;Lorg/jruby/ir/IRScope;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=4, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 0
aload 2
invokespecial org.jruby.ir.transformations.inlining.CloneInfo.<init>:(Lorg/jruby/ir/IRScope;)V
1: aload 0
new java.util.HashMap
dup
invokespecial java.util.HashMap.<init>:()V
putfield org.jruby.ir.transformations.inlining.InlineCloneInfo.bbRenameMap:Ljava/util/Map;
2: aload 0
new java.util.ArrayList
dup
invokespecial java.util.ArrayList.<init>:()V
putfield org.jruby.ir.transformations.inlining.InlineCloneInfo.yieldSites:Ljava/util/List;
3: aload 0
iconst_1
putfield org.jruby.ir.transformations.inlining.InlineCloneInfo.isClosure:Z
4: aload 0
aload 1
putfield org.jruby.ir.transformations.inlining.InlineCloneInfo.hostCFG:Lorg/jruby/ir/representations/CFG;
5: aload 0
aload 3
putfield org.jruby.ir.transformations.inlining.InlineCloneInfo.scopeBeingInlined:Lorg/jruby/ir/IRScope;
6: return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 this Lorg/jruby/ir/transformations/inlining/InlineCloneInfo;
0 7 1 cfg Lorg/jruby/ir/representations/CFG;
0 7 2 scope Lorg/jruby/ir/IRScope;
0 7 3 scopeBeingInlined Lorg/jruby/ir/IRScope;
MethodParameters:
Name Flags
cfg
scope
scopeBeingInlined
public void <init>(org.jruby.ir.instructions.CallBase, org.jruby.ir.representations.CFG, org.jruby.ir.operands.Variable, org.jruby.ir.IRScope);
descriptor: (Lorg/jruby/ir/instructions/CallBase;Lorg/jruby/ir/representations/CFG;Lorg/jruby/ir/operands/Variable;Lorg/jruby/ir/IRScope;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=6, locals=5, args_size=5
start local 0 start local 1 start local 2 start local 3 start local 4 0: aload 0
aload 2
invokevirtual org.jruby.ir.representations.CFG.getScope:()Lorg/jruby/ir/IRScope;
invokespecial org.jruby.ir.transformations.inlining.CloneInfo.<init>:(Lorg/jruby/ir/IRScope;)V
1: aload 0
new java.util.HashMap
dup
invokespecial java.util.HashMap.<init>:()V
putfield org.jruby.ir.transformations.inlining.InlineCloneInfo.bbRenameMap:Ljava/util/Map;
2: aload 0
new java.util.ArrayList
dup
invokespecial java.util.ArrayList.<init>:()V
putfield org.jruby.ir.transformations.inlining.InlineCloneInfo.yieldSites:Ljava/util/List;
3: aload 0
iconst_0
putfield org.jruby.ir.transformations.inlining.InlineCloneInfo.isClosure:Z
4: aload 0
aload 2
putfield org.jruby.ir.transformations.inlining.InlineCloneInfo.hostCFG:Lorg/jruby/ir/representations/CFG;
5: aload 0
aload 1
putfield org.jruby.ir.transformations.inlining.InlineCloneInfo.call:Lorg/jruby/ir/instructions/CallBase;
6: aload 0
aload 1
invokevirtual org.jruby.ir.instructions.CallBase.getCallArgs:()[Lorg/jruby/ir/operands/Operand;
putfield org.jruby.ir.transformations.inlining.InlineCloneInfo.callArgs:[Lorg/jruby/ir/operands/Operand;
7: aload 0
aload 3
putfield org.jruby.ir.transformations.inlining.InlineCloneInfo.callReceiver:Lorg/jruby/ir/operands/Variable;
8: aload 0
aload 0
getfield org.jruby.ir.transformations.inlining.InlineCloneInfo.callArgs:[Lorg/jruby/ir/operands/Operand;
invokestatic org.jruby.ir.transformations.inlining.InlineCloneInfo.containsSplat:([Lorg/jruby/ir/operands/Operand;)Z
ifeq 9
iconst_0
goto 10
StackMap locals: org.jruby.ir.transformations.inlining.InlineCloneInfo org.jruby.ir.instructions.CallBase org.jruby.ir.representations.CFG org.jruby.ir.operands.Variable org.jruby.ir.IRScope
StackMap stack: org.jruby.ir.transformations.inlining.InlineCloneInfo
9: iconst_1
StackMap locals: org.jruby.ir.transformations.inlining.InlineCloneInfo org.jruby.ir.instructions.CallBase org.jruby.ir.representations.CFG org.jruby.ir.operands.Variable org.jruby.ir.IRScope
StackMap stack: org.jruby.ir.transformations.inlining.InlineCloneInfo int
10: putfield org.jruby.ir.transformations.inlining.InlineCloneInfo.canMapArgsStatically:Z
11: aload 0
aload 0
getfield org.jruby.ir.transformations.inlining.InlineCloneInfo.canMapArgsStatically:Z
ifeq 12
aconst_null
goto 13
StackMap locals:
StackMap stack: org.jruby.ir.transformations.inlining.InlineCloneInfo
12: aload 0
invokevirtual org.jruby.ir.transformations.inlining.InlineCloneInfo.getHostScope:()Lorg/jruby/ir/IRScope;
invokevirtual org.jruby.ir.IRScope.createTemporaryVariable:()Lorg/jruby/ir/operands/TemporaryLocalVariable;
StackMap locals: org.jruby.ir.transformations.inlining.InlineCloneInfo org.jruby.ir.instructions.CallBase org.jruby.ir.representations.CFG org.jruby.ir.operands.Variable org.jruby.ir.IRScope
StackMap stack: org.jruby.ir.transformations.inlining.InlineCloneInfo org.jruby.ir.operands.TemporaryLocalVariable
13: putfield org.jruby.ir.transformations.inlining.InlineCloneInfo.argsArray:Lorg/jruby/ir/operands/Variable;
14: aload 0
aload 4
putfield org.jruby.ir.transformations.inlining.InlineCloneInfo.scopeBeingInlined:Lorg/jruby/ir/IRScope;
15: aload 0
new org.jruby.util.ByteList
dup
new java.lang.StringBuilder
dup
ldc "%in"
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
getstatic org.jruby.ir.transformations.inlining.InlineCloneInfo.globalInlineCount:Ljava/util/concurrent/atomic/AtomicInteger;
invokevirtual java.util.concurrent.atomic.AtomicInteger.getAndIncrement:()I
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
ldc "_"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokevirtual java.lang.String.getBytes:()[B
invokespecial org.jruby.util.ByteList.<init>:([B)V
putfield org.jruby.ir.transformations.inlining.InlineCloneInfo.inlineVarPrefix:Lorg/jruby/util/ByteList;
16: return
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 17 0 this Lorg/jruby/ir/transformations/inlining/InlineCloneInfo;
0 17 1 call Lorg/jruby/ir/instructions/CallBase;
0 17 2 c Lorg/jruby/ir/representations/CFG;
0 17 3 callReceiver Lorg/jruby/ir/operands/Variable;
0 17 4 scopeBeingInlined Lorg/jruby/ir/IRScope;
MethodParameters:
Name Flags
call
c
callReceiver
scopeBeingInlined
public boolean isClosure();
descriptor: ()Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield org.jruby.ir.transformations.inlining.InlineCloneInfo.isClosure:Z
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/jruby/ir/transformations/inlining/InlineCloneInfo;
public org.jruby.ir.transformations.inlining.InlineCloneInfo cloneForInliningClosure(org.jruby.ir.IRScope);
descriptor: (Lorg/jruby/ir/IRScope;)Lorg/jruby/ir/transformations/inlining/InlineCloneInfo;
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=3, args_size=2
start local 0 start local 1 0: new org.jruby.ir.transformations.inlining.InlineCloneInfo
dup
aload 0
getfield org.jruby.ir.transformations.inlining.InlineCloneInfo.hostCFG:Lorg/jruby/ir/representations/CFG;
aload 0
getfield org.jruby.ir.transformations.inlining.InlineCloneInfo.hostCFG:Lorg/jruby/ir/representations/CFG;
invokevirtual org.jruby.ir.representations.CFG.getScope:()Lorg/jruby/ir/IRScope;
aload 1
invokespecial org.jruby.ir.transformations.inlining.InlineCloneInfo.<init>:(Lorg/jruby/ir/representations/CFG;Lorg/jruby/ir/IRScope;Lorg/jruby/ir/IRScope;)V
astore 2
start local 2 1: aload 2
aload 0
getfield org.jruby.ir.transformations.inlining.InlineCloneInfo.call:Lorg/jruby/ir/instructions/CallBase;
putfield org.jruby.ir.transformations.inlining.InlineCloneInfo.call:Lorg/jruby/ir/instructions/CallBase;
2: aload 2
aload 0
getfield org.jruby.ir.transformations.inlining.InlineCloneInfo.callArgs:[Lorg/jruby/ir/operands/Operand;
putfield org.jruby.ir.transformations.inlining.InlineCloneInfo.callArgs:[Lorg/jruby/ir/operands/Operand;
3: aload 2
aload 0
getfield org.jruby.ir.transformations.inlining.InlineCloneInfo.callReceiver:Lorg/jruby/ir/operands/Variable;
putfield org.jruby.ir.transformations.inlining.InlineCloneInfo.callReceiver:Lorg/jruby/ir/operands/Variable;
4: aload 2
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lorg/jruby/ir/transformations/inlining/InlineCloneInfo;
0 5 1 scopeBeingInlined Lorg/jruby/ir/IRScope;
1 5 2 clone Lorg/jruby/ir/transformations/inlining/InlineCloneInfo;
MethodParameters:
Name Flags
scopeBeingInlined
public org.jruby.ir.operands.Operand getArg(int);
descriptor: (I)Lorg/jruby/ir/operands/Operand;
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
getfield org.jruby.ir.transformations.inlining.InlineCloneInfo.canMapArgsStatically:Z
ifeq 1
aload 0
getfield org.jruby.ir.transformations.inlining.InlineCloneInfo.isClosure:Z
ifeq 1
aload 0
getfield org.jruby.ir.transformations.inlining.InlineCloneInfo.yieldArg:Lorg/jruby/ir/operands/Operand;
instanceof org.jruby.ir.operands.Array
ifne 1
aload 0
getfield org.jruby.ir.transformations.inlining.InlineCloneInfo.yieldArg:Lorg/jruby/ir/operands/Operand;
areturn
1: StackMap locals:
StackMap stack:
iload 1
aload 0
invokevirtual org.jruby.ir.transformations.inlining.InlineCloneInfo.getArgsCount:()I
if_icmpge 3
aload 0
getfield org.jruby.ir.transformations.inlining.InlineCloneInfo.isClosure:Z
ifeq 2
aload 0
getfield org.jruby.ir.transformations.inlining.InlineCloneInfo.yieldArg:Lorg/jruby/ir/operands/Operand;
checkcast org.jruby.ir.operands.Array
iload 1
invokevirtual org.jruby.ir.operands.Array.get:(I)Lorg/jruby/ir/operands/Operand;
goto 4
StackMap locals:
StackMap stack:
2: aload 0
getfield org.jruby.ir.transformations.inlining.InlineCloneInfo.callArgs:[Lorg/jruby/ir/operands/Operand;
iload 1
aaload
goto 4
StackMap locals:
StackMap stack:
3: aconst_null
StackMap locals:
StackMap stack: org.jruby.ir.operands.Operand
4: areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lorg/jruby/ir/transformations/inlining/InlineCloneInfo;
0 5 1 index I
MethodParameters:
Name Flags
index
public org.jruby.ir.operands.Operand getArg(int, boolean);
descriptor: (IZ)Lorg/jruby/ir/operands/Operand;
flags: (0x0001) ACC_PUBLIC
Code:
stack=6, locals=4, args_size=3
start local 0 start local 1 start local 2 0: iload 2
ifne 1
aload 0
iload 1
invokevirtual org.jruby.ir.transformations.inlining.InlineCloneInfo.getArg:(I)Lorg/jruby/ir/operands/Operand;
areturn
1: StackMap locals:
StackMap stack:
aload 0
getfield org.jruby.ir.transformations.inlining.InlineCloneInfo.isClosure:Z
ifeq 2
new java.lang.RuntimeException
dup
ldc "Cannot get rest yield arg at inline time!"
invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;)V
athrow
2: StackMap locals:
StackMap stack:
iload 1
aload 0
getfield org.jruby.ir.transformations.inlining.InlineCloneInfo.callArgs:[Lorg/jruby/ir/operands/Operand;
arraylength
if_icmplt 3
new org.jruby.ir.operands.Array
dup
invokespecial org.jruby.ir.operands.Array.<init>:()V
areturn
3: StackMap locals:
StackMap stack:
aload 0
getfield org.jruby.ir.transformations.inlining.InlineCloneInfo.callArgs:[Lorg/jruby/ir/operands/Operand;
arraylength
iload 1
isub
anewarray org.jruby.ir.operands.Operand
astore 3
start local 3 4: aload 0
getfield org.jruby.ir.transformations.inlining.InlineCloneInfo.callArgs:[Lorg/jruby/ir/operands/Operand;
iload 1
aload 3
iconst_0
aload 0
getfield org.jruby.ir.transformations.inlining.InlineCloneInfo.callArgs:[Lorg/jruby/ir/operands/Operand;
arraylength
iload 1
isub
invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
5: new org.jruby.ir.operands.Array
dup
aload 3
invokespecial org.jruby.ir.operands.Array.<init>:([Lorg/jruby/ir/operands/Operand;)V
areturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Lorg/jruby/ir/transformations/inlining/InlineCloneInfo;
0 6 1 argIndex I
0 6 2 restOfArgArray Z
4 6 3 tmp [Lorg/jruby/ir/operands/Operand;
MethodParameters:
Name Flags
argIndex
restOfArgArray
public boolean canMapArgsStatically();
descriptor: ()Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield org.jruby.ir.transformations.inlining.InlineCloneInfo.canMapArgsStatically:Z
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/jruby/ir/transformations/inlining/InlineCloneInfo;
public org.jruby.ir.operands.Operand getArgs();
descriptor: ()Lorg/jruby/ir/operands/Operand;
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield org.jruby.ir.transformations.inlining.InlineCloneInfo.isClosure:Z
ifeq 1
aload 0
getfield org.jruby.ir.transformations.inlining.InlineCloneInfo.yieldArg:Lorg/jruby/ir/operands/Operand;
goto 2
StackMap locals:
StackMap stack:
1: aload 0
getfield org.jruby.ir.transformations.inlining.InlineCloneInfo.argsArray:Lorg/jruby/ir/operands/Variable;
StackMap locals:
StackMap stack: org.jruby.ir.operands.Operand
2: areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lorg/jruby/ir/transformations/inlining/InlineCloneInfo;
public org.jruby.ir.representations.BasicBlock getRenamedBB(org.jruby.ir.representations.BasicBlock);
descriptor: (Lorg/jruby/ir/representations/BasicBlock;)Lorg/jruby/ir/representations/BasicBlock;
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
getfield org.jruby.ir.transformations.inlining.InlineCloneInfo.bbRenameMap:Ljava/util/Map;
aload 1
invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast org.jruby.ir.representations.BasicBlock
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/jruby/ir/transformations/inlining/InlineCloneInfo;
0 1 1 bb Lorg/jruby/ir/representations/BasicBlock;
MethodParameters:
Name Flags
bb
public int getArgsCount();
descriptor: ()I
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield org.jruby.ir.transformations.inlining.InlineCloneInfo.canMapArgsStatically:Z
ifeq 2
aload 0
getfield org.jruby.ir.transformations.inlining.InlineCloneInfo.isClosure:Z
ifeq 1
aload 0
getfield org.jruby.ir.transformations.inlining.InlineCloneInfo.yieldArg:Lorg/jruby/ir/operands/Operand;
checkcast org.jruby.ir.operands.Array
invokevirtual org.jruby.ir.operands.Array.size:()I
goto 3
StackMap locals:
StackMap stack:
1: aload 0
getfield org.jruby.ir.transformations.inlining.InlineCloneInfo.callArgs:[Lorg/jruby/ir/operands/Operand;
arraylength
goto 3
StackMap locals:
StackMap stack:
2: iconst_m1
StackMap locals:
StackMap stack: int
3: ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lorg/jruby/ir/transformations/inlining/InlineCloneInfo;
public org.jruby.ir.operands.Operand getCallClosure();
descriptor: ()Lorg/jruby/ir/operands/Operand;
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
getfield org.jruby.ir.transformations.inlining.InlineCloneInfo.call:Lorg/jruby/ir/instructions/CallBase;
aload 0
getfield org.jruby.ir.transformations.inlining.InlineCloneInfo.scope:Lorg/jruby/ir/IRScope;
invokevirtual org.jruby.ir.IRScope.getManager:()Lorg/jruby/ir/IRManager;
invokevirtual org.jruby.ir.IRManager.getNil:()Lorg/jruby/ir/operands/Nil;
invokevirtual org.jruby.ir.instructions.CallBase.getClosureArg:(Lorg/jruby/ir/operands/Operand;)Lorg/jruby/ir/operands/Operand;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/jruby/ir/transformations/inlining/InlineCloneInfo;
public org.jruby.ir.operands.Variable getCallResultVariable();
descriptor: ()Lorg/jruby/ir/operands/Variable;
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield org.jruby.ir.transformations.inlining.InlineCloneInfo.call:Lorg/jruby/ir/instructions/CallBase;
instanceof org.jruby.ir.instructions.ResultInstr
ifeq 1
aload 0
getfield org.jruby.ir.transformations.inlining.InlineCloneInfo.call:Lorg/jruby/ir/instructions/CallBase;
checkcast org.jruby.ir.instructions.ResultInstr
invokeinterface org.jruby.ir.instructions.ResultInstr.getResult:()Lorg/jruby/ir/operands/Variable;
goto 2
StackMap locals:
StackMap stack:
1: aconst_null
StackMap locals:
StackMap stack: org.jruby.ir.operands.Variable
2: areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lorg/jruby/ir/transformations/inlining/InlineCloneInfo;
public org.jruby.ir.representations.BasicBlock getOrCreateRenamedBB(org.jruby.ir.representations.BasicBlock);
descriptor: (Lorg/jruby/ir/representations/BasicBlock;)Lorg/jruby/ir/representations/BasicBlock;
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=3, args_size=2
start local 0 start local 1 0: aload 0
aload 1
invokevirtual org.jruby.ir.transformations.inlining.InlineCloneInfo.getRenamedBB:(Lorg/jruby/ir/representations/BasicBlock;)Lorg/jruby/ir/representations/BasicBlock;
astore 2
start local 2 1: aload 2
ifnonnull 5
2: new org.jruby.ir.representations.BasicBlock
dup
aload 0
getfield org.jruby.ir.transformations.inlining.InlineCloneInfo.hostCFG:Lorg/jruby/ir/representations/CFG;
aload 0
aload 1
invokevirtual org.jruby.ir.representations.BasicBlock.getLabel:()Lorg/jruby/ir/operands/Label;
invokevirtual org.jruby.ir.transformations.inlining.InlineCloneInfo.getRenamedLabel:(Lorg/jruby/ir/operands/Label;)Lorg/jruby/ir/operands/Label;
invokespecial org.jruby.ir.representations.BasicBlock.<init>:(Lorg/jruby/ir/representations/CFG;Lorg/jruby/ir/operands/Label;)V
astore 2
3: aload 1
invokevirtual org.jruby.ir.representations.BasicBlock.isRescueEntry:()Z
ifeq 4
aload 2
invokevirtual org.jruby.ir.representations.BasicBlock.markRescueEntryBB:()V
4: StackMap locals: org.jruby.ir.representations.BasicBlock
StackMap stack:
aload 0
getfield org.jruby.ir.transformations.inlining.InlineCloneInfo.bbRenameMap:Ljava/util/Map;
aload 1
aload 2
invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
5: StackMap locals:
StackMap stack:
aload 2
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Lorg/jruby/ir/transformations/inlining/InlineCloneInfo;
0 6 1 bb Lorg/jruby/ir/representations/BasicBlock;
1 6 2 renamedBB Lorg/jruby/ir/representations/BasicBlock;
MethodParameters:
Name Flags
bb
public org.jruby.ir.IRScope getHostScope();
descriptor: ()Lorg/jruby/ir/IRScope;
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
invokevirtual org.jruby.ir.transformations.inlining.InlineCloneInfo.getScope:()Lorg/jruby/ir/IRScope;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/jruby/ir/transformations/inlining/InlineCloneInfo;
protected org.jruby.ir.operands.Label getRenamedLabelSimple(org.jruby.ir.operands.Label);
descriptor: (Lorg/jruby/ir/operands/Label;)Lorg/jruby/ir/operands/Label;
flags: (0x0004) ACC_PROTECTED
Code:
stack=1, locals=2, args_size=2
start local 0 start local 1 0: aload 0
invokevirtual org.jruby.ir.transformations.inlining.InlineCloneInfo.getHostScope:()Lorg/jruby/ir/IRScope;
invokevirtual org.jruby.ir.IRScope.getNewLabel:()Lorg/jruby/ir/operands/Label;
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/jruby/ir/transformations/inlining/InlineCloneInfo;
0 1 1 l Lorg/jruby/ir/operands/Label;
MethodParameters:
Name Flags
l
public org.jruby.ir.operands.Variable getRenamedSelfVariable(org.jruby.ir.operands.Variable);
descriptor: (Lorg/jruby/ir/operands/Variable;)Lorg/jruby/ir/operands/Variable;
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
getfield org.jruby.ir.transformations.inlining.InlineCloneInfo.isClosure:Z
ifeq 4
1: aload 0
invokevirtual org.jruby.ir.transformations.inlining.InlineCloneInfo.getScopeBeingInlined:()Lorg/jruby/ir/IRScope;
invokevirtual org.jruby.ir.IRScope.getNearestTopLocalVariableScope:()Lorg/jruby/ir/IRScope;
aload 0
invokevirtual org.jruby.ir.transformations.inlining.InlineCloneInfo.getHostScope:()Lorg/jruby/ir/IRScope;
if_acmpne 3
2: aload 1
areturn
3: StackMap locals:
StackMap stack:
aload 0
getfield org.jruby.ir.transformations.inlining.InlineCloneInfo.callReceiver:Lorg/jruby/ir/operands/Variable;
areturn
4: StackMap locals:
StackMap stack:
aload 0
getfield org.jruby.ir.transformations.inlining.InlineCloneInfo.callReceiver:Lorg/jruby/ir/operands/Variable;
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lorg/jruby/ir/transformations/inlining/InlineCloneInfo;
0 5 1 self Lorg/jruby/ir/operands/Variable;
MethodParameters:
Name Flags
self
protected org.jruby.ir.operands.Variable getRenamedVariableSimple(org.jruby.ir.operands.Variable);
descriptor: (Lorg/jruby/ir/operands/Variable;)Lorg/jruby/ir/operands/Variable;
flags: (0x0004) ACC_PROTECTED
Code:
stack=4, locals=4, args_size=2
start local 0 start local 1 0: aload 0
getfield org.jruby.ir.transformations.inlining.InlineCloneInfo.isClosure:Z
ifeq 8
1: aload 1
instanceof org.jruby.ir.operands.LocalVariable
ifeq 7
2: aload 1
checkcast org.jruby.ir.operands.LocalVariable
astore 2
start local 2 3: aload 2
invokevirtual org.jruby.ir.operands.LocalVariable.getScopeDepth:()I
istore 3
start local 3 4: aload 0
invokevirtual org.jruby.ir.transformations.inlining.InlineCloneInfo.getHostScope:()Lorg/jruby/ir/IRScope;
aload 2
invokevirtual org.jruby.ir.operands.LocalVariable.getName:()Lorg/jruby/RubySymbol;
iload 3
iconst_1
if_icmple 5
iload 3
iconst_1
isub
goto 6
StackMap locals: org.jruby.ir.transformations.inlining.InlineCloneInfo org.jruby.ir.operands.Variable org.jruby.ir.operands.LocalVariable int
StackMap stack: org.jruby.ir.IRScope org.jruby.RubySymbol
5: iconst_0
StackMap locals: org.jruby.ir.transformations.inlining.InlineCloneInfo org.jruby.ir.operands.Variable org.jruby.ir.operands.LocalVariable int
StackMap stack: org.jruby.ir.IRScope org.jruby.RubySymbol int
6: invokevirtual org.jruby.ir.IRScope.getLocalVariable:(Lorg/jruby/RubySymbol;I)Lorg/jruby/ir/operands/LocalVariable;
areturn
end local 3 end local 2 7: StackMap locals:
StackMap stack:
aload 0
invokevirtual org.jruby.ir.transformations.inlining.InlineCloneInfo.getHostScope:()Lorg/jruby/ir/IRScope;
invokevirtual org.jruby.ir.IRScope.createTemporaryVariable:()Lorg/jruby/ir/operands/TemporaryLocalVariable;
areturn
8: StackMap locals:
StackMap stack:
aload 0
invokevirtual org.jruby.ir.transformations.inlining.InlineCloneInfo.getHostScope:()Lorg/jruby/ir/IRScope;
aload 0
getfield org.jruby.ir.transformations.inlining.InlineCloneInfo.inlineVarPrefix:Lorg/jruby/util/ByteList;
aload 1
invokevirtual org.jruby.ir.IRScope.getNewInlineVariable:(Lorg/jruby/util/ByteList;Lorg/jruby/ir/operands/Variable;)Lorg/jruby/ir/operands/Variable;
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 9 0 this Lorg/jruby/ir/transformations/inlining/InlineCloneInfo;
0 9 1 v Lorg/jruby/ir/operands/Variable;
3 7 2 lv Lorg/jruby/ir/operands/LocalVariable;
4 7 3 depth I
MethodParameters:
Name Flags
v
public org.jruby.ir.IRScope getScopeBeingInlined();
descriptor: ()Lorg/jruby/ir/IRScope;
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield org.jruby.ir.transformations.inlining.InlineCloneInfo.scopeBeingInlined:Lorg/jruby/ir/IRScope;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/jruby/ir/transformations/inlining/InlineCloneInfo;
public org.jruby.ir.operands.Variable getYieldResult();
descriptor: ()Lorg/jruby/ir/operands/Variable;
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield org.jruby.ir.transformations.inlining.InlineCloneInfo.yieldResult:Lorg/jruby/ir/operands/Variable;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/jruby/ir/transformations/inlining/InlineCloneInfo;
public java.util.List getYieldSites();
descriptor: ()Ljava/util/List;
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield org.jruby.ir.transformations.inlining.InlineCloneInfo.yieldSites:Ljava/util/List;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/jruby/ir/transformations/inlining/InlineCloneInfo;
public void recordYieldSite(org.jruby.ir.representations.BasicBlock, org.jruby.ir.instructions.YieldInstr);
descriptor: (Lorg/jruby/ir/representations/BasicBlock;Lorg/jruby/ir/instructions/YieldInstr;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 0
getfield org.jruby.ir.transformations.inlining.InlineCloneInfo.yieldSites:Ljava/util/List;
new org.jruby.ir.Tuple
dup
aload 1
aload 2
invokespecial org.jruby.ir.Tuple.<init>:(Ljava/lang/Object;Ljava/lang/Object;)V
invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
pop
1: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lorg/jruby/ir/transformations/inlining/InlineCloneInfo;
0 2 1 bb Lorg/jruby/ir/representations/BasicBlock;
0 2 2 i Lorg/jruby/ir/instructions/YieldInstr;
MethodParameters:
Name Flags
bb
i
public void setupYieldArgsAndYieldResult(org.jruby.ir.instructions.YieldInstr, org.jruby.ir.representations.BasicBlock, int);
descriptor: (Lorg/jruby/ir/instructions/YieldInstr;Lorg/jruby/ir/representations/BasicBlock;I)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=7, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 1
invokevirtual org.jruby.ir.instructions.YieldInstr.getYieldArg:()Lorg/jruby/ir/operands/Operand;
astore 4
start local 4 1: aload 4
getstatic org.jruby.ir.operands.UndefinedValue.UNDEFINED:Lorg/jruby/ir/operands/UndefinedValue;
if_acmpeq 2
iload 3
ifne 4
2: StackMap locals: org.jruby.ir.operands.Operand
StackMap stack:
aload 0
new org.jruby.ir.operands.Array
dup
invokespecial org.jruby.ir.operands.Array.<init>:()V
putfield org.jruby.ir.transformations.inlining.InlineCloneInfo.yieldArg:Lorg/jruby/ir/operands/Operand;
3: goto 16
StackMap locals:
StackMap stack:
4: aload 4
instanceof org.jruby.ir.operands.Array
ifeq 8
5: aload 0
aload 4
putfield org.jruby.ir.transformations.inlining.InlineCloneInfo.yieldArg:Lorg/jruby/ir/operands/Operand;
6: aload 4
checkcast org.jruby.ir.operands.Array
invokevirtual org.jruby.ir.operands.Array.size:()I
iload 3
if_icmpne 16
aload 0
iconst_1
putfield org.jruby.ir.transformations.inlining.InlineCloneInfo.canMapArgsStatically:Z
7: goto 16
StackMap locals:
StackMap stack:
8: iload 3
iconst_1
if_icmpne 12
aload 1
getfield org.jruby.ir.instructions.YieldInstr.unwrapArray:Z
ifne 12
9: aload 0
aload 4
putfield org.jruby.ir.transformations.inlining.InlineCloneInfo.yieldArg:Lorg/jruby/ir/operands/Operand;
10: aload 0
iconst_1
putfield org.jruby.ir.transformations.inlining.InlineCloneInfo.canMapArgsStatically:Z
11: goto 16
12: StackMap locals:
StackMap stack:
aload 0
invokevirtual org.jruby.ir.transformations.inlining.InlineCloneInfo.getHostScope:()Lorg/jruby/ir/IRScope;
astore 5
start local 5 13: aload 5
invokevirtual org.jruby.ir.IRScope.createTemporaryVariable:()Lorg/jruby/ir/operands/TemporaryLocalVariable;
astore 6
start local 6 14: aload 2
new org.jruby.ir.instructions.ToAryInstr
dup
aload 6
aload 4
invokespecial org.jruby.ir.instructions.ToAryInstr.<init>:(Lorg/jruby/ir/operands/Variable;Lorg/jruby/ir/operands/Operand;)V
invokevirtual org.jruby.ir.representations.BasicBlock.addInstr:(Lorg/jruby/ir/instructions/Instr;)V
15: aload 0
aload 6
putfield org.jruby.ir.transformations.inlining.InlineCloneInfo.yieldArg:Lorg/jruby/ir/operands/Operand;
end local 6 end local 5 16: StackMap locals:
StackMap stack:
aload 0
aload 1
invokevirtual org.jruby.ir.instructions.YieldInstr.getResult:()Lorg/jruby/ir/operands/Variable;
putfield org.jruby.ir.transformations.inlining.InlineCloneInfo.yieldResult:Lorg/jruby/ir/operands/Variable;
17: return
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 18 0 this Lorg/jruby/ir/transformations/inlining/InlineCloneInfo;
0 18 1 yi Lorg/jruby/ir/instructions/YieldInstr;
0 18 2 yieldBB Lorg/jruby/ir/representations/BasicBlock;
0 18 3 blockArityValue I
1 18 4 yieldInstrArg Lorg/jruby/ir/operands/Operand;
13 16 5 callerScope Lorg/jruby/ir/IRScope;
14 16 6 yieldArgArray Lorg/jruby/ir/operands/Variable;
MethodParameters:
Name Flags
yi
yieldBB
blockArityValue
private static boolean containsSplat(org.jruby.ir.operands.Operand[]);
descriptor: ([Lorg/jruby/ir/operands/Operand;)Z
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=2, locals=2, args_size=1
start local 0 0: iconst_0
istore 1
start local 1 1: goto 4
2: StackMap locals: int
StackMap stack:
aload 0
iload 1
aaload
instanceof org.jruby.ir.operands.Splat
ifeq 3
iconst_1
ireturn
3: StackMap locals:
StackMap stack:
iinc 1 1
StackMap locals:
StackMap stack:
4: iload 1
aload 0
arraylength
if_icmplt 2
end local 1 5: iconst_0
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 args [Lorg/jruby/ir/operands/Operand;
1 5 1 i I
MethodParameters:
Name Flags
args
}
SourceFile: "InlineCloneInfo.java"