public class org.jruby.ir.representations.CFG
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: org.jruby.ir.representations.CFG
super_class: java.lang.Object
{
private static final org.jruby.util.log.Logger LOG;
descriptor: Lorg/jruby/util/log/Logger;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private org.jruby.ir.IRScope scope;
descriptor: Lorg/jruby/ir/IRScope;
flags: (0x0002) ACC_PRIVATE
private java.util.Map<org.jruby.ir.operands.Label, org.jruby.ir.representations.BasicBlock> bbMap;
descriptor: Ljava/util/Map;
flags: (0x0002) ACC_PRIVATE
Signature: Ljava/util/Map<Lorg/jruby/ir/operands/Label;Lorg/jruby/ir/representations/BasicBlock;>;
private java.util.Map<org.jruby.ir.representations.BasicBlock, org.jruby.ir.representations.BasicBlock> rescuerMap;
descriptor: Ljava/util/Map;
flags: (0x0002) ACC_PRIVATE
Signature: Ljava/util/Map<Lorg/jruby/ir/representations/BasicBlock;Lorg/jruby/ir/representations/BasicBlock;>;
private org.jruby.ir.representations.BasicBlock entryBB;
descriptor: Lorg/jruby/ir/representations/BasicBlock;
flags: (0x0002) ACC_PRIVATE
private org.jruby.ir.representations.BasicBlock exitBB;
descriptor: Lorg/jruby/ir/representations/BasicBlock;
flags: (0x0002) ACC_PRIVATE
private org.jruby.ir.representations.BasicBlock globalEnsureBB;
descriptor: Lorg/jruby/ir/representations/BasicBlock;
flags: (0x0002) ACC_PRIVATE
private org.jruby.dirgra.DirectedGraph<org.jruby.ir.representations.BasicBlock> graph;
descriptor: Lorg/jruby/dirgra/DirectedGraph;
flags: (0x0002) ACC_PRIVATE
Signature: Lorg/jruby/dirgra/DirectedGraph<Lorg/jruby/ir/representations/BasicBlock;>;
private int nextBBId;
descriptor: I
flags: (0x0002) ACC_PRIVATE
java.util.LinkedList<org.jruby.ir.representations.BasicBlock> postOrderList;
descriptor: Ljava/util/LinkedList;
flags: (0x0000)
Signature: Ljava/util/LinkedList<Lorg/jruby/ir/representations/BasicBlock;>;
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/CFG;
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.CFG.$assertionsDisabled:Z
3: ldc Lorg/jruby/ir/representations/CFG;
invokestatic org.jruby.util.log.LoggerFactory.getLogger:(Ljava/lang/Class;)Lorg/jruby/util/log/Logger;
putstatic org.jruby.ir.representations.CFG.LOG:Lorg/jruby/util/log/Logger;
return
LocalVariableTable:
Start End Slot Name Signature
public void <init>(org.jruby.ir.IRScope);
descriptor: (Lorg/jruby/ir/IRScope;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, 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.representations.CFG.scope:Lorg/jruby/ir/IRScope;
2: aload 0
new org.jruby.dirgra.DirectedGraph
dup
invokespecial org.jruby.dirgra.DirectedGraph.<init>:()V
putfield org.jruby.ir.representations.CFG.graph:Lorg/jruby/dirgra/DirectedGraph;
3: aload 0
new java.util.HashMap
dup
invokespecial java.util.HashMap.<init>:()V
putfield org.jruby.ir.representations.CFG.bbMap:Ljava/util/Map;
4: aload 0
new java.util.HashMap
dup
invokespecial java.util.HashMap.<init>:()V
putfield org.jruby.ir.representations.CFG.rescuerMap:Ljava/util/Map;
5: aload 0
iconst_0
putfield org.jruby.ir.representations.CFG.nextBBId:I
6: aload 0
aload 0
aconst_null
dup_x1
putfield org.jruby.ir.representations.CFG.exitBB:Lorg/jruby/ir/representations/BasicBlock;
putfield org.jruby.ir.representations.CFG.entryBB:Lorg/jruby/ir/representations/BasicBlock;
7: aload 0
aconst_null
putfield org.jruby.ir.representations.CFG.globalEnsureBB:Lorg/jruby/ir/representations/BasicBlock;
8: aload 0
aconst_null
putfield org.jruby.ir.representations.CFG.postOrderList:Ljava/util/LinkedList;
9: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 10 0 this Lorg/jruby/ir/representations/CFG;
0 10 1 scope Lorg/jruby/ir/IRScope;
MethodParameters:
Name Flags
scope
public int getNextBBID();
descriptor: ()I
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=1, args_size=1
start local 0 0: aload 0
dup
getfield org.jruby.ir.representations.CFG.nextBBId:I
iconst_1
iadd
putfield org.jruby.ir.representations.CFG.nextBBId:I
1: aload 0
getfield org.jruby.ir.representations.CFG.nextBBId:I
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lorg/jruby/ir/representations/CFG;
public org.jruby.ir.IRManager getManager();
descriptor: ()Lorg/jruby/ir/IRManager;
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield org.jruby.ir.representations.CFG.scope:Lorg/jruby/ir/IRScope;
invokevirtual org.jruby.ir.IRScope.getManager:()Lorg/jruby/ir/IRManager;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/jruby/ir/representations/CFG;
public int getMaxNodeID();
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.CFG.nextBBId:I
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/jruby/ir/representations/CFG;
public boolean bbIsProtected(org.jruby.ir.representations.BasicBlock);
descriptor: (Lorg/jruby/ir/representations/BasicBlock;)Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
aload 1
invokevirtual org.jruby.ir.representations.CFG.getRescuerBBFor:(Lorg/jruby/ir/representations/BasicBlock;)Lorg/jruby/ir/representations/BasicBlock;
ifnull 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/CFG;
0 2 1 b Lorg/jruby/ir/representations/BasicBlock;
MethodParameters:
Name Flags
b
public org.jruby.ir.representations.BasicBlock getBBForLabel(org.jruby.ir.operands.Label);
descriptor: (Lorg/jruby/ir/operands/Label;)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.representations.CFG.bbMap: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/representations/CFG;
0 1 1 label Lorg/jruby/ir/operands/Label;
MethodParameters:
Name Flags
label
public org.jruby.ir.representations.BasicBlock getEntryBB();
descriptor: ()Lorg/jruby/ir/representations/BasicBlock;
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield org.jruby.ir.representations.CFG.entryBB:Lorg/jruby/ir/representations/BasicBlock;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/jruby/ir/representations/CFG;
public org.jruby.ir.representations.BasicBlock getExitBB();
descriptor: ()Lorg/jruby/ir/representations/BasicBlock;
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield org.jruby.ir.representations.CFG.exitBB:Lorg/jruby/ir/representations/BasicBlock;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/jruby/ir/representations/CFG;
public org.jruby.ir.representations.BasicBlock getGlobalEnsureBB();
descriptor: ()Lorg/jruby/ir/representations/BasicBlock;
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield org.jruby.ir.representations.CFG.globalEnsureBB:Lorg/jruby/ir/representations/BasicBlock;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/jruby/ir/representations/CFG;
public java.util.LinkedList<org.jruby.ir.representations.BasicBlock> postOrderList();
descriptor: ()Ljava/util/LinkedList;
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
getfield org.jruby.ir.representations.CFG.postOrderList:Ljava/util/LinkedList;
ifnonnull 1
aload 0
aload 0
invokevirtual org.jruby.ir.representations.CFG.buildPostOrderList:()Ljava/util/LinkedList;
putfield org.jruby.ir.representations.CFG.postOrderList:Ljava/util/LinkedList;
1: StackMap locals:
StackMap stack:
aload 0
getfield org.jruby.ir.representations.CFG.postOrderList:Ljava/util/LinkedList;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lorg/jruby/ir/representations/CFG;
Signature: ()Ljava/util/LinkedList<Lorg/jruby/ir/representations/BasicBlock;>;
public java.util.Iterator<org.jruby.ir.representations.BasicBlock> getPostOrderTraverser();
descriptor: ()Ljava/util/Iterator;
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
invokevirtual org.jruby.ir.representations.CFG.postOrderList:()Ljava/util/LinkedList;
invokevirtual java.util.LinkedList.iterator:()Ljava/util/Iterator;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/jruby/ir/representations/CFG;
Signature: ()Ljava/util/Iterator<Lorg/jruby/ir/representations/BasicBlock;>;
public java.util.Iterator<org.jruby.ir.representations.BasicBlock> getReversePostOrderTraverser();
descriptor: ()Ljava/util/Iterator;
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
invokevirtual org.jruby.ir.representations.CFG.postOrderList:()Ljava/util/LinkedList;
invokevirtual java.util.LinkedList.descendingIterator:()Ljava/util/Iterator;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/jruby/ir/representations/CFG;
Signature: ()Ljava/util/Iterator<Lorg/jruby/ir/representations/BasicBlock;>;
public void resetState();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
aconst_null
putfield org.jruby.ir.representations.CFG.postOrderList:Ljava/util/LinkedList;
1: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lorg/jruby/ir/representations/CFG;
public org.jruby.ir.IRScope getScope();
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.representations.CFG.scope:Lorg/jruby/ir/IRScope;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/jruby/ir/representations/CFG;
public int size();
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.CFG.graph:Lorg/jruby/dirgra/DirectedGraph;
invokevirtual org.jruby.dirgra.DirectedGraph.size:()I
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/jruby/ir/representations/CFG;
public java.util.Collection<org.jruby.ir.representations.BasicBlock> getBasicBlocks();
descriptor: ()Ljava/util/Collection;
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield org.jruby.ir.representations.CFG.graph:Lorg/jruby/dirgra/DirectedGraph;
invokevirtual org.jruby.dirgra.DirectedGraph.allData:()Ljava/util/Collection;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/jruby/ir/representations/CFG;
Signature: ()Ljava/util/Collection<Lorg/jruby/ir/representations/BasicBlock;>;
public java.util.Collection<org.jruby.ir.representations.BasicBlock> getSortedBasicBlocks();
descriptor: ()Ljava/util/Collection;
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield org.jruby.ir.representations.CFG.graph:Lorg/jruby/dirgra/DirectedGraph;
invokevirtual org.jruby.dirgra.DirectedGraph.getInorderData:()Ljava/util/Collection;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/jruby/ir/representations/CFG;
Signature: ()Ljava/util/Collection<Lorg/jruby/ir/representations/BasicBlock;>;
public void addEdge(org.jruby.ir.representations.BasicBlock, org.jruby.ir.representations.BasicBlock, java.lang.Object);
descriptor: (Lorg/jruby/ir/representations/BasicBlock;Lorg/jruby/ir/representations/BasicBlock;Ljava/lang/Object;)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
getfield org.jruby.ir.representations.CFG.graph:Lorg/jruby/dirgra/DirectedGraph;
aload 1
invokevirtual org.jruby.dirgra.DirectedGraph.findOrCreateVertexFor:(Lorg/jruby/dirgra/ExplicitVertexID;)Lorg/jruby/dirgra/Vertex;
aload 2
aload 3
invokevirtual org.jruby.dirgra.Vertex.addEdgeTo:(Lorg/jruby/dirgra/ExplicitVertexID;Ljava/lang/Object;)V
1: return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lorg/jruby/ir/representations/CFG;
0 2 1 source Lorg/jruby/ir/representations/BasicBlock;
0 2 2 destination Lorg/jruby/ir/representations/BasicBlock;
0 2 3 type Ljava/lang/Object;
MethodParameters:
Name Flags
source
destination
type
public int inDegree(org.jruby.ir.representations.BasicBlock);
descriptor: (Lorg/jruby/ir/representations/BasicBlock;)I
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.CFG.graph:Lorg/jruby/dirgra/DirectedGraph;
aload 1
invokevirtual org.jruby.dirgra.DirectedGraph.findVertexFor:(Lorg/jruby/dirgra/ExplicitVertexID;)Lorg/jruby/dirgra/Vertex;
invokevirtual org.jruby.dirgra.Vertex.inDegree:()I
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/jruby/ir/representations/CFG;
0 1 1 b Lorg/jruby/ir/representations/BasicBlock;
MethodParameters:
Name Flags
b
public int outDegree(org.jruby.ir.representations.BasicBlock);
descriptor: (Lorg/jruby/ir/representations/BasicBlock;)I
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.CFG.graph:Lorg/jruby/dirgra/DirectedGraph;
aload 1
invokevirtual org.jruby.dirgra.DirectedGraph.findVertexFor:(Lorg/jruby/dirgra/ExplicitVertexID;)Lorg/jruby/dirgra/Vertex;
invokevirtual org.jruby.dirgra.Vertex.outDegree:()I
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/jruby/ir/representations/CFG;
0 1 1 b Lorg/jruby/ir/representations/BasicBlock;
MethodParameters:
Name Flags
b
public java.lang.Iterable<org.jruby.ir.representations.BasicBlock> getIncomingSources(org.jruby.ir.representations.BasicBlock);
descriptor: (Lorg/jruby/ir/representations/BasicBlock;)Ljava/lang/Iterable;
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.CFG.graph:Lorg/jruby/dirgra/DirectedGraph;
aload 1
invokevirtual org.jruby.dirgra.DirectedGraph.findVertexFor:(Lorg/jruby/dirgra/ExplicitVertexID;)Lorg/jruby/dirgra/Vertex;
invokevirtual org.jruby.dirgra.Vertex.getIncomingSourcesData:()Ljava/lang/Iterable;
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/jruby/ir/representations/CFG;
0 1 1 block Lorg/jruby/ir/representations/BasicBlock;
Signature: (Lorg/jruby/ir/representations/BasicBlock;)Ljava/lang/Iterable<Lorg/jruby/ir/representations/BasicBlock;>;
MethodParameters:
Name Flags
block
public java.lang.Iterable<org.jruby.dirgra.Edge<org.jruby.ir.representations.BasicBlock>> getIncomingEdges(org.jruby.ir.representations.BasicBlock);
descriptor: (Lorg/jruby/ir/representations/BasicBlock;)Ljava/lang/Iterable;
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.CFG.graph:Lorg/jruby/dirgra/DirectedGraph;
aload 1
invokevirtual org.jruby.dirgra.DirectedGraph.findVertexFor:(Lorg/jruby/dirgra/ExplicitVertexID;)Lorg/jruby/dirgra/Vertex;
invokevirtual org.jruby.dirgra.Vertex.getIncomingEdges:()Ljava/util/Collection;
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/jruby/ir/representations/CFG;
0 1 1 block Lorg/jruby/ir/representations/BasicBlock;
Signature: (Lorg/jruby/ir/representations/BasicBlock;)Ljava/lang/Iterable<Lorg/jruby/dirgra/Edge<Lorg/jruby/ir/representations/BasicBlock;>;>;
MethodParameters:
Name Flags
block
public org.jruby.ir.representations.BasicBlock getIncomingSourceOfType(org.jruby.ir.representations.BasicBlock, java.lang.Object);
descriptor: (Lorg/jruby/ir/representations/BasicBlock;Ljava/lang/Object;)Lorg/jruby/ir/representations/BasicBlock;
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 0
getfield org.jruby.ir.representations.CFG.graph:Lorg/jruby/dirgra/DirectedGraph;
aload 1
invokevirtual org.jruby.dirgra.DirectedGraph.findVertexFor:(Lorg/jruby/dirgra/ExplicitVertexID;)Lorg/jruby/dirgra/Vertex;
aload 2
invokevirtual org.jruby.dirgra.Vertex.getIncomingSourceDataOfType:(Ljava/lang/Object;)Lorg/jruby/dirgra/ExplicitVertexID;
checkcast org.jruby.ir.representations.BasicBlock
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/jruby/ir/representations/CFG;
0 1 1 block Lorg/jruby/ir/representations/BasicBlock;
0 1 2 type Ljava/lang/Object;
MethodParameters:
Name Flags
block
type
public org.jruby.ir.representations.BasicBlock getOutgoingDestinationOfType(org.jruby.ir.representations.BasicBlock, java.lang.Object);
descriptor: (Lorg/jruby/ir/representations/BasicBlock;Ljava/lang/Object;)Lorg/jruby/ir/representations/BasicBlock;
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 0
getfield org.jruby.ir.representations.CFG.graph:Lorg/jruby/dirgra/DirectedGraph;
aload 1
invokevirtual org.jruby.dirgra.DirectedGraph.findVertexFor:(Lorg/jruby/dirgra/ExplicitVertexID;)Lorg/jruby/dirgra/Vertex;
aload 2
invokevirtual org.jruby.dirgra.Vertex.getOutgoingDestinationDataOfType:(Ljava/lang/Object;)Lorg/jruby/dirgra/ExplicitVertexID;
checkcast org.jruby.ir.representations.BasicBlock
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/jruby/ir/representations/CFG;
0 1 1 block Lorg/jruby/ir/representations/BasicBlock;
0 1 2 type Ljava/lang/Object;
MethodParameters:
Name Flags
block
type
public java.lang.Iterable<org.jruby.ir.representations.BasicBlock> getOutgoingDestinations(org.jruby.ir.representations.BasicBlock);
descriptor: (Lorg/jruby/ir/representations/BasicBlock;)Ljava/lang/Iterable;
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.CFG.graph:Lorg/jruby/dirgra/DirectedGraph;
aload 1
invokevirtual org.jruby.dirgra.DirectedGraph.findVertexFor:(Lorg/jruby/dirgra/ExplicitVertexID;)Lorg/jruby/dirgra/Vertex;
invokevirtual org.jruby.dirgra.Vertex.getOutgoingDestinationsData:()Ljava/lang/Iterable;
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/jruby/ir/representations/CFG;
0 1 1 block Lorg/jruby/ir/representations/BasicBlock;
Signature: (Lorg/jruby/ir/representations/BasicBlock;)Ljava/lang/Iterable<Lorg/jruby/ir/representations/BasicBlock;>;
MethodParameters:
Name Flags
block
public java.lang.Iterable<org.jruby.ir.representations.BasicBlock> getOutgoingDestinationsOfType(org.jruby.ir.representations.BasicBlock, );
descriptor: (Lorg/jruby/ir/representations/BasicBlock;Ljava/lang/Object;)Ljava/lang/Iterable;
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 0
getfield org.jruby.ir.representations.CFG.graph:Lorg/jruby/dirgra/DirectedGraph;
aload 1
invokevirtual org.jruby.dirgra.DirectedGraph.findVertexFor:(Lorg/jruby/dirgra/ExplicitVertexID;)Lorg/jruby/dirgra/Vertex;
aload 2
invokevirtual org.jruby.dirgra.Vertex.getOutgoingDestinationsDataOfType:(Ljava/lang/Object;)Ljava/lang/Iterable;
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/jruby/ir/representations/CFG;
0 1 1 block Lorg/jruby/ir/representations/BasicBlock;
0 1 2 type Ljava/lang/Object;
Signature: (Lorg/jruby/ir/representations/BasicBlock;Ljava/lang/Object;)Ljava/lang/Iterable<Lorg/jruby/ir/representations/BasicBlock;>;
MethodParameters:
Name Flags
block
type
public java.lang.Iterable<org.jruby.ir.representations.BasicBlock> getOutgoingDestinationsNotOfType(org.jruby.ir.representations.BasicBlock, );
descriptor: (Lorg/jruby/ir/representations/BasicBlock;Ljava/lang/Object;)Ljava/lang/Iterable;
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 0
getfield org.jruby.ir.representations.CFG.graph:Lorg/jruby/dirgra/DirectedGraph;
aload 1
invokevirtual org.jruby.dirgra.DirectedGraph.findVertexFor:(Lorg/jruby/dirgra/ExplicitVertexID;)Lorg/jruby/dirgra/Vertex;
aload 2
invokevirtual org.jruby.dirgra.Vertex.getOutgoingDestinationsDataNotOfType:(Ljava/lang/Object;)Ljava/lang/Iterable;
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/jruby/ir/representations/CFG;
0 1 1 block Lorg/jruby/ir/representations/BasicBlock;
0 1 2 type Ljava/lang/Object;
Signature: (Lorg/jruby/ir/representations/BasicBlock;Ljava/lang/Object;)Ljava/lang/Iterable<Lorg/jruby/ir/representations/BasicBlock;>;
MethodParameters:
Name Flags
block
type
public java.util.Collection<org.jruby.dirgra.Edge<org.jruby.ir.representations.BasicBlock>> getOutgoingEdges(org.jruby.ir.representations.BasicBlock);
descriptor: (Lorg/jruby/ir/representations/BasicBlock;)Ljava/util/Collection;
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.CFG.graph:Lorg/jruby/dirgra/DirectedGraph;
aload 1
invokevirtual org.jruby.dirgra.DirectedGraph.findVertexFor:(Lorg/jruby/dirgra/ExplicitVertexID;)Lorg/jruby/dirgra/Vertex;
invokevirtual org.jruby.dirgra.Vertex.getOutgoingEdges:()Ljava/util/Collection;
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/jruby/ir/representations/CFG;
0 1 1 block Lorg/jruby/ir/representations/BasicBlock;
Signature: (Lorg/jruby/ir/representations/BasicBlock;)Ljava/util/Collection<Lorg/jruby/dirgra/Edge<Lorg/jruby/ir/representations/BasicBlock;>;>;
MethodParameters:
Name Flags
block
public org.jruby.ir.representations.BasicBlock getRescuerBBFor(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.representations.CFG.rescuerMap: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/representations/CFG;
0 1 1 block Lorg/jruby/ir/representations/BasicBlock;
MethodParameters:
Name Flags
block
public void addGlobalEnsureBB(org.jruby.ir.representations.BasicBlock);
descriptor: (Lorg/jruby/ir/representations/BasicBlock;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=4, args_size=2
start local 0 start local 1 0: getstatic org.jruby.ir.representations.CFG.$assertionsDisabled:Z
ifne 1
aload 0
getfield org.jruby.ir.representations.CFG.globalEnsureBB:Lorg/jruby/ir/representations/BasicBlock;
ifnull 1
new java.lang.AssertionError
dup
new java.lang.StringBuilder
dup
ldc "CFG for scope "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 0
invokevirtual org.jruby.ir.representations.CFG.getScope:()Lorg/jruby/ir/IRScope;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
ldc " already has a global ensure block."
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
1: StackMap locals:
StackMap stack:
aload 0
aload 1
invokevirtual org.jruby.ir.representations.CFG.addBasicBlock:(Lorg/jruby/ir/representations/BasicBlock;)V
2: aload 0
aload 1
aload 0
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
3: aload 0
invokevirtual org.jruby.ir.representations.CFG.getBasicBlocks:()Ljava/util/Collection;
invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
astore 3
goto 8
StackMap locals: org.jruby.ir.representations.CFG org.jruby.ir.representations.BasicBlock top java.util.Iterator
StackMap stack:
4: aload 3
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.jruby.ir.representations.BasicBlock
astore 2
start local 2 5: aload 2
aload 1
if_acmpeq 8
aload 0
aload 2
invokevirtual org.jruby.ir.representations.CFG.bbIsProtected:(Lorg/jruby/ir/representations/BasicBlock;)Z
ifne 8
aload 2
aload 0
invokevirtual org.jruby.ir.representations.CFG.getEntryBB:()Lorg/jruby/ir/representations/BasicBlock;
if_acmpeq 8
6: aload 0
aload 2
aload 1
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
7: aload 0
aload 2
aload 1
invokevirtual org.jruby.ir.representations.CFG.setRescuerBB:(Lorg/jruby/ir/representations/BasicBlock;Lorg/jruby/ir/representations/BasicBlock;)V
end local 2 8: StackMap locals:
StackMap stack:
aload 3
invokeinterface java.util.Iterator.hasNext:()Z
ifne 4
9: aload 0
aload 1
putfield org.jruby.ir.representations.CFG.globalEnsureBB:Lorg/jruby/ir/representations/BasicBlock;
10: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 11 0 this Lorg/jruby/ir/representations/CFG;
0 11 1 geb Lorg/jruby/ir/representations/BasicBlock;
5 8 2 b Lorg/jruby/ir/representations/BasicBlock;
MethodParameters:
Name Flags
geb
public void setRescuerBB(org.jruby.ir.representations.BasicBlock, org.jruby.ir.representations.BasicBlock);
descriptor: (Lorg/jruby/ir/representations/BasicBlock;Lorg/jruby/ir/representations/BasicBlock;)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.CFG.rescuerMap:Ljava/util/Map;
aload 1
aload 2
invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
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/representations/CFG;
0 2 1 block Lorg/jruby/ir/representations/BasicBlock;
0 2 2 rescuerBlock Lorg/jruby/ir/representations/BasicBlock;
MethodParameters:
Name Flags
block
rescuerBlock
public org.jruby.dirgra.DirectedGraph<org.jruby.ir.representations.BasicBlock> build(org.jruby.ir.instructions.Instr[]);
descriptor: ([Lorg/jruby/ir/instructions/Instr;)Lorg/jruby/dirgra/DirectedGraph;
flags: (0x0001) ACC_PUBLIC
Code:
stack=8, locals=23, args_size=2
start local 0 start local 1 0: new java.util.HashMap
dup
invokespecial java.util.HashMap.<init>:()V
astore 2
start local 2 1: new java.util.ArrayList
dup
invokespecial java.util.ArrayList.<init>:()V
astore 3
start local 3 2: new java.util.ArrayList
dup
invokespecial java.util.ArrayList.<init>:()V
astore 4
start local 4 3: new java.util.Stack
dup
invokespecial java.util.Stack.<init>:()V
astore 5
start local 5 4: new java.util.ArrayList
dup
invokespecial java.util.ArrayList.<init>:()V
astore 6
start local 6 5: aload 0
aload 0
aload 5
invokevirtual org.jruby.ir.representations.CFG.createBB:(Ljava/util/Stack;)Lorg/jruby/ir/representations/BasicBlock;
putfield org.jruby.ir.representations.CFG.entryBB:Lorg/jruby/ir/representations/BasicBlock;
6: aload 0
aload 5
invokevirtual org.jruby.ir.representations.CFG.createBB:(Ljava/util/Stack;)Lorg/jruby/ir/representations/BasicBlock;
astore 7
start local 7 7: aload 7
astore 8
start local 8 8: iconst_0
istore 10
start local 10 9: iconst_1
istore 11
start local 11 10: aload 1
dup
astore 15
arraylength
istore 14
iconst_0
istore 13
goto 79
StackMap locals: org.jruby.ir.representations.CFG org.jruby.ir.instructions.Instr[] java.util.Map java.util.List java.util.List java.util.Stack java.util.List org.jruby.ir.representations.BasicBlock org.jruby.ir.representations.BasicBlock top int int top int int org.jruby.ir.instructions.Instr[]
StackMap stack:
11: aload 15
iload 13
aaload
astore 12
start local 12 12: aload 12
invokevirtual org.jruby.ir.instructions.Instr.getOperation:()Lorg/jruby/ir/Operation;
astore 16
start local 16 13: aload 16
getstatic org.jruby.ir.Operation.LABEL:Lorg/jruby/ir/Operation;
if_acmpne 27
14: aload 12
checkcast org.jruby.ir.instructions.LabelInstr
invokevirtual org.jruby.ir.instructions.LabelInstr.getLabel:()Lorg/jruby/ir/operands/Label;
astore 17
start local 17 15: aload 0
aload 17
aload 5
invokevirtual org.jruby.ir.representations.CFG.createBB:(Lorg/jruby/ir/operands/Label;Ljava/util/Stack;)Lorg/jruby/ir/representations/BasicBlock;
astore 9
start local 9 16: iload 11
ifeq 17
aload 0
getfield org.jruby.ir.representations.CFG.graph:Lorg/jruby/dirgra/DirectedGraph;
aload 8
aload 9
getstatic org.jruby.ir.representations.CFG$EdgeType.FALL_THROUGH:Lorg/jruby/ir/representations/CFG$EdgeType;
invokevirtual org.jruby.dirgra.DirectedGraph.addEdge:(Lorg/jruby/dirgra/ExplicitVertexID;Lorg/jruby/dirgra/ExplicitVertexID;Ljava/lang/Object;)V
17: StackMap locals: org.jruby.ir.representations.CFG org.jruby.ir.instructions.Instr[] java.util.Map java.util.List java.util.List java.util.Stack java.util.List org.jruby.ir.representations.BasicBlock org.jruby.ir.representations.BasicBlock org.jruby.ir.representations.BasicBlock int int org.jruby.ir.instructions.Instr int int org.jruby.ir.instructions.Instr[] org.jruby.ir.Operation org.jruby.ir.operands.Label
StackMap stack:
aload 9
astore 8
18: iconst_0
istore 10
19: iconst_1
istore 11
20: aload 2
aload 17
invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast java.util.List
astore 18
start local 18 21: aload 18
ifnull 33
22: aload 18
invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
astore 20
goto 25
StackMap locals: org.jruby.ir.representations.CFG org.jruby.ir.instructions.Instr[] java.util.Map java.util.List java.util.List java.util.Stack java.util.List org.jruby.ir.representations.BasicBlock org.jruby.ir.representations.BasicBlock org.jruby.ir.representations.BasicBlock int int org.jruby.ir.instructions.Instr int int org.jruby.ir.instructions.Instr[] org.jruby.ir.Operation org.jruby.ir.operands.Label java.util.List top java.util.Iterator
StackMap stack:
23: aload 20
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.jruby.ir.representations.BasicBlock
astore 19
start local 19 24: aload 0
getfield org.jruby.ir.representations.CFG.graph:Lorg/jruby/dirgra/DirectedGraph;
aload 19
aload 9
getstatic org.jruby.ir.representations.CFG$EdgeType.REGULAR:Lorg/jruby/ir/representations/CFG$EdgeType;
invokevirtual org.jruby.dirgra.DirectedGraph.addEdge:(Lorg/jruby/dirgra/ExplicitVertexID;Lorg/jruby/dirgra/ExplicitVertexID;Ljava/lang/Object;)V
end local 19 25: StackMap locals:
StackMap stack:
aload 20
invokeinterface java.util.Iterator.hasNext:()Z
ifne 23
end local 18 end local 17 26: goto 33
end local 9 StackMap locals: org.jruby.ir.representations.CFG org.jruby.ir.instructions.Instr[] java.util.Map java.util.List java.util.List java.util.Stack java.util.List org.jruby.ir.representations.BasicBlock org.jruby.ir.representations.BasicBlock top int int org.jruby.ir.instructions.Instr int int org.jruby.ir.instructions.Instr[] org.jruby.ir.Operation
StackMap stack:
27: iload 10
ifeq 33
aload 16
getstatic org.jruby.ir.Operation.EXC_REGION_END:Lorg/jruby/ir/Operation;
if_acmpeq 33
28: aload 0
aload 5
invokevirtual org.jruby.ir.representations.CFG.createBB:(Ljava/util/Stack;)Lorg/jruby/ir/representations/BasicBlock;
astore 9
start local 9 29: iload 11
ifeq 30
aload 0
getfield org.jruby.ir.representations.CFG.graph:Lorg/jruby/dirgra/DirectedGraph;
aload 8
aload 9
getstatic org.jruby.ir.representations.CFG$EdgeType.FALL_THROUGH:Lorg/jruby/ir/representations/CFG$EdgeType;
invokevirtual org.jruby.dirgra.DirectedGraph.addEdge:(Lorg/jruby/dirgra/ExplicitVertexID;Lorg/jruby/dirgra/ExplicitVertexID;Ljava/lang/Object;)V
30: StackMap locals: org.jruby.ir.representations.CFG org.jruby.ir.instructions.Instr[] java.util.Map java.util.List java.util.List java.util.Stack java.util.List org.jruby.ir.representations.BasicBlock org.jruby.ir.representations.BasicBlock org.jruby.ir.representations.BasicBlock int int org.jruby.ir.instructions.Instr int int org.jruby.ir.instructions.Instr[] org.jruby.ir.Operation
StackMap stack:
aload 9
astore 8
31: iconst_0
istore 10
32: iconst_1
istore 11
end local 9 33: StackMap locals: org.jruby.ir.representations.CFG org.jruby.ir.instructions.Instr[] java.util.Map java.util.List java.util.List java.util.Stack java.util.List org.jruby.ir.representations.BasicBlock org.jruby.ir.representations.BasicBlock top int int org.jruby.ir.instructions.Instr int int org.jruby.ir.instructions.Instr[] org.jruby.ir.Operation
StackMap stack:
aload 12
instanceof org.jruby.ir.instructions.ExceptionRegionStartMarkerInstr
ifeq 42
34: aload 12
checkcast org.jruby.ir.instructions.ExceptionRegionStartMarkerInstr
astore 17
start local 17 35: new org.jruby.ir.representations.ExceptionRegion
dup
aload 17
invokevirtual org.jruby.ir.instructions.ExceptionRegionStartMarkerInstr.getFirstRescueBlockLabel:()Lorg/jruby/ir/operands/Label;
aload 8
invokespecial org.jruby.ir.representations.ExceptionRegion.<init>:(Lorg/jruby/ir/operands/Label;Lorg/jruby/ir/representations/BasicBlock;)V
astore 18
start local 18 36: aload 18
aload 8
invokevirtual org.jruby.ir.representations.ExceptionRegion.addBB:(Lorg/jruby/ir/representations/BasicBlock;)V
37: aload 6
aload 18
invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
pop
38: aload 5
invokevirtual java.util.Stack.empty:()Z
ifne 40
39: aload 5
invokevirtual java.util.Stack.peek:()Ljava/lang/Object;
checkcast org.jruby.ir.representations.ExceptionRegion
aload 18
invokevirtual org.jruby.ir.representations.ExceptionRegion.addNestedRegion:(Lorg/jruby/ir/representations/ExceptionRegion;)V
40: StackMap locals: org.jruby.ir.instructions.ExceptionRegionStartMarkerInstr org.jruby.ir.representations.ExceptionRegion
StackMap stack:
aload 5
aload 18
invokevirtual java.util.Stack.push:(Ljava/lang/Object;)Ljava/lang/Object;
pop
end local 18 end local 17 41: goto 78
StackMap locals:
StackMap stack:
42: aload 12
instanceof org.jruby.ir.instructions.ExceptionRegionEndMarkerInstr
ifeq 45
43: aload 5
invokevirtual java.util.Stack.pop:()Ljava/lang/Object;
checkcast org.jruby.ir.representations.ExceptionRegion
aload 8
invokevirtual org.jruby.ir.representations.ExceptionRegion.setEndBB:(Lorg/jruby/ir/representations/BasicBlock;)V
44: goto 78
StackMap locals:
StackMap stack:
45: aload 16
invokevirtual org.jruby.ir.Operation.endsBasicBlock:()Z
ifeq 76
46: iconst_1
istore 10
47: aload 8
aload 12
invokevirtual org.jruby.ir.representations.BasicBlock.addInstr:(Lorg/jruby/ir/instructions/Instr;)V
48: aconst_null
astore 17
start local 17 49: iconst_0
istore 11
50: aload 12
instanceof org.jruby.ir.instructions.BranchInstr
ifeq 54
51: aload 12
checkcast org.jruby.ir.instructions.BranchInstr
invokevirtual org.jruby.ir.instructions.BranchInstr.getJumpTarget:()Lorg/jruby/ir/operands/Label;
astore 17
52: iconst_1
istore 11
53: goto 74
StackMap locals: org.jruby.ir.operands.Label
StackMap stack:
54: aload 12
instanceof org.jruby.ir.instructions.MultiBranchInstr
ifeq 62
55: aload 12
checkcast org.jruby.ir.instructions.MultiBranchInstr
invokevirtual org.jruby.ir.instructions.MultiBranchInstr.getJumpTargets:()[Lorg/jruby/ir/operands/Label;
astore 18
start local 18 56: aload 18
dup
astore 22
arraylength
istore 21
iconst_0
istore 20
goto 60
StackMap locals: org.jruby.ir.representations.CFG org.jruby.ir.instructions.Instr[] java.util.Map java.util.List java.util.List java.util.Stack java.util.List org.jruby.ir.representations.BasicBlock org.jruby.ir.representations.BasicBlock top int int org.jruby.ir.instructions.Instr int int org.jruby.ir.instructions.Instr[] org.jruby.ir.Operation org.jruby.ir.operands.Label org.jruby.ir.operands.Label[] top int int org.jruby.ir.operands.Label[]
StackMap stack:
57: aload 22
iload 20
aaload
astore 19
start local 19 58: aload 0
aload 8
aload 19
aload 2
invokevirtual org.jruby.ir.representations.CFG.addEdge:(Lorg/jruby/ir/representations/BasicBlock;Lorg/jruby/ir/operands/Label;Ljava/util/Map;)V
end local 19 59: iinc 20 1
StackMap locals:
StackMap stack:
60: iload 20
iload 21
if_icmplt 57
end local 18 61: goto 74
StackMap locals: org.jruby.ir.representations.CFG org.jruby.ir.instructions.Instr[] java.util.Map java.util.List java.util.List java.util.Stack java.util.List org.jruby.ir.representations.BasicBlock org.jruby.ir.representations.BasicBlock top int int org.jruby.ir.instructions.Instr int int org.jruby.ir.instructions.Instr[] org.jruby.ir.Operation org.jruby.ir.operands.Label
StackMap stack:
62: aload 12
instanceof org.jruby.ir.instructions.JumpInstr
ifeq 65
63: aload 12
checkcast org.jruby.ir.instructions.JumpInstr
invokevirtual org.jruby.ir.instructions.JumpInstr.getJumpTarget:()Lorg/jruby/ir/operands/Label;
astore 17
64: goto 74
StackMap locals:
StackMap stack:
65: aload 16
invokevirtual org.jruby.ir.Operation.isReturn:()Z
ifeq 69
66: aconst_null
astore 17
67: aload 3
aload 8
invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
pop
68: goto 74
StackMap locals:
StackMap stack:
69: aload 12
instanceof org.jruby.ir.instructions.ThrowExceptionInstr
ifeq 73
70: aconst_null
astore 17
71: aload 4
aload 8
invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
pop
72: goto 74
73: StackMap locals:
StackMap stack:
new java.lang.RuntimeException
dup
new java.lang.StringBuilder
dup
ldc "Unhandled case in CFG builder for basic block ending instr: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 12
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
74: StackMap locals:
StackMap stack:
aload 17
ifnull 78
aload 0
aload 8
aload 17
aload 2
invokevirtual org.jruby.ir.representations.CFG.addEdge:(Lorg/jruby/ir/representations/BasicBlock;Lorg/jruby/ir/operands/Label;Ljava/util/Map;)V
end local 17 75: goto 78
StackMap locals:
StackMap stack:
76: aload 16
getstatic org.jruby.ir.Operation.LABEL:Lorg/jruby/ir/Operation;
if_acmpeq 78
77: aload 8
aload 12
invokevirtual org.jruby.ir.representations.BasicBlock.addInstr:(Lorg/jruby/ir/instructions/Instr;)V
end local 16 end local 12 78: StackMap locals: org.jruby.ir.representations.CFG org.jruby.ir.instructions.Instr[] java.util.Map java.util.List java.util.List java.util.Stack java.util.List org.jruby.ir.representations.BasicBlock org.jruby.ir.representations.BasicBlock top int int top int int org.jruby.ir.instructions.Instr[]
StackMap stack:
iinc 13 1
StackMap locals:
StackMap stack:
79: iload 13
iload 14
if_icmplt 11
80: aload 6
invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
astore 13
goto 92
StackMap locals: org.jruby.ir.representations.CFG org.jruby.ir.instructions.Instr[] java.util.Map java.util.List java.util.List java.util.Stack java.util.List org.jruby.ir.representations.BasicBlock org.jruby.ir.representations.BasicBlock top int int top java.util.Iterator
StackMap stack:
81: aload 13
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.jruby.ir.representations.ExceptionRegion
astore 12
start local 12 82: aload 12
invokevirtual org.jruby.ir.representations.ExceptionRegion.getFirstRescueBlockLabel:()Lorg/jruby/ir/operands/Label;
astore 14
start local 14 83: getstatic org.jruby.ir.operands.Label.UNRESCUED_REGION_LABEL:Lorg/jruby/ir/operands/Label;
aload 14
invokevirtual org.jruby.ir.operands.Label.equals:(Ljava/lang/Object;)Z
ifne 92
84: aload 0
getfield org.jruby.ir.representations.CFG.bbMap:Ljava/util/Map;
aload 14
invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast org.jruby.ir.representations.BasicBlock
astore 15
start local 15 85: aload 15
invokevirtual org.jruby.ir.representations.BasicBlock.markRescueEntryBB:()V
86: aload 12
invokevirtual org.jruby.ir.representations.ExceptionRegion.getExclusiveBBs:()Ljava/util/List;
invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
astore 17
goto 91
StackMap locals: org.jruby.ir.representations.CFG org.jruby.ir.instructions.Instr[] java.util.Map java.util.List java.util.List java.util.Stack java.util.List org.jruby.ir.representations.BasicBlock org.jruby.ir.representations.BasicBlock top int int org.jruby.ir.representations.ExceptionRegion java.util.Iterator org.jruby.ir.operands.Label org.jruby.ir.representations.BasicBlock top java.util.Iterator
StackMap stack:
87: aload 17
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.jruby.ir.representations.BasicBlock
astore 16
start local 16 88: aload 16
invokevirtual org.jruby.ir.representations.BasicBlock.canRaiseExceptions:()Z
ifeq 91
89: aload 0
aload 16
aload 15
invokevirtual org.jruby.ir.representations.CFG.setRescuerBB:(Lorg/jruby/ir/representations/BasicBlock;Lorg/jruby/ir/representations/BasicBlock;)V
90: aload 0
getfield org.jruby.ir.representations.CFG.graph:Lorg/jruby/dirgra/DirectedGraph;
aload 16
aload 15
getstatic org.jruby.ir.representations.CFG$EdgeType.EXCEPTION:Lorg/jruby/ir/representations/CFG$EdgeType;
invokevirtual org.jruby.dirgra.DirectedGraph.addEdge:(Lorg/jruby/dirgra/ExplicitVertexID;Lorg/jruby/dirgra/ExplicitVertexID;Ljava/lang/Object;)V
end local 16 91: StackMap locals:
StackMap stack:
aload 17
invokeinterface java.util.Iterator.hasNext:()Z
ifne 87
end local 15 end local 14 end local 12 92: StackMap locals: org.jruby.ir.representations.CFG org.jruby.ir.instructions.Instr[] java.util.Map java.util.List java.util.List java.util.Stack java.util.List org.jruby.ir.representations.BasicBlock org.jruby.ir.representations.BasicBlock top int int top java.util.Iterator
StackMap stack:
aload 13
invokeinterface java.util.Iterator.hasNext:()Z
ifne 81
93: aload 0
aload 5
aload 7
aload 3
aload 4
iload 11
aload 8
aload 0
getfield org.jruby.ir.representations.CFG.entryBB:Lorg/jruby/ir/representations/BasicBlock;
invokevirtual org.jruby.ir.representations.CFG.buildExitBasicBlock:(Ljava/util/Stack;Lorg/jruby/ir/representations/BasicBlock;Ljava/util/List;Ljava/util/List;ZLorg/jruby/ir/representations/BasicBlock;Lorg/jruby/ir/representations/BasicBlock;)Lorg/jruby/ir/representations/BasicBlock;
pop
94: aload 0
aload 3
invokevirtual org.jruby.ir.representations.CFG.optimize:(Ljava/util/List;)V
95: aload 0
getfield org.jruby.ir.representations.CFG.graph:Lorg/jruby/dirgra/DirectedGraph;
areturn
end local 11 end local 10 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 96 0 this Lorg/jruby/ir/representations/CFG;
0 96 1 instrs [Lorg/jruby/ir/instructions/Instr;
1 96 2 forwardRefs Ljava/util/Map<Lorg/jruby/ir/operands/Label;Ljava/util/List<Lorg/jruby/ir/representations/BasicBlock;>;>;
2 96 3 returnBBs Ljava/util/List<Lorg/jruby/ir/representations/BasicBlock;>;
3 96 4 exceptionBBs Ljava/util/List<Lorg/jruby/ir/representations/BasicBlock;>;
4 96 5 nestedExceptionRegions Ljava/util/Stack<Lorg/jruby/ir/representations/ExceptionRegion;>;
5 96 6 allExceptionRegions Ljava/util/List<Lorg/jruby/ir/representations/ExceptionRegion;>;
7 96 7 firstBB Lorg/jruby/ir/representations/BasicBlock;
8 96 8 currBB Lorg/jruby/ir/representations/BasicBlock;
16 27 9 newBB Lorg/jruby/ir/representations/BasicBlock;
29 33 9 newBB Lorg/jruby/ir/representations/BasicBlock;
9 96 10 bbEnded Z
10 96 11 nextBBIsFallThrough Z
12 78 12 i Lorg/jruby/ir/instructions/Instr;
13 78 16 iop Lorg/jruby/ir/Operation;
15 26 17 l Lorg/jruby/ir/operands/Label;
21 26 18 frefs Ljava/util/List<Lorg/jruby/ir/representations/BasicBlock;>;
24 25 19 b Lorg/jruby/ir/representations/BasicBlock;
35 41 17 ersmi Lorg/jruby/ir/instructions/ExceptionRegionStartMarkerInstr;
36 41 18 rr Lorg/jruby/ir/representations/ExceptionRegion;
49 75 17 tgt Lorg/jruby/ir/operands/Label;
56 61 18 tgts [Lorg/jruby/ir/operands/Label;
58 59 19 l Lorg/jruby/ir/operands/Label;
82 92 12 rr Lorg/jruby/ir/representations/ExceptionRegion;
83 92 14 rescueLabel Lorg/jruby/ir/operands/Label;
85 92 15 firstRescueBB Lorg/jruby/ir/representations/BasicBlock;
88 91 16 b Lorg/jruby/ir/representations/BasicBlock;
Signature: ([Lorg/jruby/ir/instructions/Instr;)Lorg/jruby/dirgra/DirectedGraph<Lorg/jruby/ir/representations/BasicBlock;>;
MethodParameters:
Name Flags
instrs
private void addEdge(org.jruby.ir.representations.BasicBlock, org.jruby.ir.operands.Label, java.util.Map<org.jruby.ir.operands.Label, java.util.List<org.jruby.ir.representations.BasicBlock>>);
descriptor: (Lorg/jruby/ir/representations/BasicBlock;Lorg/jruby/ir/operands/Label;Ljava/util/Map;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=6, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 0
getfield org.jruby.ir.representations.CFG.bbMap:Ljava/util/Map;
aload 2
invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast org.jruby.ir.representations.BasicBlock
astore 4
start local 4 1: aload 4
ifnull 4
2: aload 0
getfield org.jruby.ir.representations.CFG.graph:Lorg/jruby/dirgra/DirectedGraph;
aload 1
aload 4
getstatic org.jruby.ir.representations.CFG$EdgeType.REGULAR:Lorg/jruby/ir/representations/CFG$EdgeType;
invokevirtual org.jruby.dirgra.DirectedGraph.addEdge:(Lorg/jruby/dirgra/ExplicitVertexID;Lorg/jruby/dirgra/ExplicitVertexID;Ljava/lang/Object;)V
3: return
4: StackMap locals: org.jruby.ir.representations.BasicBlock
StackMap stack:
aload 3
aload 2
invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast java.util.List
astore 5
start local 5 5: aload 5
ifnonnull 8
6: new java.util.ArrayList
dup
invokespecial java.util.ArrayList.<init>:()V
astore 5
7: aload 3
aload 2
aload 5
invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
8: StackMap locals: java.util.List
StackMap stack:
aload 5
aload 1
invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
pop
9: return
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 10 0 this Lorg/jruby/ir/representations/CFG;
0 10 1 src Lorg/jruby/ir/representations/BasicBlock;
0 10 2 targetLabel Lorg/jruby/ir/operands/Label;
0 10 3 forwardRefs Ljava/util/Map<Lorg/jruby/ir/operands/Label;Ljava/util/List<Lorg/jruby/ir/representations/BasicBlock;>;>;
1 10 4 target Lorg/jruby/ir/representations/BasicBlock;
5 10 5 forwardReferences Ljava/util/List<Lorg/jruby/ir/representations/BasicBlock;>;
Signature: (Lorg/jruby/ir/representations/BasicBlock;Lorg/jruby/ir/operands/Label;Ljava/util/Map<Lorg/jruby/ir/operands/Label;Ljava/util/List<Lorg/jruby/ir/representations/BasicBlock;>;>;)V
MethodParameters:
Name Flags
src
targetLabel
forwardRefs
private org.jruby.ir.representations.BasicBlock buildExitBasicBlock(java.util.Stack<org.jruby.ir.representations.ExceptionRegion>, org.jruby.ir.representations.BasicBlock, java.util.List<org.jruby.ir.representations.BasicBlock>, java.util.List<org.jruby.ir.representations.BasicBlock>, boolean, org.jruby.ir.representations.BasicBlock, org.jruby.ir.representations.BasicBlock);
descriptor: (Ljava/util/Stack;Lorg/jruby/ir/representations/BasicBlock;Ljava/util/List;Ljava/util/List;ZLorg/jruby/ir/representations/BasicBlock;Lorg/jruby/ir/representations/BasicBlock;)Lorg/jruby/ir/representations/BasicBlock;
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=10, args_size=8
start local 0 start local 1 start local 2 start local 3 start local 4 start local 5 start local 6 start local 7 0: aload 0
aload 0
aload 1
invokevirtual org.jruby.ir.representations.CFG.createBB:(Ljava/util/Stack;)Lorg/jruby/ir/representations/BasicBlock;
putfield org.jruby.ir.representations.CFG.exitBB:Lorg/jruby/ir/representations/BasicBlock;
1: aload 0
getfield org.jruby.ir.representations.CFG.graph:Lorg/jruby/dirgra/DirectedGraph;
aload 7
aload 0
getfield org.jruby.ir.representations.CFG.exitBB:Lorg/jruby/ir/representations/BasicBlock;
getstatic org.jruby.ir.representations.CFG$EdgeType.EXIT:Lorg/jruby/ir/representations/CFG$EdgeType;
invokevirtual org.jruby.dirgra.DirectedGraph.addEdge:(Lorg/jruby/dirgra/ExplicitVertexID;Lorg/jruby/dirgra/ExplicitVertexID;Ljava/lang/Object;)V
2: aload 0
getfield org.jruby.ir.representations.CFG.graph:Lorg/jruby/dirgra/DirectedGraph;
aload 7
aload 2
getstatic org.jruby.ir.representations.CFG$EdgeType.FALL_THROUGH:Lorg/jruby/ir/representations/CFG$EdgeType;
invokevirtual org.jruby.dirgra.DirectedGraph.addEdge:(Lorg/jruby/dirgra/ExplicitVertexID;Lorg/jruby/dirgra/ExplicitVertexID;Ljava/lang/Object;)V
3: aload 3
invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
astore 9
goto 6
StackMap locals: org.jruby.ir.representations.CFG java.util.Stack org.jruby.ir.representations.BasicBlock java.util.List java.util.List int org.jruby.ir.representations.BasicBlock org.jruby.ir.representations.BasicBlock top java.util.Iterator
StackMap stack:
4: aload 9
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.jruby.ir.representations.BasicBlock
astore 8
start local 8 5: aload 0
getfield org.jruby.ir.representations.CFG.graph:Lorg/jruby/dirgra/DirectedGraph;
aload 8
aload 0
getfield org.jruby.ir.representations.CFG.exitBB:Lorg/jruby/ir/representations/BasicBlock;
getstatic org.jruby.ir.representations.CFG$EdgeType.EXIT:Lorg/jruby/ir/representations/CFG$EdgeType;
invokevirtual org.jruby.dirgra.DirectedGraph.addEdge:(Lorg/jruby/dirgra/ExplicitVertexID;Lorg/jruby/dirgra/ExplicitVertexID;Ljava/lang/Object;)V
end local 8 6: StackMap locals:
StackMap stack:
aload 9
invokeinterface java.util.Iterator.hasNext:()Z
ifne 4
7: aload 4
invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
astore 9
goto 10
StackMap locals:
StackMap stack:
8: aload 9
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.jruby.ir.representations.BasicBlock
astore 8
start local 8 9: aload 0
getfield org.jruby.ir.representations.CFG.graph:Lorg/jruby/dirgra/DirectedGraph;
aload 8
aload 0
getfield org.jruby.ir.representations.CFG.exitBB:Lorg/jruby/ir/representations/BasicBlock;
getstatic org.jruby.ir.representations.CFG$EdgeType.EXIT:Lorg/jruby/ir/representations/CFG$EdgeType;
invokevirtual org.jruby.dirgra.DirectedGraph.addEdge:(Lorg/jruby/dirgra/ExplicitVertexID;Lorg/jruby/dirgra/ExplicitVertexID;Ljava/lang/Object;)V
end local 8 10: StackMap locals:
StackMap stack:
aload 9
invokeinterface java.util.Iterator.hasNext:()Z
ifne 8
11: iload 5
ifeq 12
aload 0
getfield org.jruby.ir.representations.CFG.graph:Lorg/jruby/dirgra/DirectedGraph;
aload 6
aload 0
getfield org.jruby.ir.representations.CFG.exitBB:Lorg/jruby/ir/representations/BasicBlock;
getstatic org.jruby.ir.representations.CFG$EdgeType.EXIT:Lorg/jruby/ir/representations/CFG$EdgeType;
invokevirtual org.jruby.dirgra.DirectedGraph.addEdge:(Lorg/jruby/dirgra/ExplicitVertexID;Lorg/jruby/dirgra/ExplicitVertexID;Ljava/lang/Object;)V
12: StackMap locals: org.jruby.ir.representations.CFG java.util.Stack org.jruby.ir.representations.BasicBlock java.util.List java.util.List int org.jruby.ir.representations.BasicBlock org.jruby.ir.representations.BasicBlock
StackMap stack:
aload 0
getfield org.jruby.ir.representations.CFG.exitBB:Lorg/jruby/ir/representations/BasicBlock;
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 13 0 this Lorg/jruby/ir/representations/CFG;
0 13 1 nestedExceptionRegions Ljava/util/Stack<Lorg/jruby/ir/representations/ExceptionRegion;>;
0 13 2 firstBB Lorg/jruby/ir/representations/BasicBlock;
0 13 3 returnBBs Ljava/util/List<Lorg/jruby/ir/representations/BasicBlock;>;
0 13 4 exceptionBBs Ljava/util/List<Lorg/jruby/ir/representations/BasicBlock;>;
0 13 5 nextIsFallThrough Z
0 13 6 currBB Lorg/jruby/ir/representations/BasicBlock;
0 13 7 entryBB Lorg/jruby/ir/representations/BasicBlock;
5 6 8 rb Lorg/jruby/ir/representations/BasicBlock;
9 10 8 rb Lorg/jruby/ir/representations/BasicBlock;
Signature: (Ljava/util/Stack<Lorg/jruby/ir/representations/ExceptionRegion;>;Lorg/jruby/ir/representations/BasicBlock;Ljava/util/List<Lorg/jruby/ir/representations/BasicBlock;>;Ljava/util/List<Lorg/jruby/ir/representations/BasicBlock;>;ZLorg/jruby/ir/representations/BasicBlock;Lorg/jruby/ir/representations/BasicBlock;)Lorg/jruby/ir/representations/BasicBlock;
MethodParameters:
Name Flags
nestedExceptionRegions
firstBB
returnBBs
exceptionBBs
nextIsFallThrough
currBB
entryBB
private org.jruby.ir.representations.BasicBlock createBB(org.jruby.ir.operands.Label, java.util.Stack<org.jruby.ir.representations.ExceptionRegion>);
descriptor: (Lorg/jruby/ir/operands/Label;Ljava/util/Stack;)Lorg/jruby/ir/representations/BasicBlock;
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=4, args_size=3
start local 0 start local 1 start local 2 0: new org.jruby.ir.representations.BasicBlock
dup
aload 0
aload 1
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 0
aload 3
invokevirtual org.jruby.ir.representations.CFG.addBasicBlock:(Lorg/jruby/ir/representations/BasicBlock;)V
2: aload 1
invokevirtual org.jruby.ir.operands.Label.isGlobalEnsureBlockLabel:()Z
ifeq 4
3: aload 0
aload 3
putfield org.jruby.ir.representations.CFG.globalEnsureBB:Lorg/jruby/ir/representations/BasicBlock;
4: StackMap locals: org.jruby.ir.representations.BasicBlock
StackMap stack:
aload 2
invokevirtual java.util.Stack.empty:()Z
ifne 5
aload 2
invokevirtual java.util.Stack.peek:()Ljava/lang/Object;
checkcast org.jruby.ir.representations.ExceptionRegion
aload 3
invokevirtual org.jruby.ir.representations.ExceptionRegion.addBB:(Lorg/jruby/ir/representations/BasicBlock;)V
5: StackMap locals:
StackMap stack:
aload 3
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/representations/CFG;
0 6 1 label Lorg/jruby/ir/operands/Label;
0 6 2 nestedExceptionRegions Ljava/util/Stack<Lorg/jruby/ir/representations/ExceptionRegion;>;
1 6 3 basicBlock Lorg/jruby/ir/representations/BasicBlock;
Signature: (Lorg/jruby/ir/operands/Label;Ljava/util/Stack<Lorg/jruby/ir/representations/ExceptionRegion;>;)Lorg/jruby/ir/representations/BasicBlock;
MethodParameters:
Name Flags
label
nestedExceptionRegions
private org.jruby.ir.representations.BasicBlock createBB(java.util.Stack<org.jruby.ir.representations.ExceptionRegion>);
descriptor: (Ljava/util/Stack;)Lorg/jruby/ir/representations/BasicBlock;
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=2, args_size=2
start local 0 start local 1 0: aload 0
aload 0
getfield org.jruby.ir.representations.CFG.scope:Lorg/jruby/ir/IRScope;
invokevirtual org.jruby.ir.IRScope.getNewLabel:()Lorg/jruby/ir/operands/Label;
aload 1
invokevirtual org.jruby.ir.representations.CFG.createBB:(Lorg/jruby/ir/operands/Label;Ljava/util/Stack;)Lorg/jruby/ir/representations/BasicBlock;
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/jruby/ir/representations/CFG;
0 1 1 nestedExceptionRegions Ljava/util/Stack<Lorg/jruby/ir/representations/ExceptionRegion;>;
Signature: (Ljava/util/Stack<Lorg/jruby/ir/representations/ExceptionRegion;>;)Lorg/jruby/ir/representations/BasicBlock;
MethodParameters:
Name Flags
nestedExceptionRegions
public void addBasicBlock(org.jruby.ir.representations.BasicBlock);
descriptor: (Lorg/jruby/ir/representations/BasicBlock;)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.CFG.graph:Lorg/jruby/dirgra/DirectedGraph;
aload 1
invokevirtual org.jruby.dirgra.DirectedGraph.findOrCreateVertexFor:(Lorg/jruby/dirgra/ExplicitVertexID;)Lorg/jruby/dirgra/Vertex;
pop
1: aload 0
getfield org.jruby.ir.representations.CFG.bbMap:Ljava/util/Map;
aload 1
invokevirtual org.jruby.ir.representations.BasicBlock.getLabel:()Lorg/jruby/ir/operands/Label;
aload 1
invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
2: aload 0
aconst_null
putfield org.jruby.ir.representations.CFG.postOrderList:Ljava/util/LinkedList;
3: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lorg/jruby/ir/representations/CFG;
0 4 1 bb Lorg/jruby/ir/representations/BasicBlock;
MethodParameters:
Name Flags
bb
public void removeAllOutgoingEdgesForBB(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.CFG.graph:Lorg/jruby/dirgra/DirectedGraph;
aload 1
invokevirtual org.jruby.dirgra.DirectedGraph.findVertexFor:(Lorg/jruby/dirgra/ExplicitVertexID;)Lorg/jruby/dirgra/Vertex;
invokevirtual org.jruby.dirgra.Vertex.removeAllOutgoingEdges:()V
1: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lorg/jruby/ir/representations/CFG;
0 2 1 b Lorg/jruby/ir/representations/BasicBlock;
MethodParameters:
Name Flags
b
private void deleteOrphanedBlocks(org.jruby.dirgra.DirectedGraph<org.jruby.ir.representations.BasicBlock>);
descriptor: (Lorg/jruby/dirgra/DirectedGraph;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=7, args_size=2
start local 0 start local 1 0: new java.util.LinkedList
dup
invokespecial java.util.LinkedList.<init>:()V
astore 2
start local 2 1: new java.util.HashSet
dup
invokespecial java.util.HashSet.<init>:()V
astore 3
start local 3 2: aload 2
aload 0
getfield org.jruby.ir.representations.CFG.entryBB:Lorg/jruby/ir/representations/BasicBlock;
invokeinterface java.util.Queue.add:(Ljava/lang/Object;)Z
pop
3: aload 3
aload 0
getfield org.jruby.ir.representations.CFG.entryBB:Lorg/jruby/ir/representations/BasicBlock;
invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
pop
4: goto 12
5: StackMap locals: java.util.Queue java.util.Set
StackMap stack:
aload 2
invokeinterface java.util.Queue.remove:()Ljava/lang/Object;
checkcast org.jruby.ir.representations.BasicBlock
astore 4
start local 4 6: aload 1
aload 4
invokevirtual org.jruby.dirgra.DirectedGraph.findVertexFor:(Lorg/jruby/dirgra/ExplicitVertexID;)Lorg/jruby/dirgra/Vertex;
invokevirtual org.jruby.dirgra.Vertex.getOutgoingDestinationsData:()Ljava/lang/Iterable;
invokeinterface java.lang.Iterable.iterator:()Ljava/util/Iterator;
astore 6
goto 11
StackMap locals: org.jruby.ir.representations.CFG org.jruby.dirgra.DirectedGraph java.util.Queue java.util.Set org.jruby.ir.representations.BasicBlock top java.util.Iterator
StackMap stack:
7: aload 6
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.jruby.ir.representations.BasicBlock
astore 5
start local 5 8: aload 3
aload 5
invokeinterface java.util.Set.contains:(Ljava/lang/Object;)Z
ifne 11
9: aload 2
aload 5
invokeinterface java.util.Queue.add:(Ljava/lang/Object;)Z
pop
10: aload 3
aload 5
invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
pop
end local 5 11: StackMap locals:
StackMap stack:
aload 6
invokeinterface java.util.Iterator.hasNext:()Z
ifne 7
end local 4 12: StackMap locals: org.jruby.ir.representations.CFG org.jruby.dirgra.DirectedGraph java.util.Queue java.util.Set
StackMap stack:
aload 2
invokeinterface java.util.Queue.isEmpty:()Z
ifeq 5
13: new java.util.HashSet
dup
invokespecial java.util.HashSet.<init>:()V
astore 4
start local 4 14: aload 1
invokevirtual org.jruby.dirgra.DirectedGraph.allData:()Ljava/util/Collection;
invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
astore 6
goto 17
StackMap locals: org.jruby.ir.representations.CFG org.jruby.dirgra.DirectedGraph java.util.Queue java.util.Set java.util.Set top java.util.Iterator
StackMap stack:
15: aload 6
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.jruby.ir.representations.BasicBlock
astore 5
start local 5 16: aload 3
aload 5
invokeinterface java.util.Set.contains:(Ljava/lang/Object;)Z
ifne 17
aload 4
aload 5
invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
pop
end local 5 17: StackMap locals:
StackMap stack:
aload 6
invokeinterface java.util.Iterator.hasNext:()Z
ifne 15
18: aload 4
invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
astore 6
goto 22
StackMap locals:
StackMap stack:
19: aload 6
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.jruby.ir.representations.BasicBlock
astore 5
start local 5 20: aload 0
aload 5
invokevirtual org.jruby.ir.representations.CFG.removeBB:(Lorg/jruby/ir/representations/BasicBlock;)V
21: aload 0
aload 5
invokevirtual org.jruby.ir.representations.CFG.removeNestedScopesFromBB:(Lorg/jruby/ir/representations/BasicBlock;)V
end local 5 22: StackMap locals:
StackMap stack:
aload 6
invokeinterface java.util.Iterator.hasNext:()Z
ifne 19
23: return
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 24 0 this Lorg/jruby/ir/representations/CFG;
0 24 1 graph Lorg/jruby/dirgra/DirectedGraph<Lorg/jruby/ir/representations/BasicBlock;>;
1 24 2 worklist Ljava/util/Queue<Lorg/jruby/ir/representations/BasicBlock;>;
2 24 3 living Ljava/util/Set<Lorg/jruby/ir/representations/BasicBlock;>;
6 12 4 current Lorg/jruby/ir/representations/BasicBlock;
8 11 5 bb Lorg/jruby/ir/representations/BasicBlock;
14 24 4 dead Ljava/util/Set<Lorg/jruby/ir/representations/BasicBlock;>;
16 17 5 bb Lorg/jruby/ir/representations/BasicBlock;
20 22 5 bb Lorg/jruby/ir/representations/BasicBlock;
Signature: (Lorg/jruby/dirgra/DirectedGraph<Lorg/jruby/ir/representations/BasicBlock;>;)V
MethodParameters:
Name Flags
graph
private boolean mergeBBs(org.jruby.ir.representations.BasicBlock, org.jruby.ir.representations.BasicBlock);
descriptor: (Lorg/jruby/ir/representations/BasicBlock;Lorg/jruby/ir/representations/BasicBlock;)Z
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=10, args_size=3
start local 0 start local 1 start local 2 0: aload 0
aload 1
invokevirtual org.jruby.ir.representations.CFG.getRescuerBBFor:(Lorg/jruby/ir/representations/BasicBlock;)Lorg/jruby/ir/representations/BasicBlock;
astore 3
start local 3 1: aload 0
aload 2
invokevirtual org.jruby.ir.representations.CFG.getRescuerBBFor:(Lorg/jruby/ir/representations/BasicBlock;)Lorg/jruby/ir/representations/BasicBlock;
astore 4
start local 4 2: aload 3
aload 4
if_acmpeq 3
aload 1
invokevirtual org.jruby.ir.representations.BasicBlock.isEmpty:()Z
ifne 3
aload 2
invokevirtual org.jruby.ir.representations.BasicBlock.isEmpty:()Z
ifeq 24
3: StackMap locals: org.jruby.ir.representations.BasicBlock org.jruby.ir.representations.BasicBlock
StackMap stack:
aload 1
invokevirtual org.jruby.ir.representations.BasicBlock.getLastInstr:()Lorg/jruby/ir/instructions/Instr;
astore 5
start local 5 4: aload 5
instanceof org.jruby.ir.instructions.JumpInstr
ifeq 5
aload 1
aload 5
invokevirtual org.jruby.ir.representations.BasicBlock.removeInstr:(Lorg/jruby/ir/instructions/Instr;)Z
pop
5: StackMap locals: org.jruby.ir.instructions.Instr
StackMap stack:
aload 1
aload 2
invokevirtual org.jruby.ir.representations.BasicBlock.swallowBB:(Lorg/jruby/ir/representations/BasicBlock;)V
6: aload 0
aload 1
aload 2
invokevirtual org.jruby.ir.representations.CFG.removeEdge:(Lorg/jruby/ir/representations/BasicBlock;Lorg/jruby/ir/representations/BasicBlock;)V
7: aload 0
aload 2
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 10
StackMap locals: org.jruby.ir.representations.CFG org.jruby.ir.representations.BasicBlock org.jruby.ir.representations.BasicBlock org.jruby.ir.representations.BasicBlock org.jruby.ir.representations.BasicBlock org.jruby.ir.instructions.Instr top java.util.Iterator
StackMap stack:
8: aload 7
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.jruby.dirgra.Edge
astore 6
start local 6 9: aload 0
aload 1
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
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 6 10: StackMap locals:
StackMap stack:
aload 7
invokeinterface java.util.Iterator.hasNext:()Z
ifne 8
11: aload 0
aload 2
invokevirtual org.jruby.ir.representations.CFG.getIncomingEdges:(Lorg/jruby/ir/representations/BasicBlock;)Ljava/lang/Iterable;
invokeinterface java.lang.Iterable.iterator:()Ljava/util/Iterator;
astore 7
goto 19
StackMap locals:
StackMap stack:
12: aload 7
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.jruby.dirgra.Edge
astore 6
start local 6 13: aload 6
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 8
start local 8 14: aload 0
aload 8
aload 2
invokevirtual org.jruby.ir.representations.CFG.removeEdge:(Lorg/jruby/ir/representations/BasicBlock;Lorg/jruby/ir/representations/BasicBlock;)V
15: aload 0
aload 8
aload 1
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
16: aload 8
invokevirtual org.jruby.ir.representations.BasicBlock.getLastInstr:()Lorg/jruby/ir/instructions/Instr;
astore 9
start local 9 17: aload 9
instanceof org.jruby.ir.instructions.JumpTargetInstr
ifeq 19
18: aload 9
checkcast org.jruby.ir.instructions.JumpTargetInstr
aload 1
invokevirtual org.jruby.ir.representations.BasicBlock.getLabel:()Lorg/jruby/ir/operands/Label;
invokeinterface org.jruby.ir.instructions.JumpTargetInstr.setJumpTarget:(Lorg/jruby/ir/operands/Label;)V
end local 9 end local 8 end local 6 19: StackMap locals:
StackMap stack:
aload 7
invokeinterface java.util.Iterator.hasNext:()Z
ifne 12
20: aload 0
aload 2
invokevirtual org.jruby.ir.representations.CFG.removeBB:(Lorg/jruby/ir/representations/BasicBlock;)V
21: aload 3
ifnonnull 23
aload 4
ifnull 23
22: aload 0
aload 1
aload 4
invokevirtual org.jruby.ir.representations.CFG.setRescuerBB:(Lorg/jruby/ir/representations/BasicBlock;Lorg/jruby/ir/representations/BasicBlock;)V
23: StackMap locals: org.jruby.ir.representations.CFG org.jruby.ir.representations.BasicBlock org.jruby.ir.representations.BasicBlock org.jruby.ir.representations.BasicBlock org.jruby.ir.representations.BasicBlock org.jruby.ir.instructions.Instr
StackMap stack:
iconst_1
ireturn
end local 5 24: StackMap locals:
StackMap stack:
iconst_0
ireturn
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 25 0 this Lorg/jruby/ir/representations/CFG;
0 25 1 a Lorg/jruby/ir/representations/BasicBlock;
0 25 2 b Lorg/jruby/ir/representations/BasicBlock;
1 25 3 aR Lorg/jruby/ir/representations/BasicBlock;
2 25 4 bR Lorg/jruby/ir/representations/BasicBlock;
4 24 5 lastInstr Lorg/jruby/ir/instructions/Instr;
9 10 6 e Lorg/jruby/dirgra/Edge<Lorg/jruby/ir/representations/BasicBlock;>;
13 19 6 e Lorg/jruby/dirgra/Edge<Lorg/jruby/ir/representations/BasicBlock;>;
14 19 8 fixupBB Lorg/jruby/ir/representations/BasicBlock;
17 19 9 fixupLastInstr Lorg/jruby/ir/instructions/Instr;
MethodParameters:
Name Flags
a
b
public void removeBB(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 1
aload 0
getfield org.jruby.ir.representations.CFG.globalEnsureBB:Lorg/jruby/ir/representations/BasicBlock;
if_acmpne 1
aload 0
aconst_null
putfield org.jruby.ir.representations.CFG.globalEnsureBB:Lorg/jruby/ir/representations/BasicBlock;
1: StackMap locals:
StackMap stack:
aload 0
getfield org.jruby.ir.representations.CFG.graph:Lorg/jruby/dirgra/DirectedGraph;
aload 1
invokevirtual org.jruby.dirgra.DirectedGraph.removeVertexFor:(Lorg/jruby/dirgra/ExplicitVertexID;)V
2: aload 0
getfield org.jruby.ir.representations.CFG.bbMap:Ljava/util/Map;
aload 1
invokevirtual org.jruby.ir.representations.BasicBlock.getLabel:()Lorg/jruby/ir/operands/Label;
invokeinterface java.util.Map.remove:(Ljava/lang/Object;)Ljava/lang/Object;
pop
3: aload 0
getfield org.jruby.ir.representations.CFG.rescuerMap:Ljava/util/Map;
aload 1
invokeinterface java.util.Map.remove:(Ljava/lang/Object;)Ljava/lang/Object;
pop
4: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lorg/jruby/ir/representations/CFG;
0 5 1 b Lorg/jruby/ir/representations/BasicBlock;
MethodParameters:
Name Flags
b
private void removeNestedScopesFromBB(org.jruby.ir.representations.BasicBlock);
descriptor: (Lorg/jruby/ir/representations/BasicBlock;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=8, args_size=2
start local 0 start local 1 0: aload 1
invokevirtual org.jruby.ir.representations.BasicBlock.getInstrs:()Ljava/util/List;
invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
astore 3
goto 9
StackMap locals: org.jruby.ir.representations.CFG org.jruby.ir.representations.BasicBlock top java.util.Iterator
StackMap stack:
1: aload 3
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.jruby.ir.instructions.Instr
astore 2
start local 2 2: aload 2
invokevirtual org.jruby.ir.instructions.Instr.getOperands:()[Lorg/jruby/ir/operands/Operand;
dup
astore 7
arraylength
istore 6
iconst_0
istore 5
goto 8
StackMap locals: org.jruby.ir.representations.CFG org.jruby.ir.representations.BasicBlock org.jruby.ir.instructions.Instr java.util.Iterator top int int org.jruby.ir.operands.Operand[]
StackMap stack:
3: aload 7
iload 5
aaload
astore 4
start local 4 4: aload 4
instanceof org.jruby.ir.operands.WrappedIRClosure
ifeq 7
5: aload 0
getfield org.jruby.ir.representations.CFG.scope:Lorg/jruby/ir/IRScope;
aload 4
checkcast org.jruby.ir.operands.WrappedIRClosure
invokevirtual org.jruby.ir.operands.WrappedIRClosure.getClosure:()Lorg/jruby/ir/IRClosure;
invokevirtual org.jruby.ir.IRScope.removeClosure:(Lorg/jruby/ir/IRClosure;)V
6: goto 9
end local 4 7: StackMap locals:
StackMap stack:
iinc 5 1
StackMap locals:
StackMap stack:
8: iload 5
iload 6
if_icmplt 3
end local 2 9: StackMap locals: org.jruby.ir.representations.CFG org.jruby.ir.representations.BasicBlock top java.util.Iterator
StackMap stack:
aload 3
invokeinterface java.util.Iterator.hasNext:()Z
ifne 1
10: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 11 0 this Lorg/jruby/ir/representations/CFG;
0 11 1 bb Lorg/jruby/ir/representations/BasicBlock;
2 9 2 instr Lorg/jruby/ir/instructions/Instr;
4 7 4 oper Lorg/jruby/ir/operands/Operand;
MethodParameters:
Name Flags
bb
public void collapseStraightLineBBs();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=8, args_size=1
start local 0 0: new java.util.ArrayList
dup
invokespecial java.util.ArrayList.<init>:()V
astore 1
start local 1 1: aload 0
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.representations.CFG java.util.List 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 1
aload 2
invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
pop
end local 2 StackMap locals:
StackMap stack:
4: aload 3
invokeinterface java.util.Iterator.hasNext:()Z
ifne 2
5: new java.util.HashSet
dup
invokespecial java.util.HashSet.<init>:()V
astore 2
start local 2 6: aload 1
invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
astore 4
goto 16
StackMap locals: org.jruby.ir.representations.CFG java.util.List java.util.Set top java.util.Iterator
StackMap stack:
7: aload 4
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.jruby.ir.representations.BasicBlock
astore 3
start local 3 8: aload 2
aload 3
invokeinterface java.util.Set.contains:(Ljava/lang/Object;)Z
ifne 16
aload 0
aload 3
invokevirtual org.jruby.ir.representations.CFG.outDegree:(Lorg/jruby/ir/representations/BasicBlock;)I
iconst_1
if_icmpne 16
9: aload 0
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 6
goto 15
StackMap locals: org.jruby.ir.representations.CFG java.util.List java.util.Set org.jruby.ir.representations.BasicBlock java.util.Iterator top java.util.Iterator
StackMap stack:
10: aload 6
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.jruby.dirgra.Edge
astore 5
start local 5 11: 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
astore 7
start local 7 12: aload 5
invokevirtual org.jruby.dirgra.Edge.getType:()Ljava/lang/Object;
getstatic org.jruby.ir.representations.CFG$EdgeType.EXCEPTION:Lorg/jruby/ir/representations/CFG$EdgeType;
if_acmpeq 15
aload 0
aload 7
invokevirtual org.jruby.ir.representations.CFG.inDegree:(Lorg/jruby/ir/representations/BasicBlock;)I
iconst_1
if_icmpeq 13
aload 3
invokevirtual org.jruby.ir.representations.BasicBlock.isEmpty:()Z
ifeq 15
StackMap locals: org.jruby.ir.representations.CFG java.util.List java.util.Set org.jruby.ir.representations.BasicBlock java.util.Iterator org.jruby.dirgra.Edge java.util.Iterator org.jruby.ir.representations.BasicBlock
StackMap stack:
13: aload 0
aload 3
aload 7
invokevirtual org.jruby.ir.representations.CFG.mergeBBs:(Lorg/jruby/ir/representations/BasicBlock;Lorg/jruby/ir/representations/BasicBlock;)Z
ifeq 15
14: aload 2
aload 7
invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
pop
end local 7 end local 5 15: StackMap locals: org.jruby.ir.representations.CFG java.util.List java.util.Set org.jruby.ir.representations.BasicBlock java.util.Iterator top java.util.Iterator
StackMap stack:
aload 6
invokeinterface java.util.Iterator.hasNext:()Z
ifne 10
end local 3 16: StackMap locals: org.jruby.ir.representations.CFG java.util.List java.util.Set top java.util.Iterator
StackMap stack:
aload 4
invokeinterface java.util.Iterator.hasNext:()Z
ifne 7
17: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 18 0 this Lorg/jruby/ir/representations/CFG;
1 18 1 cfgBBs Ljava/util/List<Lorg/jruby/ir/representations/BasicBlock;>;
3 4 2 b Lorg/jruby/ir/representations/BasicBlock;
6 18 2 mergedBBs Ljava/util/Set<Lorg/jruby/ir/representations/BasicBlock;>;
8 16 3 b Lorg/jruby/ir/representations/BasicBlock;
11 15 5 e Lorg/jruby/dirgra/Edge<Lorg/jruby/ir/representations/BasicBlock;>;
12 15 7 outB Lorg/jruby/ir/representations/BasicBlock;
public void optimize(java.util.List<org.jruby.ir.representations.BasicBlock>);
descriptor: (Ljava/util/List;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=15, args_size=2
start local 0 start local 1 0: new java.util.ArrayList
dup
invokespecial java.util.ArrayList.<init>:()V
astore 2
start local 2 1: aload 1
invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
astore 4
goto 26
StackMap locals: org.jruby.ir.representations.CFG java.util.List java.util.List 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.getInstrs:()Ljava/util/List;
astore 5
start local 5 4: aload 5
iconst_0
invokeinterface java.util.List.get:(I)Ljava/lang/Object;
checkcast org.jruby.ir.instructions.Instr
astore 6
start local 6 5: aload 6
instanceof org.jruby.ir.instructions.ReturnInstr
ifeq 26
6: aload 6
checkcast org.jruby.ir.instructions.ReturnInstr
invokevirtual org.jruby.ir.instructions.ReturnInstr.getReturnValue:()Lorg/jruby/ir/operands/Operand;
astore 7
start local 7 7: aload 7
instanceof org.jruby.ir.operands.Variable
ifeq 26
8: aload 0
aload 3
invokevirtual org.jruby.ir.representations.CFG.getIncomingEdges:(Lorg/jruby/ir/representations/BasicBlock;)Ljava/lang/Iterable;
invokeinterface java.lang.Iterable.iterator:()Ljava/util/Iterator;
astore 9
goto 25
StackMap locals: org.jruby.ir.representations.CFG java.util.List java.util.List org.jruby.ir.representations.BasicBlock java.util.Iterator java.util.List org.jruby.ir.instructions.Instr org.jruby.ir.operands.Operand top java.util.Iterator
StackMap stack:
9: aload 9
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.jruby.dirgra.Edge
astore 8
start local 8 10: aload 8
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 10
start local 10 11: aload 10
invokevirtual org.jruby.ir.representations.BasicBlock.getInstrs:()Ljava/util/List;
astore 11
start local 11 12: aload 11
invokeinterface java.util.List.size:()I
istore 12
start local 12 13: iload 12
ifne 14
goto 25
14: StackMap locals: org.jruby.ir.representations.CFG java.util.List java.util.List org.jruby.ir.representations.BasicBlock java.util.Iterator java.util.List org.jruby.ir.instructions.Instr org.jruby.ir.operands.Operand org.jruby.dirgra.Edge java.util.Iterator org.jruby.ir.representations.BasicBlock java.util.List int
StackMap stack:
aconst_null
astore 13
start local 13 15: aload 11
iload 12
iconst_1
isub
invokeinterface java.util.List.get:(I)Ljava/lang/Object;
checkcast org.jruby.ir.instructions.Instr
astore 14
start local 14 16: aload 14
instanceof org.jruby.ir.instructions.JumpInstr
ifeq 19
iload 12
iconst_2
if_icmple 19
17: aload 14
astore 13
18: aload 11
iload 12
iconst_2
isub
invokeinterface java.util.List.get:(I)Ljava/lang/Object;
checkcast org.jruby.ir.instructions.Instr
astore 14
19: StackMap locals: org.jruby.ir.instructions.Instr org.jruby.ir.instructions.Instr
StackMap stack:
aload 14
instanceof org.jruby.ir.instructions.CopyInstr
ifeq 25
aload 14
checkcast org.jruby.ir.instructions.CopyInstr
invokevirtual org.jruby.ir.instructions.CopyInstr.getResult:()Lorg/jruby/ir/operands/Variable;
aload 7
invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
ifeq 25
20: aload 11
iload 12
iconst_1
isub
new org.jruby.ir.instructions.ReturnInstr
dup
aload 14
checkcast org.jruby.ir.instructions.CopyInstr
invokevirtual org.jruby.ir.instructions.CopyInstr.getSource:()Lorg/jruby/ir/operands/Operand;
invokespecial org.jruby.ir.instructions.ReturnInstr.<init>:(Lorg/jruby/ir/operands/Operand;)V
invokeinterface java.util.List.set:(ILjava/lang/Object;)Ljava/lang/Object;
pop
21: aload 2
aload 8
invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
pop
22: aload 0
aload 10
aload 0
getfield org.jruby.ir.representations.CFG.exitBB: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
23: aload 13
ifnull 25
24: aload 11
aload 13
invokeinterface java.util.List.remove:(Ljava/lang/Object;)Z
pop
end local 14 end local 13 end local 12 end local 11 end local 10 end local 8 25: StackMap locals: org.jruby.ir.representations.CFG java.util.List java.util.List org.jruby.ir.representations.BasicBlock java.util.Iterator java.util.List org.jruby.ir.instructions.Instr org.jruby.ir.operands.Operand top java.util.Iterator
StackMap stack:
aload 9
invokeinterface java.util.Iterator.hasNext:()Z
ifne 9
end local 7 end local 6 end local 5 end local 3 26: StackMap locals: org.jruby.ir.representations.CFG java.util.List java.util.List top java.util.Iterator
StackMap stack:
aload 4
invokeinterface java.util.Iterator.hasNext:()Z
ifne 2
27: aload 2
invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
astore 4
goto 30
StackMap locals:
StackMap stack:
28: aload 4
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.jruby.dirgra.Edge
astore 3
start local 3 29: aload 0
getfield org.jruby.ir.representations.CFG.graph:Lorg/jruby/dirgra/DirectedGraph;
aload 3
invokevirtual org.jruby.dirgra.DirectedGraph.removeEdge:(Lorg/jruby/dirgra/Edge;)V
end local 3 30: StackMap locals:
StackMap stack:
aload 4
invokeinterface java.util.Iterator.hasNext:()Z
ifne 28
31: aload 0
aload 0
getfield org.jruby.ir.representations.CFG.graph:Lorg/jruby/dirgra/DirectedGraph;
invokevirtual org.jruby.ir.representations.CFG.deleteOrphanedBlocks:(Lorg/jruby/dirgra/DirectedGraph;)V
32: aload 0
invokevirtual org.jruby.ir.representations.CFG.collapseStraightLineBBs:()V
33: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 34 0 this Lorg/jruby/ir/representations/CFG;
0 34 1 returnBBs Ljava/util/List<Lorg/jruby/ir/representations/BasicBlock;>;
1 34 2 toRemove Ljava/util/List<Lorg/jruby/dirgra/Edge<Lorg/jruby/ir/representations/BasicBlock;>;>;
3 26 3 retBB Lorg/jruby/ir/representations/BasicBlock;
4 26 5 rbInstrs Ljava/util/List<Lorg/jruby/ir/instructions/Instr;>;
5 26 6 first Lorg/jruby/ir/instructions/Instr;
7 26 7 rv Lorg/jruby/ir/operands/Operand;
10 25 8 e Lorg/jruby/dirgra/Edge<Lorg/jruby/ir/representations/BasicBlock;>;
11 25 10 srcBB Lorg/jruby/ir/representations/BasicBlock;
12 25 11 srcInstrs Ljava/util/List<Lorg/jruby/ir/instructions/Instr;>;
13 25 12 n I
15 25 13 jump Lorg/jruby/ir/instructions/Instr;
16 25 14 last Lorg/jruby/ir/instructions/Instr;
29 30 3 edge Lorg/jruby/dirgra/Edge<Lorg/jruby/ir/representations/BasicBlock;>;
Signature: (Ljava/util/List<Lorg/jruby/ir/representations/BasicBlock;>;)V
MethodParameters:
Name Flags
returnBBs
public java.lang.String toStringGraph();
descriptor: ()Ljava/lang/String;
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield org.jruby.ir.representations.CFG.graph:Lorg/jruby/dirgra/DirectedGraph;
invokevirtual org.jruby.dirgra.DirectedGraph.toString:()Ljava/lang/String;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/jruby/ir/representations/CFG;
public java.lang.String toStringInstrs();
descriptor: ()Ljava/lang/String;
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=5, args_size=1
start local 0 0: new java.lang.StringBuilder
dup
invokespecial java.lang.StringBuilder.<init>:()V
astore 1
start local 1 1: aload 0
invokevirtual org.jruby.ir.representations.CFG.getSortedBasicBlocks:()Ljava/util/Collection;
invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
astore 3
goto 4
StackMap locals: org.jruby.ir.representations.CFG java.lang.StringBuilder 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 1
aload 2
invokevirtual org.jruby.ir.representations.BasicBlock.toStringInstrs:()Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
pop
end local 2 4: StackMap locals:
StackMap stack:
aload 3
invokeinterface java.util.Iterator.hasNext:()Z
ifne 2
5: aload 1
ldc "\n\n------ Rescue block map ------\n"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
pop
6: new java.util.ArrayList
dup
aload 0
getfield org.jruby.ir.representations.CFG.rescuerMap:Ljava/util/Map;
invokeinterface java.util.Map.keySet:()Ljava/util/Set;
invokespecial java.util.ArrayList.<init>:(Ljava/util/Collection;)V
astore 2
start local 2 7: aload 2
invokestatic java.util.Collections.sort:(Ljava/util/List;)V
8: aload 2
invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
astore 4
goto 11
StackMap locals: org.jruby.ir.representations.CFG java.lang.StringBuilder java.util.List top java.util.Iterator
StackMap stack:
9: aload 4
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.jruby.ir.representations.BasicBlock
astore 3
start local 3 10: aload 1
ldc "BB "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 3
invokevirtual org.jruby.ir.representations.BasicBlock.getID:()I
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
ldc " --> BB "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 0
getfield org.jruby.ir.representations.CFG.rescuerMap:Ljava/util/Map;
aload 3
invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast org.jruby.ir.representations.BasicBlock
invokevirtual org.jruby.ir.representations.BasicBlock.getID:()I
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
ldc "\n"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)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/CFG;
1 13 1 buf Ljava/lang/StringBuilder;
3 4 2 b Lorg/jruby/ir/representations/BasicBlock;
7 13 2 e Ljava/util/List<Lorg/jruby/ir/representations/BasicBlock;>;
10 11 3 bb Lorg/jruby/ir/representations/BasicBlock;
public void removeEdge(org.jruby.ir.representations.BasicBlock, org.jruby.ir.representations.BasicBlock);
descriptor: (Lorg/jruby/ir/representations/BasicBlock;Lorg/jruby/ir/representations/BasicBlock;)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.CFG.graph:Lorg/jruby/dirgra/DirectedGraph;
aload 1
aload 2
invokevirtual org.jruby.dirgra.DirectedGraph.removeEdge:(Lorg/jruby/dirgra/ExplicitVertexID;Lorg/jruby/dirgra/ExplicitVertexID;)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/CFG;
0 2 1 a Lorg/jruby/ir/representations/BasicBlock;
0 2 2 b Lorg/jruby/ir/representations/BasicBlock;
MethodParameters:
Name Flags
a
b
private java.util.LinkedList<org.jruby.ir.representations.BasicBlock> buildPostOrderList();
descriptor: ()Ljava/util/LinkedList;
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=10, args_size=1
start local 0 0: aload 0
invokevirtual org.jruby.ir.representations.CFG.getEntryBB:()Lorg/jruby/ir/representations/BasicBlock;
astore 1
start local 1 1: new java.util.LinkedList
dup
invokespecial java.util.LinkedList.<init>:()V
astore 2
start local 2 2: new java.util.Stack
dup
invokespecial java.util.Stack.<init>:()V
astore 3
start local 3 3: iconst_1
aload 0
invokevirtual org.jruby.ir.representations.CFG.getMaxNodeID:()I
iadd
newarray 4
astore 4
start local 4 4: aload 3
aload 1
invokevirtual java.util.Stack.push:(Ljava/lang/Object;)Ljava/lang/Object;
pop
5: aload 4
aload 1
invokevirtual org.jruby.ir.representations.BasicBlock.getID:()I
iconst_1
bastore
6: goto 23
7: StackMap locals: org.jruby.ir.representations.CFG org.jruby.ir.representations.BasicBlock java.util.LinkedList java.util.Stack boolean[]
StackMap stack:
aload 3
invokevirtual java.util.Stack.peek:()Ljava/lang/Object;
checkcast org.jruby.ir.representations.BasicBlock
astore 5
start local 5 8: iconst_1
istore 6
start local 6 9: aload 0
aload 5
invokevirtual org.jruby.ir.representations.CFG.getOutgoingDestinations:(Lorg/jruby/ir/representations/BasicBlock;)Ljava/lang/Iterable;
invokeinterface java.lang.Iterable.iterator:()Ljava/util/Iterator;
astore 8
goto 19
StackMap locals: org.jruby.ir.representations.CFG org.jruby.ir.representations.BasicBlock java.util.LinkedList java.util.Stack boolean[] org.jruby.ir.representations.BasicBlock int top java.util.Iterator
StackMap stack:
10: aload 8
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.jruby.ir.representations.BasicBlock
astore 7
start local 7 11: aload 7
invokevirtual org.jruby.ir.representations.BasicBlock.getID:()I
istore 9
start local 9 12: aload 4
iload 9
baload
ifne 19
13: iconst_0
istore 6
14: aload 0
getfield org.jruby.ir.representations.CFG.graph:Lorg/jruby/dirgra/DirectedGraph;
aload 7
invokevirtual org.jruby.dirgra.DirectedGraph.findVertexFor:(Lorg/jruby/dirgra/ExplicitVertexID;)Lorg/jruby/dirgra/Vertex;
invokevirtual org.jruby.dirgra.Vertex.outDegree:()I
ifne 17
15: aload 2
aload 7
invokevirtual java.util.LinkedList.add:(Ljava/lang/Object;)Z
pop
16: goto 18
17: StackMap locals: org.jruby.ir.representations.CFG org.jruby.ir.representations.BasicBlock java.util.LinkedList java.util.Stack boolean[] org.jruby.ir.representations.BasicBlock int org.jruby.ir.representations.BasicBlock java.util.Iterator int
StackMap stack:
aload 3
aload 7
invokevirtual java.util.Stack.push:(Ljava/lang/Object;)Ljava/lang/Object;
pop
18: StackMap locals:
StackMap stack:
aload 4
iload 9
iconst_1
bastore
end local 9 end local 7 19: StackMap locals: org.jruby.ir.representations.CFG org.jruby.ir.representations.BasicBlock java.util.LinkedList java.util.Stack boolean[] org.jruby.ir.representations.BasicBlock int top java.util.Iterator
StackMap stack:
aload 8
invokeinterface java.util.Iterator.hasNext:()Z
ifne 10
20: iload 6
ifeq 23
21: aload 3
invokevirtual java.util.Stack.pop:()Ljava/lang/Object;
pop
22: aload 2
aload 5
invokevirtual java.util.LinkedList.add:(Ljava/lang/Object;)Z
pop
end local 6 end local 5 23: StackMap locals: org.jruby.ir.representations.CFG org.jruby.ir.representations.BasicBlock java.util.LinkedList java.util.Stack boolean[]
StackMap stack:
aload 3
invokevirtual java.util.Stack.empty:()Z
ifeq 7
24: aload 0
invokevirtual org.jruby.ir.representations.CFG.getBasicBlocks:()Ljava/util/Collection;
invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
astore 6
goto 29
StackMap locals: org.jruby.ir.representations.CFG org.jruby.ir.representations.BasicBlock java.util.LinkedList java.util.Stack boolean[] top java.util.Iterator
StackMap stack:
25: aload 6
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.jruby.ir.representations.BasicBlock
astore 5
start local 5 26: aload 4
aload 5
invokevirtual org.jruby.ir.representations.BasicBlock.getID:()I
baload
ifne 29
27: aload 0
new java.lang.StringBuilder
dup
ldc "BB "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 5
invokevirtual org.jruby.ir.representations.BasicBlock.getID:()I
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
ldc " missing from po list!"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokevirtual org.jruby.ir.representations.CFG.printError:(Ljava/lang/String;)V
28: goto 30
end local 5 29: StackMap locals:
StackMap stack:
aload 6
invokeinterface java.util.Iterator.hasNext:()Z
ifne 25
30: StackMap locals: org.jruby.ir.representations.CFG org.jruby.ir.representations.BasicBlock java.util.LinkedList java.util.Stack boolean[]
StackMap stack:
aload 2
areturn
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 31 0 this Lorg/jruby/ir/representations/CFG;
1 31 1 root Lorg/jruby/ir/representations/BasicBlock;
2 31 2 list Ljava/util/LinkedList<Lorg/jruby/ir/representations/BasicBlock;>;
3 31 3 stack Ljava/util/Stack<Lorg/jruby/ir/representations/BasicBlock;>;
4 31 4 visited [Z
8 23 5 b Lorg/jruby/ir/representations/BasicBlock;
9 23 6 allChildrenVisited Z
11 19 7 dst Lorg/jruby/ir/representations/BasicBlock;
12 19 9 dstID I
26 29 5 b Lorg/jruby/ir/representations/BasicBlock;
Signature: ()Ljava/util/LinkedList<Lorg/jruby/ir/representations/BasicBlock;>;
public org.jruby.ir.representations.CFG clone(org.jruby.ir.transformations.inlining.CloneInfo, org.jruby.ir.IRScope);
descriptor: (Lorg/jruby/ir/transformations/inlining/CloneInfo;Lorg/jruby/ir/IRScope;)Lorg/jruby/ir/representations/CFG;
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=11, args_size=3
start local 0 start local 1 start local 2 0: new org.jruby.ir.representations.CFG
dup
aload 2
invokespecial org.jruby.ir.representations.CFG.<init>:(Lorg/jruby/ir/IRScope;)V
astore 3
start local 3 1: new java.util.HashMap
dup
invokespecial java.util.HashMap.<init>:()V
astore 4
start local 4 2: aload 0
invokevirtual org.jruby.ir.representations.CFG.getBasicBlocks:()Ljava/util/Collection;
invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
astore 6
goto 7
StackMap locals: org.jruby.ir.representations.CFG org.jruby.ir.transformations.inlining.CloneInfo org.jruby.ir.IRScope org.jruby.ir.representations.CFG java.util.Map top java.util.Iterator
StackMap stack:
3: aload 6
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.jruby.ir.representations.BasicBlock
astore 5
start local 5 4: aload 5
aload 1
aload 3
invokevirtual org.jruby.ir.representations.BasicBlock.clone:(Lorg/jruby/ir/transformations/inlining/CloneInfo;Lorg/jruby/ir/representations/CFG;)Lorg/jruby/ir/representations/BasicBlock;
astore 7
start local 7 5: aload 3
aload 7
invokevirtual org.jruby.ir.representations.CFG.addBasicBlock:(Lorg/jruby/ir/representations/BasicBlock;)V
6: aload 4
aload 5
aload 7
invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
end local 7 end local 5 7: StackMap locals:
StackMap stack:
aload 6
invokeinterface java.util.Iterator.hasNext:()Z
ifne 3
8: aload 0
invokevirtual org.jruby.ir.representations.CFG.getBasicBlocks:()Ljava/util/Collection;
invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
astore 6
goto 16
StackMap locals:
StackMap stack:
9: aload 6
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.jruby.ir.representations.BasicBlock
astore 5
start local 5 10: aload 4
aload 5
invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast org.jruby.ir.representations.BasicBlock
astore 7
start local 7 11: aload 0
aload 5
invokevirtual org.jruby.ir.representations.CFG.getOutgoingEdges:(Lorg/jruby/ir/representations/BasicBlock;)Ljava/util/Collection;
invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
astore 9
goto 15
StackMap locals: org.jruby.ir.representations.CFG org.jruby.ir.transformations.inlining.CloneInfo org.jruby.ir.IRScope org.jruby.ir.representations.CFG java.util.Map org.jruby.ir.representations.BasicBlock java.util.Iterator org.jruby.ir.representations.BasicBlock top java.util.Iterator
StackMap stack:
12: aload 9
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.jruby.dirgra.Edge
astore 8
start local 8 13: aload 4
aload 8
invokevirtual org.jruby.dirgra.Edge.getDestination:()Lorg/jruby/dirgra/Vertex;
invokevirtual org.jruby.dirgra.Vertex.getData:()Lorg/jruby/dirgra/ExplicitVertexID;
invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast org.jruby.ir.representations.BasicBlock
astore 10
start local 10 14: aload 3
aload 7
aload 10
aload 8
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 10 end local 8 15: StackMap locals:
StackMap stack:
aload 9
invokeinterface java.util.Iterator.hasNext:()Z
ifne 12
end local 7 end local 5 16: StackMap locals: org.jruby.ir.representations.CFG org.jruby.ir.transformations.inlining.CloneInfo org.jruby.ir.IRScope org.jruby.ir.representations.CFG java.util.Map top java.util.Iterator
StackMap stack:
aload 6
invokeinterface java.util.Iterator.hasNext:()Z
ifne 9
17: aload 0
getfield org.jruby.ir.representations.CFG.rescuerMap:Ljava/util/Map;
invokeinterface java.util.Map.keySet:()Ljava/util/Set;
invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
astore 6
goto 20
StackMap locals:
StackMap stack:
18: aload 6
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.jruby.ir.representations.BasicBlock
astore 5
start local 5 19: aload 3
aload 4
aload 5
invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast org.jruby.ir.representations.BasicBlock
aload 4
aload 0
getfield org.jruby.ir.representations.CFG.rescuerMap:Ljava/util/Map;
aload 5
invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast org.jruby.ir.representations.BasicBlock
invokevirtual org.jruby.ir.representations.CFG.setRescuerBB:(Lorg/jruby/ir/representations/BasicBlock;Lorg/jruby/ir/representations/BasicBlock;)V
end local 5 20: StackMap locals:
StackMap stack:
aload 6
invokeinterface java.util.Iterator.hasNext:()Z
ifne 18
21: aload 3
aload 4
aload 0
getfield org.jruby.ir.representations.CFG.entryBB:Lorg/jruby/ir/representations/BasicBlock;
invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast org.jruby.ir.representations.BasicBlock
putfield org.jruby.ir.representations.CFG.entryBB:Lorg/jruby/ir/representations/BasicBlock;
22: aload 3
aload 4
aload 0
getfield org.jruby.ir.representations.CFG.exitBB:Lorg/jruby/ir/representations/BasicBlock;
invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast org.jruby.ir.representations.BasicBlock
putfield org.jruby.ir.representations.CFG.exitBB:Lorg/jruby/ir/representations/BasicBlock;
23: aload 3
aload 4
aload 0
getfield org.jruby.ir.representations.CFG.globalEnsureBB:Lorg/jruby/ir/representations/BasicBlock;
invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast org.jruby.ir.representations.BasicBlock
putfield org.jruby.ir.representations.CFG.globalEnsureBB:Lorg/jruby/ir/representations/BasicBlock;
24: 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 25 0 this Lorg/jruby/ir/representations/CFG;
0 25 1 info Lorg/jruby/ir/transformations/inlining/CloneInfo;
0 25 2 clonedScope Lorg/jruby/ir/IRScope;
1 25 3 newCFG Lorg/jruby/ir/representations/CFG;
2 25 4 cloneBBMap Ljava/util/Map<Lorg/jruby/ir/representations/BasicBlock;Lorg/jruby/ir/representations/BasicBlock;>;
4 7 5 bb Lorg/jruby/ir/representations/BasicBlock;
5 7 7 newBB Lorg/jruby/ir/representations/BasicBlock;
10 16 5 bb Lorg/jruby/ir/representations/BasicBlock;
11 16 7 newSource Lorg/jruby/ir/representations/BasicBlock;
13 15 8 edge Lorg/jruby/dirgra/Edge<Lorg/jruby/ir/representations/BasicBlock;>;
14 15 10 newDestination Lorg/jruby/ir/representations/BasicBlock;
19 20 5 bb Lorg/jruby/ir/representations/BasicBlock;
MethodParameters:
Name Flags
info
clonedScope
private void printError(java.lang.String);
descriptor: (Ljava/lang/String;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=2, args_size=2
start local 0 start local 1 0: getstatic org.jruby.ir.representations.CFG.LOG:Lorg/jruby/util/log/Logger;
new java.lang.StringBuilder
dup
aload 1
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
ldc "\nGraph:\n"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 0
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
ldc "\nInstructions:\n"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 0
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.error:(Ljava/lang/String;[Ljava/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/CFG;
0 2 1 message Ljava/lang/String;
MethodParameters:
Name Flags
message
}
SourceFile: "CFG.java"
NestMembers:
org.jruby.ir.representations.CFG$EdgeType
InnerClasses:
public final EdgeType = org.jruby.ir.representations.CFG$EdgeType of org.jruby.ir.representations.CFG