public class org.jruby.ir.passes.DominatorTreeBuilder extends org.jruby.ir.passes.CompilerPass
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: org.jruby.ir.passes.DominatorTreeBuilder
super_class: org.jruby.ir.passes.CompilerPass
{
private static int NULL;
descriptor: I
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
private static final org.jruby.util.log.Logger LOG;
descriptor: Lorg/jruby/util/log/Logger;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
static final boolean $assertionsDisabled;
descriptor: Z
flags: (0x1018) ACC_STATIC, ACC_FINAL, ACC_SYNTHETIC
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=1, locals=0, args_size=0
0: ldc Lorg/jruby/ir/passes/DominatorTreeBuilder;
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.passes.DominatorTreeBuilder.$assertionsDisabled:Z
3: iconst_m1
putstatic org.jruby.ir.passes.DominatorTreeBuilder.NULL:I
4: ldc Lorg/jruby/ir/passes/DominatorTreeBuilder;
invokestatic org.jruby.util.log.LoggerFactory.getLogger:(Ljava/lang/Class;)Lorg/jruby/util/log/Logger;
putstatic org.jruby.ir.passes.DominatorTreeBuilder.LOG:Lorg/jruby/util/log/Logger;
return
LocalVariableTable:
Start End Slot Name Signature
public void <init>();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
invokespecial org.jruby.ir.passes.CompilerPass.<init>:()V
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/jruby/ir/passes/DominatorTreeBuilder;
public java.lang.String getLabel();
descriptor: ()Ljava/lang/String;
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: ldc "Build Dominator Tree"
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/jruby/ir/passes/DominatorTreeBuilder;
public java.lang.Object execute(org.jruby.ir.IRScope, java.lang.Object[]);
descriptor: (Lorg/jruby/ir/IRScope;[Ljava/lang/Object;)Ljava/lang/Object;
flags: (0x0081) ACC_PUBLIC, ACC_VARARGS
Code:
stack=6, locals=4, args_size=3
start local 0 start local 1 start local 2 0: aload 2
iconst_0
aaload
checkcast org.jruby.ir.representations.CFG
astore 3
start local 3 1: aload 0
aload 3
aload 3
invokevirtual org.jruby.ir.representations.CFG.postOrderList:()Ljava/util/LinkedList;
aload 3
invokevirtual org.jruby.ir.representations.CFG.getMaxNodeID:()I
invokevirtual org.jruby.ir.passes.DominatorTreeBuilder.buildDominatorTree:(Lorg/jruby/ir/representations/CFG;Ljava/util/LinkedList;I)V
2: goto 5
StackMap locals: org.jruby.ir.passes.DominatorTreeBuilder org.jruby.ir.IRScope java.lang.Object[] org.jruby.ir.representations.CFG
StackMap stack: java.lang.Exception
3: pop
4: getstatic org.jruby.ir.passes.DominatorTreeBuilder.LOG:Lorg/jruby/util/log/Logger;
ldc "Caught exception building dom tree for {}"
iconst_1
anewarray java.lang.Object
dup
iconst_0
aload 1
invokevirtual org.jruby.ir.IRScope.getCFG:()Lorg/jruby/ir/representations/CFG;
aastore
invokeinterface org.jruby.util.log.Logger.debug:(Ljava/lang/String;[Ljava/lang/Object;)V
5: StackMap locals:
StackMap stack:
aconst_null
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/passes/DominatorTreeBuilder;
0 6 1 scope Lorg/jruby/ir/IRScope;
0 6 2 data [Ljava/lang/Object;
1 6 3 cfg Lorg/jruby/ir/representations/CFG;
Exception table:
from to target type
1 2 3 Class java.lang.Exception
MethodParameters:
Name Flags
scope
data
public boolean invalidate(org.jruby.ir.IRScope);
descriptor: (Lorg/jruby/ir/IRScope;)Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=2, args_size=2
start local 0 start local 1 0: iconst_0
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/jruby/ir/passes/DominatorTreeBuilder;
0 1 1 scope Lorg/jruby/ir/IRScope;
MethodParameters:
Name Flags
scope
public void buildDominatorTree(org.jruby.ir.representations.CFG, java.util.LinkedList<org.jruby.ir.representations.BasicBlock>, );
descriptor: (Lorg/jruby/ir/representations/CFG;Ljava/util/LinkedList;I)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=21, args_size=4
start local 0 start local 1 start local 2 start local 3 0: iload 3
iconst_1
iadd
newarray 10
astore 4
start local 4 1: iload 3
iconst_1
iadd
anewarray org.jruby.ir.representations.BasicBlock
astore 5
start local 5 2: iconst_0
istore 6
start local 6 3: aload 2
invokevirtual java.util.LinkedList.listIterator:()Ljava/util/ListIterator;
astore 7
start local 7 4: goto 9
5: StackMap locals: org.jruby.ir.passes.DominatorTreeBuilder org.jruby.ir.representations.CFG java.util.LinkedList int int[] org.jruby.ir.representations.BasicBlock[] int java.util.ListIterator
StackMap stack:
aload 7
invokeinterface java.util.ListIterator.next:()Ljava/lang/Object;
checkcast org.jruby.ir.representations.BasicBlock
astore 8
start local 8 6: aload 4
aload 8
invokevirtual org.jruby.ir.representations.BasicBlock.getID:()I
iload 6
iastore
7: aload 5
iload 6
aload 8
aastore
8: iinc 6 1
end local 8 9: StackMap locals:
StackMap stack:
aload 7
invokeinterface java.util.ListIterator.hasNext:()Z
ifne 5
10: iload 3
iconst_1
iadd
newarray 10
astore 8
start local 8 11: aload 1
invokevirtual org.jruby.ir.representations.CFG.getEntryBB:()Lorg/jruby/ir/representations/BasicBlock;
astore 9
start local 9 12: aload 4
aload 9
invokevirtual org.jruby.ir.representations.BasicBlock.getID:()I
iaload
istore 10
start local 10 13: aload 8
iload 10
iload 10
iastore
14: iconst_1
istore 11
start local 11 15: goto 44
16: StackMap locals: org.jruby.ir.passes.DominatorTreeBuilder org.jruby.ir.representations.CFG java.util.LinkedList int int[] org.jruby.ir.representations.BasicBlock[] int java.util.ListIterator int[] org.jruby.ir.representations.BasicBlock int int
StackMap stack:
iconst_0
istore 11
17: aload 2
aload 1
invokevirtual org.jruby.ir.representations.CFG.size:()I
invokevirtual java.util.LinkedList.listIterator:(I)Ljava/util/ListIterator;
astore 7
18: goto 43
19: StackMap locals:
StackMap stack:
aload 7
invokeinterface java.util.ListIterator.previous:()Ljava/lang/Object;
checkcast org.jruby.ir.representations.BasicBlock
astore 12
start local 12 20: aload 12
aload 9
if_acmpne 21
goto 43
21: StackMap locals: org.jruby.ir.representations.BasicBlock
StackMap stack:
aload 4
aload 12
invokevirtual org.jruby.ir.representations.BasicBlock.getID:()I
iaload
istore 13
start local 13 22: aload 8
iload 13
iaload
istore 14
start local 14 23: getstatic org.jruby.ir.passes.DominatorTreeBuilder.NULL:I
istore 15
start local 15 24: aload 1
aload 12
invokevirtual org.jruby.ir.representations.CFG.getIncomingSources:(Lorg/jruby/ir/representations/BasicBlock;)Ljava/lang/Iterable;
invokeinterface java.lang.Iterable.iterator:()Ljava/util/Iterator;
astore 17
goto 30
StackMap locals: org.jruby.ir.passes.DominatorTreeBuilder org.jruby.ir.representations.CFG java.util.LinkedList int int[] org.jruby.ir.representations.BasicBlock[] int java.util.ListIterator int[] org.jruby.ir.representations.BasicBlock int int org.jruby.ir.representations.BasicBlock int int int top java.util.Iterator
StackMap stack:
25: aload 17
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.jruby.ir.representations.BasicBlock
astore 16
start local 16 26: aload 4
aload 16
invokevirtual org.jruby.ir.representations.BasicBlock.getID:()I
iaload
istore 18
start local 18 27: aload 8
iload 18
iaload
getstatic org.jruby.ir.passes.DominatorTreeBuilder.NULL:I
if_icmpeq 30
28: iload 18
istore 15
29: goto 31
end local 18 end local 16 30: StackMap locals:
StackMap stack:
aload 17
invokeinterface java.util.Iterator.hasNext:()Z
ifne 25
31: StackMap locals: org.jruby.ir.passes.DominatorTreeBuilder org.jruby.ir.representations.CFG java.util.LinkedList int int[] org.jruby.ir.representations.BasicBlock[] int java.util.ListIterator int[] org.jruby.ir.representations.BasicBlock int int org.jruby.ir.representations.BasicBlock int int int
StackMap stack:
getstatic org.jruby.ir.passes.DominatorTreeBuilder.$assertionsDisabled:Z
ifne 32
iload 15
getstatic org.jruby.ir.passes.DominatorTreeBuilder.NULL:I
if_icmpne 32
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
32: StackMap locals:
StackMap stack:
iload 15
istore 16
start local 16 33: aload 1
aload 12
invokevirtual org.jruby.ir.representations.CFG.getIncomingSources:(Lorg/jruby/ir/representations/BasicBlock;)Ljava/lang/Iterable;
invokeinterface java.lang.Iterable.iterator:()Ljava/util/Iterator;
astore 18
goto 39
StackMap locals: org.jruby.ir.passes.DominatorTreeBuilder org.jruby.ir.representations.CFG java.util.LinkedList int int[] org.jruby.ir.representations.BasicBlock[] int java.util.ListIterator int[] org.jruby.ir.representations.BasicBlock int int org.jruby.ir.representations.BasicBlock int int int int top java.util.Iterator
StackMap stack:
34: aload 18
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.jruby.ir.representations.BasicBlock
astore 17
start local 17 35: aload 4
aload 17
invokevirtual org.jruby.ir.representations.BasicBlock.getID:()I
iaload
istore 19
start local 19 36: aload 8
iload 19
iaload
istore 20
start local 20 37: iload 20
getstatic org.jruby.ir.passes.DominatorTreeBuilder.NULL:I
if_icmpeq 39
iload 19
iload 16
if_icmpeq 39
38: aload 0
aload 8
iload 19
iload 15
invokevirtual org.jruby.ir.passes.DominatorTreeBuilder.intersectDomSets:([III)I
istore 15
end local 20 end local 19 end local 17 39: StackMap locals:
StackMap stack:
aload 18
invokeinterface java.util.Iterator.hasNext:()Z
ifne 34
40: iload 14
iload 15
if_icmpeq 43
41: iconst_1
istore 11
42: aload 8
iload 13
iload 15
iastore
end local 16 end local 15 end local 14 end local 13 end local 12 43: StackMap locals: org.jruby.ir.passes.DominatorTreeBuilder org.jruby.ir.representations.CFG java.util.LinkedList int int[] org.jruby.ir.representations.BasicBlock[] int java.util.ListIterator int[] org.jruby.ir.representations.BasicBlock int int
StackMap stack:
aload 7
invokeinterface java.util.ListIterator.hasPrevious:()Z
ifne 19
44: StackMap locals:
StackMap stack:
iload 11
ifne 16
45: new java.util.HashMap
dup
invokespecial java.util.HashMap.<init>:()V
astore 12
start local 12 46: iconst_0
istore 13
start local 13 47: goto 50
48: StackMap locals: java.util.Map int
StackMap stack:
aload 12
aload 5
iload 13
aaload
aload 5
aload 8
iload 13
iaload
aaload
invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
49: iinc 13 1
StackMap locals:
StackMap stack:
50: iload 13
iload 3
if_icmplt 48
end local 13 51: return
end local 12 end local 11 end local 10 end local 9 end local 8 end local 7 end local 6 end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 52 0 this Lorg/jruby/ir/passes/DominatorTreeBuilder;
0 52 1 cfg Lorg/jruby/ir/representations/CFG;
0 52 2 postOrderList Ljava/util/LinkedList<Lorg/jruby/ir/representations/BasicBlock;>;
0 52 3 maxNodeId I
1 52 4 bbToPoNumbers [I
2 52 5 poNumbersToBB [Lorg/jruby/ir/representations/BasicBlock;
3 52 6 n I
4 52 7 it Ljava/util/ListIterator<Lorg/jruby/ir/representations/BasicBlock;>;
6 9 8 b Lorg/jruby/ir/representations/BasicBlock;
11 52 8 idoms [I
12 52 9 root Lorg/jruby/ir/representations/BasicBlock;
13 52 10 rootPoNumber I
15 52 11 changed Z
20 43 12 b Lorg/jruby/ir/representations/BasicBlock;
22 43 13 bPoNumber I
23 43 14 oldBIdom I
24 43 15 newBIdom I
26 30 16 src Lorg/jruby/ir/representations/BasicBlock;
27 30 18 srcPoNumber I
33 43 16 processedPred I
35 39 17 src Lorg/jruby/ir/representations/BasicBlock;
36 39 19 srcPoNumber I
37 39 20 srcIdom I
46 52 12 idomMap Ljava/util/Map<Lorg/jruby/ir/representations/BasicBlock;Lorg/jruby/ir/representations/BasicBlock;>;
47 51 13 i I
Signature: (Lorg/jruby/ir/representations/CFG;Ljava/util/LinkedList<Lorg/jruby/ir/representations/BasicBlock;>;I)V
MethodParameters:
Name Flags
cfg
postOrderList
maxNodeId
private int intersectDomSets(int[], int, int);
descriptor: ([III)I
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=4, args_size=4
start local 0 start local 1 start local 2 start local 3 0: goto 6
1: StackMap locals:
StackMap stack:
aload 1
iload 2
iaload
istore 2
2: StackMap locals:
StackMap stack:
iload 2
iload 3
if_icmplt 1
3: goto 5
4: StackMap locals:
StackMap stack:
aload 1
iload 3
iaload
istore 3
5: StackMap locals:
StackMap stack:
iload 3
iload 2
if_icmplt 4
6: StackMap locals:
StackMap stack:
iload 2
iload 3
if_icmpne 2
7: iload 2
ireturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 this Lorg/jruby/ir/passes/DominatorTreeBuilder;
0 8 1 idomMap [I
0 8 2 nb1 I
0 8 3 nb2 I
MethodParameters:
Name Flags
idomMap
nb1
nb2
}
SourceFile: "DominatorTreeBuilder.java"