public class org.jruby.ir.representations.BasicBlock implements org.jruby.dirgra.ExplicitVertexID, java.lang.Comparable
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: org.jruby.ir.representations.BasicBlock
super_class: java.lang.Object
{
private int id;
descriptor: I
flags: (0x0002) ACC_PRIVATE
private org.jruby.ir.representations.CFG cfg;
descriptor: Lorg/jruby/ir/representations/CFG;
flags: (0x0002) ACC_PRIVATE
private org.jruby.ir.operands.Label label;
descriptor: Lorg/jruby/ir/operands/Label;
flags: (0x0002) ACC_PRIVATE
private java.util.List<org.jruby.ir.instructions.Instr> instrs;
descriptor: Ljava/util/List;
flags: (0x0002) ACC_PRIVATE
Signature: Ljava/util/List<Lorg/jruby/ir/instructions/Instr;>;
private boolean isRescueEntry;
descriptor: Z
flags: (0x0002) ACC_PRIVATE
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/representations/BasicBlock;
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.representations.BasicBlock.$assertionsDisabled:Z
return
LocalVariableTable:
Start End Slot Name Signature
public void <init>(org.jruby.ir.representations.CFG, org.jruby.ir.operands.Label);
descriptor: (Lorg/jruby/ir/representations/CFG;Lorg/jruby/ir/operands/Label;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: aload 0
aload 2
putfield org.jruby.ir.representations.BasicBlock.label:Lorg/jruby/ir/operands/Label;
2: aload 0
aload 1
putfield org.jruby.ir.representations.BasicBlock.cfg:Lorg/jruby/ir/representations/CFG;
3: aload 0
aload 1
invokevirtual org.jruby.ir.representations.CFG.getNextBBID:()I
putfield org.jruby.ir.representations.BasicBlock.id:I
4: aload 0
iconst_0
putfield org.jruby.ir.representations.BasicBlock.isRescueEntry:Z
5: getstatic org.jruby.ir.representations.BasicBlock.$assertionsDisabled:Z
ifne 6
aload 2
ifnonnull 6
new java.lang.AssertionError
dup
ldc "label is null"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
6: StackMap locals: org.jruby.ir.representations.BasicBlock org.jruby.ir.representations.CFG org.jruby.ir.operands.Label
StackMap stack:
aload 0
invokevirtual org.jruby.ir.representations.BasicBlock.initInstrs:()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/representations/BasicBlock;
0 8 1 cfg Lorg/jruby/ir/representations/CFG;
0 8 2 label Lorg/jruby/ir/operands/Label;
MethodParameters:
Name Flags
cfg
label
private void initInstrs();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=6, locals=3, args_size=1
start local 0 0: aload 0
new java.util.ArrayList
dup
invokespecial java.util.ArrayList.<init>:()V
putfield org.jruby.ir.representations.BasicBlock.instrs:Ljava/util/List;
1: getstatic org.jruby.RubyInstanceConfig.IR_COMPILER_DEBUG:Z
ifne 2
getstatic org.jruby.RubyInstanceConfig.IR_DEBUG_IGV:Ljava/lang/String;
ifnull 6
2: StackMap locals:
StackMap stack:
aload 0
getfield org.jruby.ir.representations.BasicBlock.cfg:Lorg/jruby/ir/representations/CFG;
invokevirtual org.jruby.ir.representations.CFG.getManager:()Lorg/jruby/ir/IRManager;
astore 1
start local 1 3: aload 1
invokevirtual org.jruby.ir.IRManager.getInstructionsListener:()Lorg/jruby/ir/listeners/InstructionsListener;
astore 2
start local 2 4: aload 2
ifnull 6
5: aload 0
new org.jruby.ir.listeners.InstructionsListenerDecorator
dup
aload 0
aload 0
getfield org.jruby.ir.representations.BasicBlock.instrs:Ljava/util/List;
aload 2
invokespecial org.jruby.ir.listeners.InstructionsListenerDecorator.<init>:(Lorg/jruby/ir/representations/BasicBlock;Ljava/util/List;Lorg/jruby/ir/listeners/InstructionsListener;)V
putfield org.jruby.ir.representations.BasicBlock.instrs:Ljava/util/List;
end local 2 end local 1 6: StackMap locals:
StackMap stack:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 this Lorg/jruby/ir/representations/BasicBlock;
3 6 1 irManager Lorg/jruby/ir/IRManager;
4 6 2 listener Lorg/jruby/ir/listeners/InstructionsListener;
public int getID();
descriptor: ()I
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield org.jruby.ir.representations.BasicBlock.id:I
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/jruby/ir/representations/BasicBlock;
public org.jruby.ir.operands.Label getLabel();
descriptor: ()Lorg/jruby/ir/operands/Label;
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield org.jruby.ir.representations.BasicBlock.label:Lorg/jruby/ir/operands/Label;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/jruby/ir/representations/BasicBlock;
public int hashCode();
descriptor: ()I
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield org.jruby.ir.representations.BasicBlock.id:I
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/jruby/ir/representations/BasicBlock;
public boolean canRaiseExceptions();
descriptor: ()Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=3, args_size=1
start local 0 0: aload 0
invokevirtual org.jruby.ir.representations.BasicBlock.getInstrs:()Ljava/util/List;
invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
astore 2
goto 3
StackMap locals: org.jruby.ir.representations.BasicBlock top java.util.Iterator
StackMap stack:
1: aload 2
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.jruby.ir.instructions.Instr
astore 1
start local 1 2: aload 1
invokevirtual org.jruby.ir.instructions.Instr.canRaiseException:()Z
ifeq 3
iconst_1
ireturn
end local 1 3: StackMap locals:
StackMap stack:
aload 2
invokeinterface java.util.Iterator.hasNext:()Z
ifne 1
4: iconst_0
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lorg/jruby/ir/representations/BasicBlock;
2 3 1 i Lorg/jruby/ir/instructions/Instr;
public org.jruby.ir.representations.BasicBlock exceptionBB();
descriptor: ()Lorg/jruby/ir/representations/BasicBlock;
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
getfield org.jruby.ir.representations.BasicBlock.cfg:Lorg/jruby/ir/representations/CFG;
aload 0
invokevirtual org.jruby.ir.representations.CFG.getRescuerBBFor:(Lorg/jruby/ir/representations/BasicBlock;)Lorg/jruby/ir/representations/BasicBlock;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/jruby/ir/representations/BasicBlock;
public boolean isEntryBB();
descriptor: ()Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
getfield org.jruby.ir.representations.BasicBlock.cfg:Lorg/jruby/ir/representations/CFG;
invokevirtual org.jruby.ir.representations.CFG.getEntryBB:()Lorg/jruby/ir/representations/BasicBlock;
aload 0
if_acmpne 1
iconst_1
ireturn
StackMap locals:
StackMap stack:
1: iconst_0
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lorg/jruby/ir/representations/BasicBlock;
public boolean isExitBB();
descriptor: ()Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
getfield org.jruby.ir.representations.BasicBlock.cfg:Lorg/jruby/ir/representations/CFG;
invokevirtual org.jruby.ir.representations.CFG.getExitBB:()Lorg/jruby/ir/representations/BasicBlock;
aload 0
if_acmpne 1
iconst_1
ireturn
StackMap locals:
StackMap stack:
1: iconst_0
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lorg/jruby/ir/representations/BasicBlock;
public void markRescueEntryBB();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
iconst_1
putfield org.jruby.ir.representations.BasicBlock.isRescueEntry:Z
1: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lorg/jruby/ir/representations/BasicBlock;
public boolean isRescueEntry();
descriptor: ()Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield org.jruby.ir.representations.BasicBlock.isRescueEntry:Z
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/jruby/ir/representations/BasicBlock;
public void replaceInstrs(java.util.List<org.jruby.ir.instructions.Instr>);
descriptor: (Ljava/util/List;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
aload 1
putfield org.jruby.ir.representations.BasicBlock.instrs:Ljava/util/List;
1: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lorg/jruby/ir/representations/BasicBlock;
0 2 1 instrs Ljava/util/List<Lorg/jruby/ir/instructions/Instr;>;
Signature: (Ljava/util/List<Lorg/jruby/ir/instructions/Instr;>;)V
MethodParameters:
Name Flags
instrs
public void addInstr(org.jruby.ir.instructions.Instr);
descriptor: (Lorg/jruby/ir/instructions/Instr;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
getfield org.jruby.ir.representations.BasicBlock.instrs:Ljava/util/List;
aload 1
invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
pop
1: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lorg/jruby/ir/representations/BasicBlock;
0 2 1 i Lorg/jruby/ir/instructions/Instr;
MethodParameters:
Name Flags
i
public void insertInstr(org.jruby.ir.instructions.Instr);
descriptor: (Lorg/jruby/ir/instructions/Instr;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=2, args_size=2
start local 0 start local 1 0: aload 0
getfield org.jruby.ir.representations.BasicBlock.instrs:Ljava/util/List;
iconst_0
aload 1
invokeinterface java.util.List.add:(ILjava/lang/Object;)V
1: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lorg/jruby/ir/representations/BasicBlock;
0 2 1 i Lorg/jruby/ir/instructions/Instr;
MethodParameters:
Name Flags
i
public void insertInstr(int, org.jruby.ir.instructions.Instr);
descriptor: (ILorg/jruby/ir/instructions/Instr;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 0
getfield org.jruby.ir.representations.BasicBlock.instrs:Ljava/util/List;
iload 1
aload 2
invokeinterface java.util.List.add:(ILjava/lang/Object;)V
1: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lorg/jruby/ir/representations/BasicBlock;
0 2 1 index I
0 2 2 i Lorg/jruby/ir/instructions/Instr;
MethodParameters:
Name Flags
index
i
public java.util.List<org.jruby.ir.instructions.Instr> getInstrs();
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.representations.BasicBlock.instrs:Ljava/util/List;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/jruby/ir/representations/BasicBlock;
Signature: ()Ljava/util/List<Lorg/jruby/ir/instructions/Instr;>;
public org.jruby.ir.instructions.Instr getLastInstr();
descriptor: ()Lorg/jruby/ir/instructions/Instr;
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=2, args_size=1
start local 0 0: aload 0
getfield org.jruby.ir.representations.BasicBlock.instrs:Ljava/util/List;
invokeinterface java.util.List.size:()I
istore 1
start local 1 1: iload 1
ifne 2
aconst_null
goto 3
StackMap locals: int
StackMap stack:
2: aload 0
getfield org.jruby.ir.representations.BasicBlock.instrs:Ljava/util/List;
iload 1
iconst_1
isub
invokeinterface java.util.List.get:(I)Ljava/lang/Object;
checkcast org.jruby.ir.instructions.Instr
StackMap locals:
StackMap stack: org.jruby.ir.instructions.Instr
3: areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lorg/jruby/ir/representations/BasicBlock;
1 4 1 n I
public boolean removeInstr(org.jruby.ir.instructions.Instr);
descriptor: (Lorg/jruby/ir/instructions/Instr;)Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 1
ifnull 1
aload 0
getfield org.jruby.ir.representations.BasicBlock.instrs:Ljava/util/List;
aload 1
invokeinterface java.util.List.remove:(Ljava/lang/Object;)Z
ifeq 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/representations/BasicBlock;
0 2 1 i Lorg/jruby/ir/instructions/Instr;
MethodParameters:
Name Flags
i
public boolean isEmpty();
descriptor: ()Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield org.jruby.ir.representations.BasicBlock.instrs:Ljava/util/List;
invokeinterface java.util.List.isEmpty:()Z
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/jruby/ir/representations/BasicBlock;
public org.jruby.ir.instructions.Site siteOf(long);
descriptor: (J)Lorg/jruby/ir/instructions/Site;
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=5, args_size=2
start local 0 start local 1 0: aload 0
getfield org.jruby.ir.representations.BasicBlock.instrs:Ljava/util/List;
invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
astore 4
goto 3
StackMap locals: org.jruby.ir.representations.BasicBlock long top java.util.Iterator
StackMap stack:
1: aload 4
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.jruby.ir.instructions.Instr
astore 3
start local 3 2: aload 3
instanceof org.jruby.ir.instructions.Site
ifeq 3
aload 3
checkcast org.jruby.ir.instructions.Site
invokeinterface org.jruby.ir.instructions.Site.getCallSiteId:()J
lload 1
lcmp
ifne 3
aload 3
checkcast org.jruby.ir.instructions.Site
areturn
end local 3 3: StackMap locals:
StackMap stack:
aload 4
invokeinterface java.util.Iterator.hasNext:()Z
ifne 1
4: new java.lang.RuntimeException
dup
new java.lang.StringBuilder
dup
ldc "siteOf asked for non-existent callsiteId: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
lload 1
invokevirtual java.lang.StringBuilder.append:(J)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;)V
athrow
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lorg/jruby/ir/representations/BasicBlock;
0 5 1 callsiteId J
2 3 3 instr Lorg/jruby/ir/instructions/Instr;
MethodParameters:
Name Flags
callsiteId
public org.jruby.ir.representations.BasicBlock splitAtInstruction(org.jruby.ir.instructions.Site, org.jruby.ir.operands.Label, boolean);
descriptor: (Lorg/jruby/ir/instructions/Site;Lorg/jruby/ir/operands/Label;Z)Lorg/jruby/ir/representations/BasicBlock;
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=10, args_size=4
start local 0 start local 1 start local 2 start local 3 0: new org.jruby.ir.representations.BasicBlock
dup
aload 0
getfield org.jruby.ir.representations.BasicBlock.cfg:Lorg/jruby/ir/representations/CFG;
aload 2
invokespecial org.jruby.ir.representations.BasicBlock.<init>:(Lorg/jruby/ir/representations/CFG;Lorg/jruby/ir/operands/Label;)V
astore 4
start local 4 1: iconst_0
istore 5
start local 5 2: aload 0
getfield org.jruby.ir.representations.BasicBlock.instrs:Ljava/util/List;
invokeinterface java.util.List.size:()I
istore 6
start local 6 3: iconst_0
istore 7
start local 7 4: aload 0
getfield org.jruby.ir.representations.BasicBlock.instrs:Ljava/util/List;
invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
astore 9
goto 14
StackMap locals: org.jruby.ir.representations.BasicBlock org.jruby.ir.instructions.Site org.jruby.ir.operands.Label int org.jruby.ir.representations.BasicBlock int int int top java.util.Iterator
StackMap stack:
5: aload 9
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.jruby.ir.instructions.Instr
astore 8
start local 8 6: aload 8
instanceof org.jruby.ir.instructions.Site
ifeq 7
aload 8
checkcast org.jruby.ir.instructions.Site
invokeinterface org.jruby.ir.instructions.Site.getCallSiteId:()J
aload 1
invokeinterface org.jruby.ir.instructions.Site.getCallSiteId:()J
lcmp
ifne 7
iconst_1
istore 7
7: StackMap locals: org.jruby.ir.representations.BasicBlock org.jruby.ir.instructions.Site org.jruby.ir.operands.Label int org.jruby.ir.representations.BasicBlock int int int org.jruby.ir.instructions.Instr java.util.Iterator
StackMap stack:
iload 7
ifeq 13
8: iload 3
ifne 11
9: aload 8
instanceof org.jruby.ir.instructions.Site
ifeq 11
10: aload 8
checkcast org.jruby.ir.instructions.Site
invokeinterface org.jruby.ir.instructions.Site.getCallSiteId:()J
aload 1
invokeinterface org.jruby.ir.instructions.Site.getCallSiteId:()J
lcmp
ifeq 14
StackMap locals:
StackMap stack:
11: aload 4
aload 8
invokevirtual org.jruby.ir.representations.BasicBlock.addInstr:(Lorg/jruby/ir/instructions/Instr;)V
12: goto 14
13: StackMap locals:
StackMap stack:
iinc 5 1
end local 8 14: StackMap locals: org.jruby.ir.representations.BasicBlock org.jruby.ir.instructions.Site org.jruby.ir.operands.Label int org.jruby.ir.representations.BasicBlock int int int top java.util.Iterator
StackMap stack:
aload 9
invokeinterface java.util.Iterator.hasNext:()Z
ifne 5
15: iload 7
ifne 16
new java.lang.RuntimeException
dup
new java.lang.StringBuilder
dup
ldc "Cound not find split point: "
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;
invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;)V
athrow
16: StackMap locals: org.jruby.ir.representations.BasicBlock org.jruby.ir.instructions.Site org.jruby.ir.operands.Label int org.jruby.ir.representations.BasicBlock int int int
StackMap stack:
iconst_0
istore 8
start local 8 17: goto 20
18: StackMap locals: int
StackMap stack:
aload 0
getfield org.jruby.ir.representations.BasicBlock.instrs:Ljava/util/List;
iload 5
invokeinterface java.util.List.remove:(I)Ljava/lang/Object;
pop
19: iinc 8 1
StackMap locals:
StackMap stack:
20: iload 8
iload 6
iload 5
isub
if_icmplt 18
end local 8 21: aload 4
areturn
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 22 0 this Lorg/jruby/ir/representations/BasicBlock;
0 22 1 splitPoint Lorg/jruby/ir/instructions/Site;
0 22 2 newLabel Lorg/jruby/ir/operands/Label;
0 22 3 includeSplitPointInstr Z
1 22 4 newBB Lorg/jruby/ir/representations/BasicBlock;
2 22 5 idx I
3 22 6 numInstrs I
4 22 7 found Z
6 14 8 i Lorg/jruby/ir/instructions/Instr;
17 21 8 j I
MethodParameters:
Name Flags
splitPoint
newLabel
includeSplitPointInstr
public void swallowBB(org.jruby.ir.representations.BasicBlock);
descriptor: (Lorg/jruby/ir/representations/BasicBlock;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
getfield org.jruby.ir.representations.BasicBlock.instrs:Ljava/util/List;
aload 1
getfield org.jruby.ir.representations.BasicBlock.instrs:Ljava/util/List;
invokeinterface java.util.List.addAll:(Ljava/util/Collection;)Z
pop
1: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lorg/jruby/ir/representations/BasicBlock;
0 2 1 foodBB Lorg/jruby/ir/representations/BasicBlock;
MethodParameters:
Name Flags
foodBB
public org.jruby.ir.representations.BasicBlock clone(org.jruby.ir.transformations.inlining.CloneInfo, org.jruby.ir.representations.CFG);
descriptor: (Lorg/jruby/ir/transformations/inlining/CloneInfo;Lorg/jruby/ir/representations/CFG;)Lorg/jruby/ir/representations/BasicBlock;
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=8, args_size=3
start local 0 start local 1 start local 2 0: new org.jruby.ir.representations.BasicBlock
dup
aload 2
aload 1
aload 0
getfield org.jruby.ir.representations.BasicBlock.label:Lorg/jruby/ir/operands/Label;
invokevirtual org.jruby.ir.transformations.inlining.CloneInfo.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 3
start local 3 1: aload 1
instanceof org.jruby.ir.transformations.inlining.InlineCloneInfo
ifeq 2
aload 1
checkcast org.jruby.ir.transformations.inlining.InlineCloneInfo
invokevirtual org.jruby.ir.transformations.inlining.InlineCloneInfo.isClosure:()Z
ifeq 2
iconst_1
goto 3
StackMap locals: org.jruby.ir.representations.BasicBlock
StackMap stack:
2: iconst_0
StackMap locals:
StackMap stack: int
3: istore 4
start local 4 4: aload 0
getfield org.jruby.ir.representations.BasicBlock.instrs:Ljava/util/List;
invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
astore 6
goto 13
StackMap locals: org.jruby.ir.representations.BasicBlock org.jruby.ir.transformations.inlining.CloneInfo org.jruby.ir.representations.CFG org.jruby.ir.representations.BasicBlock int top java.util.Iterator
StackMap stack:
5: aload 6
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.jruby.ir.instructions.Instr
astore 5
start local 5 6: aload 5
aload 1
invokevirtual org.jruby.ir.instructions.Instr.clone:(Lorg/jruby/ir/transformations/inlining/CloneInfo;)Lorg/jruby/ir/instructions/Instr;
astore 7
start local 7 7: aload 5
instanceof org.jruby.ir.instructions.CallBase
ifeq 9
aload 5
checkcast org.jruby.ir.instructions.CallBase
invokevirtual org.jruby.ir.instructions.CallBase.inliningBlocked:()Z
ifeq 9
8: aload 7
checkcast org.jruby.ir.instructions.CallBase
invokevirtual org.jruby.ir.instructions.CallBase.blockInlining:()V
9: StackMap locals: org.jruby.ir.representations.BasicBlock org.jruby.ir.transformations.inlining.CloneInfo org.jruby.ir.representations.CFG org.jruby.ir.representations.BasicBlock int org.jruby.ir.instructions.Instr java.util.Iterator org.jruby.ir.instructions.Instr
StackMap stack:
aload 7
ifnull 13
10: aload 3
aload 7
invokevirtual org.jruby.ir.representations.BasicBlock.addInstr:(Lorg/jruby/ir/instructions/Instr;)V
11: iload 4
ifeq 13
aload 7
instanceof org.jruby.ir.instructions.YieldInstr
ifeq 13
12: aload 1
checkcast org.jruby.ir.transformations.inlining.InlineCloneInfo
aload 3
aload 7
checkcast org.jruby.ir.instructions.YieldInstr
invokevirtual org.jruby.ir.transformations.inlining.InlineCloneInfo.recordYieldSite:(Lorg/jruby/ir/representations/BasicBlock;Lorg/jruby/ir/instructions/YieldInstr;)V
end local 7 end local 5 13: StackMap locals: org.jruby.ir.representations.BasicBlock org.jruby.ir.transformations.inlining.CloneInfo org.jruby.ir.representations.CFG org.jruby.ir.representations.BasicBlock int top java.util.Iterator
StackMap stack:
aload 6
invokeinterface java.util.Iterator.hasNext:()Z
ifne 5
14: aload 3
areturn
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 15 0 this Lorg/jruby/ir/representations/BasicBlock;
0 15 1 info Lorg/jruby/ir/transformations/inlining/CloneInfo;
0 15 2 newCFG Lorg/jruby/ir/representations/CFG;
1 15 3 newBB Lorg/jruby/ir/representations/BasicBlock;
4 15 4 isClosureClone Z
6 13 5 instr Lorg/jruby/ir/instructions/Instr;
7 13 7 newInstr Lorg/jruby/ir/instructions/Instr;
MethodParameters:
Name Flags
info
newCFG
public void cloneInstrs(org.jruby.ir.transformations.inlining.SimpleCloneInfo);
descriptor: (Lorg/jruby/ir/transformations/inlining/SimpleCloneInfo;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=5, args_size=2
start local 0 start local 1 0: aload 0
invokevirtual org.jruby.ir.representations.BasicBlock.isEmpty:()Z
ifne 7
1: aload 0
getfield org.jruby.ir.representations.BasicBlock.instrs:Ljava/util/List;
astore 2
start local 2 2: aload 0
invokevirtual org.jruby.ir.representations.BasicBlock.initInstrs:()V
3: aload 2
invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
astore 4
goto 6
StackMap locals: org.jruby.ir.representations.BasicBlock org.jruby.ir.transformations.inlining.SimpleCloneInfo java.util.List top java.util.Iterator
StackMap stack:
4: aload 4
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.jruby.ir.instructions.Instr
astore 3
start local 3 5: aload 0
getfield org.jruby.ir.representations.BasicBlock.instrs:Ljava/util/List;
aload 3
aload 1
invokevirtual org.jruby.ir.instructions.Instr.clone:(Lorg/jruby/ir/transformations/inlining/CloneInfo;)Lorg/jruby/ir/instructions/Instr;
invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
pop
end local 3 6: StackMap locals:
StackMap stack:
aload 4
invokeinterface java.util.Iterator.hasNext:()Z
ifne 4
end local 2 7: StackMap locals: org.jruby.ir.representations.BasicBlock org.jruby.ir.transformations.inlining.SimpleCloneInfo
StackMap stack:
aload 0
aload 1
aload 0
getfield org.jruby.ir.representations.BasicBlock.label:Lorg/jruby/ir/operands/Label;
invokevirtual org.jruby.ir.transformations.inlining.SimpleCloneInfo.getRenamedLabel:(Lorg/jruby/ir/operands/Label;)Lorg/jruby/ir/operands/Label;
putfield org.jruby.ir.representations.BasicBlock.label:Lorg/jruby/ir/operands/Label;
8: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 9 0 this Lorg/jruby/ir/representations/BasicBlock;
0 9 1 ii Lorg/jruby/ir/transformations/inlining/SimpleCloneInfo;
2 7 2 oldInstrs Ljava/util/List<Lorg/jruby/ir/instructions/Instr;>;
5 6 3 i Lorg/jruby/ir/instructions/Instr;
MethodParameters:
Name Flags
ii
public org.jruby.ir.representations.BasicBlock cloneForInlining(org.jruby.ir.transformations.inlining.InlineCloneInfo);
descriptor: (Lorg/jruby/ir/transformations/inlining/InlineCloneInfo;)Lorg/jruby/ir/representations/BasicBlock;
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=6, args_size=2
start local 0 start local 1 0: aload 1
aload 0
invokevirtual org.jruby.ir.transformations.inlining.InlineCloneInfo.getOrCreateRenamedBB:(Lorg/jruby/ir/representations/BasicBlock;)Lorg/jruby/ir/representations/BasicBlock;
astore 2
start local 2 1: aload 0
invokevirtual org.jruby.ir.representations.BasicBlock.getInstrs:()Ljava/util/List;
invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
astore 4
goto 11
StackMap locals: org.jruby.ir.representations.BasicBlock org.jruby.ir.transformations.inlining.InlineCloneInfo 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.ir.instructions.Instr
astore 3
start local 3 3: aload 3
aload 1
invokevirtual org.jruby.ir.instructions.Instr.clone:(Lorg/jruby/ir/transformations/inlining/CloneInfo;)Lorg/jruby/ir/instructions/Instr;
astore 5
start local 5 4: aload 5
ifnull 11
5: aload 2
aload 5
invokevirtual org.jruby.ir.representations.BasicBlock.addInstr:(Lorg/jruby/ir/instructions/Instr;)V
6: aload 5
instanceof org.jruby.ir.instructions.YieldInstr
ifeq 9
7: aload 1
aload 2
aload 5
checkcast org.jruby.ir.instructions.YieldInstr
invokevirtual org.jruby.ir.transformations.inlining.InlineCloneInfo.recordYieldSite:(Lorg/jruby/ir/representations/BasicBlock;Lorg/jruby/ir/instructions/YieldInstr;)V
8: goto 11
StackMap locals: org.jruby.ir.representations.BasicBlock org.jruby.ir.transformations.inlining.InlineCloneInfo org.jruby.ir.representations.BasicBlock org.jruby.ir.instructions.Instr java.util.Iterator org.jruby.ir.instructions.Instr
StackMap stack:
9: aload 3
instanceof org.jruby.ir.instructions.NonlocalReturnInstr
ifeq 11
aload 5
instanceof org.jruby.ir.instructions.CopyInstr
ifeq 11
10: aload 2
new org.jruby.ir.instructions.JumpInstr
dup
aload 1
invokevirtual org.jruby.ir.transformations.inlining.InlineCloneInfo.getHostScope:()Lorg/jruby/ir/IRScope;
invokevirtual org.jruby.ir.IRScope.getFullInterpreterContext:()Lorg/jruby/ir/interpreter/FullInterpreterContext;
invokevirtual org.jruby.ir.interpreter.FullInterpreterContext.getCFG:()Lorg/jruby/ir/representations/CFG;
invokevirtual org.jruby.ir.representations.CFG.getExitBB:()Lorg/jruby/ir/representations/BasicBlock;
invokevirtual org.jruby.ir.representations.BasicBlock.getLabel:()Lorg/jruby/ir/operands/Label;
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 3 11: StackMap locals: org.jruby.ir.representations.BasicBlock org.jruby.ir.transformations.inlining.InlineCloneInfo org.jruby.ir.representations.BasicBlock top java.util.Iterator
StackMap stack:
aload 4
invokeinterface java.util.Iterator.hasNext:()Z
ifne 2
12: aload 2
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 13 0 this Lorg/jruby/ir/representations/BasicBlock;
0 13 1 ii Lorg/jruby/ir/transformations/inlining/InlineCloneInfo;
1 13 2 clonedBB Lorg/jruby/ir/representations/BasicBlock;
3 11 3 i Lorg/jruby/ir/instructions/Instr;
4 11 5 clonedInstr Lorg/jruby/ir/instructions/Instr;
MethodParameters:
Name Flags
ii
public int compareTo(java.lang.Object);
descriptor: (Ljava/lang/Object;)I
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=3, args_size=2
start local 0 start local 1 0: aload 1
checkcast org.jruby.ir.representations.BasicBlock
astore 2
start local 2 1: aload 0
getfield org.jruby.ir.representations.BasicBlock.id:I
aload 2
getfield org.jruby.ir.representations.BasicBlock.id:I
if_icmpne 2
iconst_0
ireturn
2: StackMap locals: org.jruby.ir.representations.BasicBlock
StackMap stack:
aload 0
getfield org.jruby.ir.representations.BasicBlock.id:I
aload 2
getfield org.jruby.ir.representations.BasicBlock.id:I
if_icmpge 3
iconst_m1
ireturn
3: StackMap locals:
StackMap stack:
iconst_1
ireturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lorg/jruby/ir/representations/BasicBlock;
0 4 1 o Ljava/lang/Object;
1 4 2 other Lorg/jruby/ir/representations/BasicBlock;
MethodParameters:
Name Flags
o
public java.lang.String toString();
descriptor: ()Ljava/lang/String;
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=1, args_size=1
start local 0 0: new java.lang.StringBuilder
dup
ldc "BB ["
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 0
getfield org.jruby.ir.representations.BasicBlock.id:I
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
bipush 58
invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
aload 0
getfield org.jruby.ir.representations.BasicBlock.label:Lorg/jruby/ir/operands/Label;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
bipush 93
invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/jruby/ir/representations/BasicBlock;
public java.lang.String toStringInstrs();
descriptor: ()Ljava/lang/String;
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=5, args_size=1
start local 0 0: new java.lang.StringBuilder
dup
aload 0
invokevirtual org.jruby.ir.representations.BasicBlock.toString:()Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
astore 1
start local 1 1: aload 0
getfield org.jruby.ir.representations.BasicBlock.cfg:Lorg/jruby/ir/representations/CFG;
aload 0
invokevirtual org.jruby.ir.representations.CFG.getOutgoingEdges:(Lorg/jruby/ir/representations/BasicBlock;)Ljava/util/Collection;
astore 2
start local 2 2: aload 2
invokeinterface java.util.Collection.isEmpty:()Z
ifne 7
3: aload 2
invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
astore 4
goto 6
StackMap locals: org.jruby.ir.representations.BasicBlock java.lang.StringBuilder java.util.Collection top java.util.Iterator
StackMap stack:
4: aload 4
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.jruby.dirgra.Edge
astore 3
start local 3 5: aload 1
new java.lang.StringBuilder
dup
ldc " -"
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 3
invokevirtual org.jruby.dirgra.Edge.getType:()Ljava/lang/Object;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
ldc "->"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 3
invokevirtual org.jruby.dirgra.Edge.getDestination:()Lorg/jruby/dirgra/Vertex;
invokevirtual org.jruby.dirgra.Vertex.getID:()I
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
pop
end local 3 6: StackMap locals:
StackMap stack:
aload 4
invokeinterface java.util.Iterator.hasNext:()Z
ifne 4
7: StackMap locals: org.jruby.ir.representations.BasicBlock java.lang.StringBuilder java.util.Collection
StackMap stack:
aload 1
bipush 10
invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
pop
8: aload 0
invokevirtual org.jruby.ir.representations.BasicBlock.getInstrs:()Ljava/util/List;
invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
astore 4
goto 11
StackMap locals: org.jruby.ir.representations.BasicBlock java.lang.StringBuilder java.util.Collection top java.util.Iterator
StackMap stack:
9: aload 4
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.jruby.ir.instructions.Instr
astore 3
start local 3 10: aload 1
bipush 9
invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
aload 3
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
bipush 10
invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
pop
end local 3 11: StackMap locals:
StackMap stack:
aload 4
invokeinterface java.util.Iterator.hasNext:()Z
ifne 9
12: aload 1
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 13 0 this Lorg/jruby/ir/representations/BasicBlock;
1 13 1 buf Ljava/lang/StringBuilder;
2 13 2 outs Ljava/util/Collection<Lorg/jruby/dirgra/Edge<Lorg/jruby/ir/representations/BasicBlock;>;>;
5 6 3 edge Lorg/jruby/dirgra/Edge<Lorg/jruby/ir/representations/BasicBlock;>;
10 11 3 instr Lorg/jruby/ir/instructions/Instr;
}
SourceFile: "BasicBlock.java"