public class org.apache.bcel.verifier.structurals.Subroutines
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: org.apache.bcel.verifier.structurals.Subroutines
super_class: java.lang.Object
{
private final java.util.Map<org.apache.bcel.generic.InstructionHandle, org.apache.bcel.verifier.structurals.Subroutine> subroutines;
descriptor: Ljava/util/Map;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
Signature: Ljava/util/Map<Lorg/apache/bcel/generic/InstructionHandle;Lorg/apache/bcel/verifier/structurals/Subroutine;>;
public final org.apache.bcel.verifier.structurals.Subroutine TOPLEVEL;
descriptor: Lorg/apache/bcel/verifier/structurals/Subroutine;
flags: (0x0011) ACC_PUBLIC, ACC_FINAL
public void <init>(org.apache.bcel.generic.MethodGen);
descriptor: (Lorg/apache/bcel/generic/MethodGen;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=2, args_size=2
start local 0 start local 1 0: aload 0
aload 1
iconst_1
invokespecial org.apache.bcel.verifier.structurals.Subroutines.<init>:(Lorg/apache/bcel/generic/MethodGen;Z)V
1: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lorg/apache/bcel/verifier/structurals/Subroutines;
0 2 1 mg Lorg/apache/bcel/generic/MethodGen;
MethodParameters:
Name Flags
mg final
public void <init>(org.apache.bcel.generic.MethodGen, boolean);
descriptor: (Lorg/apache/bcel/generic/MethodGen;Z)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=17, args_size=3
start local 0 start local 1 start local 2 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: aload 0
new java.util.HashMap
dup
invokespecial java.util.HashMap.<init>:()V
putfield org.apache.bcel.verifier.structurals.Subroutines.subroutines:Ljava/util/Map;
2: aload 1
invokevirtual org.apache.bcel.generic.MethodGen.getInstructionList:()Lorg/apache/bcel/generic/InstructionList;
invokevirtual org.apache.bcel.generic.InstructionList.getInstructionHandles:()[Lorg/apache/bcel/generic/InstructionHandle;
astore 3
start local 3 3: aload 1
invokevirtual org.apache.bcel.generic.MethodGen.getExceptionHandlers:()[Lorg/apache/bcel/generic/CodeExceptionGen;
astore 4
start local 4 4: aload 0
new org.apache.bcel.verifier.structurals.Subroutines$SubroutineImpl
dup
aload 0
invokespecial org.apache.bcel.verifier.structurals.Subroutines$SubroutineImpl.<init>:(Lorg/apache/bcel/verifier/structurals/Subroutines;)V
putfield org.apache.bcel.verifier.structurals.Subroutines.TOPLEVEL:Lorg/apache/bcel/verifier/structurals/Subroutine;
5: new java.util.HashSet
dup
invokespecial java.util.HashSet.<init>:()V
astore 5
start local 5 6: aload 3
dup
astore 9
arraylength
istore 8
iconst_0
istore 7
goto 12
StackMap locals: org.apache.bcel.verifier.structurals.Subroutines org.apache.bcel.generic.MethodGen int org.apache.bcel.generic.InstructionHandle[] org.apache.bcel.generic.CodeExceptionGen[] java.util.Set top int int org.apache.bcel.generic.InstructionHandle[]
StackMap stack:
7: aload 9
iload 7
aaload
astore 6
start local 6 8: aload 6
invokevirtual org.apache.bcel.generic.InstructionHandle.getInstruction:()Lorg/apache/bcel/generic/Instruction;
astore 10
start local 10 9: aload 10
instanceof org.apache.bcel.generic.JsrInstruction
ifeq 11
10: aload 5
aload 10
checkcast org.apache.bcel.generic.JsrInstruction
invokevirtual org.apache.bcel.generic.JsrInstruction.getTarget:()Lorg/apache/bcel/generic/InstructionHandle;
invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
pop
end local 10 end local 6 11: StackMap locals:
StackMap stack:
iinc 7 1
StackMap locals:
StackMap stack:
12: iload 7
iload 8
if_icmplt 7
13: aload 5
invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
astore 7
goto 18
StackMap locals: org.apache.bcel.verifier.structurals.Subroutines org.apache.bcel.generic.MethodGen int org.apache.bcel.generic.InstructionHandle[] org.apache.bcel.generic.CodeExceptionGen[] java.util.Set top java.util.Iterator
StackMap stack:
14: aload 7
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.apache.bcel.generic.InstructionHandle
astore 6
start local 6 15: new org.apache.bcel.verifier.structurals.Subroutines$SubroutineImpl
dup
aload 0
invokespecial org.apache.bcel.verifier.structurals.Subroutines$SubroutineImpl.<init>:(Lorg/apache/bcel/verifier/structurals/Subroutines;)V
astore 8
start local 8 16: aload 8
aload 6
invokevirtual org.apache.bcel.generic.InstructionHandle.getInstruction:()Lorg/apache/bcel/generic/Instruction;
checkcast org.apache.bcel.generic.ASTORE
invokevirtual org.apache.bcel.generic.ASTORE.getIndex:()I
invokevirtual org.apache.bcel.verifier.structurals.Subroutines$SubroutineImpl.setLocalVariable:(I)V
17: aload 0
getfield org.apache.bcel.verifier.structurals.Subroutines.subroutines:Ljava/util/Map;
aload 6
aload 8
invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
end local 8 end local 6 18: StackMap locals:
StackMap stack:
aload 7
invokeinterface java.util.Iterator.hasNext:()Z
ifne 14
19: aload 0
getfield org.apache.bcel.verifier.structurals.Subroutines.subroutines:Ljava/util/Map;
aload 3
iconst_0
aaload
aload 0
getfield org.apache.bcel.verifier.structurals.Subroutines.TOPLEVEL:Lorg/apache/bcel/verifier/structurals/Subroutine;
invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
20: aload 5
aload 3
iconst_0
aaload
invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
pop
21: aload 3
dup
astore 9
arraylength
istore 8
iconst_0
istore 7
goto 28
StackMap locals: org.apache.bcel.verifier.structurals.Subroutines org.apache.bcel.generic.MethodGen int org.apache.bcel.generic.InstructionHandle[] org.apache.bcel.generic.CodeExceptionGen[] java.util.Set top int int org.apache.bcel.generic.InstructionHandle[]
StackMap stack:
22: aload 9
iload 7
aaload
astore 6
start local 6 23: aload 6
invokevirtual org.apache.bcel.generic.InstructionHandle.getInstruction:()Lorg/apache/bcel/generic/Instruction;
astore 10
start local 10 24: aload 10
instanceof org.apache.bcel.generic.JsrInstruction
ifeq 27
25: aload 10
checkcast org.apache.bcel.generic.JsrInstruction
invokevirtual org.apache.bcel.generic.JsrInstruction.getTarget:()Lorg/apache/bcel/generic/InstructionHandle;
astore 11
start local 11 26: aload 0
aload 11
invokevirtual org.apache.bcel.verifier.structurals.Subroutines.getSubroutine:(Lorg/apache/bcel/generic/InstructionHandle;)Lorg/apache/bcel/verifier/structurals/Subroutine;
checkcast org.apache.bcel.verifier.structurals.Subroutines$SubroutineImpl
aload 6
invokevirtual org.apache.bcel.verifier.structurals.Subroutines$SubroutineImpl.addEnteringJsrInstruction:(Lorg/apache/bcel/generic/InstructionHandle;)V
end local 11 end local 10 end local 6 27: StackMap locals:
StackMap stack:
iinc 7 1
StackMap locals:
StackMap stack:
28: iload 7
iload 8
if_icmplt 22
29: new java.util.HashSet
dup
invokespecial java.util.HashSet.<init>:()V
astore 6
start local 6 30: new java.util.HashMap
dup
invokespecial java.util.HashMap.<init>:()V
astore 7
start local 7 31: new java.util.ArrayList
dup
invokespecial java.util.ArrayList.<init>:()V
astore 8
start local 8 32: aload 5
invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
astore 10
goto 76
StackMap locals: org.apache.bcel.verifier.structurals.Subroutines org.apache.bcel.generic.MethodGen int org.apache.bcel.generic.InstructionHandle[] org.apache.bcel.generic.CodeExceptionGen[] java.util.Set java.util.Set java.util.Map java.util.List top java.util.Iterator
StackMap stack:
33: aload 10
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.apache.bcel.generic.InstructionHandle
astore 9
start local 9 34: aload 3
dup
astore 14
arraylength
istore 13
iconst_0
istore 12
goto 38
StackMap locals: org.apache.bcel.verifier.structurals.Subroutines org.apache.bcel.generic.MethodGen int org.apache.bcel.generic.InstructionHandle[] org.apache.bcel.generic.CodeExceptionGen[] java.util.Set java.util.Set java.util.Map java.util.List org.apache.bcel.generic.InstructionHandle java.util.Iterator top int int org.apache.bcel.generic.InstructionHandle[]
StackMap stack:
35: aload 14
iload 12
aaload
astore 11
start local 11 36: aload 7
aload 11
getstatic org.apache.bcel.verifier.structurals.Subroutines$ColourConstants.WHITE:Lorg/apache/bcel/verifier/structurals/Subroutines$ColourConstants;
invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
end local 11 37: iinc 12 1
StackMap locals:
StackMap stack:
38: iload 12
iload 13
if_icmplt 35
39: aload 7
aload 9
getstatic org.apache.bcel.verifier.structurals.Subroutines$ColourConstants.GRAY:Lorg/apache/bcel/verifier/structurals/Subroutines$ColourConstants;
invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
40: aload 8
invokeinterface java.util.List.clear:()V
41: aload 8
aload 9
invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
pop
42: aload 9
aload 3
iconst_0
aaload
if_acmpne 60
43: aload 4
dup
astore 14
arraylength
istore 13
iconst_0
istore 12
goto 48
StackMap locals: org.apache.bcel.verifier.structurals.Subroutines org.apache.bcel.generic.MethodGen int org.apache.bcel.generic.InstructionHandle[] org.apache.bcel.generic.CodeExceptionGen[] java.util.Set java.util.Set java.util.Map java.util.List org.apache.bcel.generic.InstructionHandle java.util.Iterator top int int org.apache.bcel.generic.CodeExceptionGen[]
StackMap stack:
44: aload 14
iload 12
aaload
astore 11
start local 11 45: aload 7
aload 11
invokevirtual org.apache.bcel.generic.CodeExceptionGen.getHandlerPC:()Lorg/apache/bcel/generic/InstructionHandle;
getstatic org.apache.bcel.verifier.structurals.Subroutines$ColourConstants.GRAY:Lorg/apache/bcel/verifier/structurals/Subroutines$ColourConstants;
invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
46: aload 8
aload 11
invokevirtual org.apache.bcel.generic.CodeExceptionGen.getHandlerPC:()Lorg/apache/bcel/generic/InstructionHandle;
invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
pop
end local 11 47: iinc 12 1
StackMap locals:
StackMap stack:
48: iload 12
iload 13
if_icmplt 44
49: goto 60
50: StackMap locals: org.apache.bcel.verifier.structurals.Subroutines org.apache.bcel.generic.MethodGen int org.apache.bcel.generic.InstructionHandle[] org.apache.bcel.generic.CodeExceptionGen[] java.util.Set java.util.Set java.util.Map java.util.List org.apache.bcel.generic.InstructionHandle java.util.Iterator
StackMap stack:
aload 8
iconst_0
invokeinterface java.util.List.remove:(I)Ljava/lang/Object;
checkcast org.apache.bcel.generic.InstructionHandle
astore 11
start local 11 51: aload 11
invokestatic org.apache.bcel.verifier.structurals.Subroutines.getSuccessors:(Lorg/apache/bcel/generic/InstructionHandle;)[Lorg/apache/bcel/generic/InstructionHandle;
astore 12
start local 12 52: aload 12
dup
astore 16
arraylength
istore 15
iconst_0
istore 14
goto 58
StackMap locals: org.apache.bcel.verifier.structurals.Subroutines org.apache.bcel.generic.MethodGen int org.apache.bcel.generic.InstructionHandle[] org.apache.bcel.generic.CodeExceptionGen[] java.util.Set java.util.Set java.util.Map java.util.List org.apache.bcel.generic.InstructionHandle java.util.Iterator org.apache.bcel.generic.InstructionHandle org.apache.bcel.generic.InstructionHandle[] top int int org.apache.bcel.generic.InstructionHandle[]
StackMap stack:
53: aload 16
iload 14
aaload
astore 13
start local 13 54: aload 7
aload 13
invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
getstatic org.apache.bcel.verifier.structurals.Subroutines$ColourConstants.WHITE:Lorg/apache/bcel/verifier/structurals/Subroutines$ColourConstants;
if_acmpne 57
55: aload 7
aload 13
getstatic org.apache.bcel.verifier.structurals.Subroutines$ColourConstants.GRAY:Lorg/apache/bcel/verifier/structurals/Subroutines$ColourConstants;
invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
56: aload 8
aload 13
invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
pop
end local 13 57: StackMap locals:
StackMap stack:
iinc 14 1
StackMap locals:
StackMap stack:
58: iload 14
iload 15
if_icmplt 53
59: aload 7
aload 11
getstatic org.apache.bcel.verifier.structurals.Subroutines$ColourConstants.BLACK:Lorg/apache/bcel/verifier/structurals/Subroutines$ColourConstants;
invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
end local 12 end local 11 60: StackMap locals: org.apache.bcel.verifier.structurals.Subroutines org.apache.bcel.generic.MethodGen int org.apache.bcel.generic.InstructionHandle[] org.apache.bcel.generic.CodeExceptionGen[] java.util.Set java.util.Set java.util.Map java.util.List org.apache.bcel.generic.InstructionHandle java.util.Iterator
StackMap stack:
aload 8
invokeinterface java.util.List.size:()I
ifne 50
61: aload 3
dup
astore 14
arraylength
istore 13
iconst_0
istore 12
goto 73
StackMap locals: org.apache.bcel.verifier.structurals.Subroutines org.apache.bcel.generic.MethodGen int org.apache.bcel.generic.InstructionHandle[] org.apache.bcel.generic.CodeExceptionGen[] java.util.Set java.util.Set java.util.Map java.util.List org.apache.bcel.generic.InstructionHandle java.util.Iterator top int int org.apache.bcel.generic.InstructionHandle[]
StackMap stack:
62: aload 14
iload 12
aaload
astore 11
start local 11 63: aload 7
aload 11
invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
getstatic org.apache.bcel.verifier.structurals.Subroutines$ColourConstants.BLACK:Lorg/apache/bcel/verifier/structurals/Subroutines$ColourConstants;
if_acmpne 72
64: aload 9
aload 3
iconst_0
aaload
if_acmpne 65
aload 0
invokevirtual org.apache.bcel.verifier.structurals.Subroutines.getTopLevel:()Lorg/apache/bcel/verifier/structurals/Subroutine;
goto 66
StackMap locals: org.apache.bcel.verifier.structurals.Subroutines org.apache.bcel.generic.MethodGen int org.apache.bcel.generic.InstructionHandle[] org.apache.bcel.generic.CodeExceptionGen[] java.util.Set java.util.Set java.util.Map java.util.List org.apache.bcel.generic.InstructionHandle java.util.Iterator org.apache.bcel.generic.InstructionHandle int int org.apache.bcel.generic.InstructionHandle[]
StackMap stack:
65: aload 0
aload 9
invokevirtual org.apache.bcel.verifier.structurals.Subroutines.getSubroutine:(Lorg/apache/bcel/generic/InstructionHandle;)Lorg/apache/bcel/verifier/structurals/Subroutine;
StackMap locals:
StackMap stack: org.apache.bcel.verifier.structurals.Subroutine
66: checkcast org.apache.bcel.verifier.structurals.Subroutines$SubroutineImpl
aload 11
invokevirtual org.apache.bcel.verifier.structurals.Subroutines$SubroutineImpl.addInstruction:(Lorg/apache/bcel/generic/InstructionHandle;)V
67: aload 6
aload 11
invokeinterface java.util.Set.contains:(Ljava/lang/Object;)Z
ifeq 71
68: new org.apache.bcel.verifier.exc.StructuralCodeConstraintException
dup
new java.lang.StringBuilder
dup
ldc "Instruction '"
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 11
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
69: ldc "' is part of more than one subroutine (or of the top level and a subroutine)."
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
70: invokespecial org.apache.bcel.verifier.exc.StructuralCodeConstraintException.<init>:(Ljava/lang/String;)V
athrow
71: StackMap locals:
StackMap stack:
aload 6
aload 11
invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
pop
end local 11 72: StackMap locals: org.apache.bcel.verifier.structurals.Subroutines org.apache.bcel.generic.MethodGen int org.apache.bcel.generic.InstructionHandle[] org.apache.bcel.generic.CodeExceptionGen[] java.util.Set java.util.Set java.util.Map java.util.List org.apache.bcel.generic.InstructionHandle java.util.Iterator top int int org.apache.bcel.generic.InstructionHandle[]
StackMap stack:
iinc 12 1
StackMap locals:
StackMap stack:
73: iload 12
iload 13
if_icmplt 62
74: aload 9
aload 3
iconst_0
aaload
if_acmpeq 76
75: aload 0
aload 9
invokevirtual org.apache.bcel.verifier.structurals.Subroutines.getSubroutine:(Lorg/apache/bcel/generic/InstructionHandle;)Lorg/apache/bcel/verifier/structurals/Subroutine;
checkcast org.apache.bcel.verifier.structurals.Subroutines$SubroutineImpl
invokevirtual org.apache.bcel.verifier.structurals.Subroutines$SubroutineImpl.setLeavingRET:()V
end local 9 76: StackMap locals: org.apache.bcel.verifier.structurals.Subroutines org.apache.bcel.generic.MethodGen int org.apache.bcel.generic.InstructionHandle[] org.apache.bcel.generic.CodeExceptionGen[] java.util.Set java.util.Set java.util.Map java.util.List top java.util.Iterator
StackMap stack:
aload 10
invokeinterface java.util.Iterator.hasNext:()Z
ifne 33
77: iload 2
ifeq 95
78: aload 4
dup
astore 12
arraylength
istore 11
iconst_0
istore 10
goto 94
StackMap locals: org.apache.bcel.verifier.structurals.Subroutines org.apache.bcel.generic.MethodGen int org.apache.bcel.generic.InstructionHandle[] org.apache.bcel.generic.CodeExceptionGen[] java.util.Set java.util.Set java.util.Map java.util.List top int int org.apache.bcel.generic.CodeExceptionGen[]
StackMap stack:
79: aload 12
iload 10
aaload
astore 9
start local 9 80: aload 9
invokevirtual org.apache.bcel.generic.CodeExceptionGen.getStartPC:()Lorg/apache/bcel/generic/InstructionHandle;
astore 13
start local 13 81: goto 92
82: StackMap locals: org.apache.bcel.verifier.structurals.Subroutines org.apache.bcel.generic.MethodGen int org.apache.bcel.generic.InstructionHandle[] org.apache.bcel.generic.CodeExceptionGen[] java.util.Set java.util.Set java.util.Map java.util.List org.apache.bcel.generic.CodeExceptionGen int int org.apache.bcel.generic.CodeExceptionGen[] org.apache.bcel.generic.InstructionHandle
StackMap stack:
aload 0
getfield org.apache.bcel.verifier.structurals.Subroutines.subroutines:Ljava/util/Map;
invokeinterface java.util.Map.values:()Ljava/util/Collection;
invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
astore 15
goto 90
StackMap locals: org.apache.bcel.verifier.structurals.Subroutines org.apache.bcel.generic.MethodGen int org.apache.bcel.generic.InstructionHandle[] org.apache.bcel.generic.CodeExceptionGen[] java.util.Set java.util.Set java.util.Map java.util.List org.apache.bcel.generic.CodeExceptionGen int int org.apache.bcel.generic.CodeExceptionGen[] org.apache.bcel.generic.InstructionHandle top java.util.Iterator
StackMap stack:
83: aload 15
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.apache.bcel.verifier.structurals.Subroutine
astore 14
start local 14 84: aload 14
aload 0
getfield org.apache.bcel.verifier.structurals.Subroutines.subroutines:Ljava/util/Map;
aload 3
iconst_0
aaload
invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
if_acmpeq 90
85: aload 14
aload 13
invokeinterface org.apache.bcel.verifier.structurals.Subroutine.contains:(Lorg/apache/bcel/generic/InstructionHandle;)Z
ifeq 90
86: new org.apache.bcel.verifier.exc.StructuralCodeConstraintException
dup
new java.lang.StringBuilder
dup
ldc "Subroutine instruction '"
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 13
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
87: ldc "' is protected by an exception handler, '"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 9
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
88: ldc "'. This is forbidden by the JustIce verifier due to its clear definition of subroutines."
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
89: invokespecial org.apache.bcel.verifier.exc.StructuralCodeConstraintException.<init>:(Ljava/lang/String;)V
athrow
end local 14 90: StackMap locals:
StackMap stack:
aload 15
invokeinterface java.util.Iterator.hasNext:()Z
ifne 83
91: aload 13
invokevirtual org.apache.bcel.generic.InstructionHandle.getNext:()Lorg/apache/bcel/generic/InstructionHandle;
astore 13
92: StackMap locals: org.apache.bcel.verifier.structurals.Subroutines org.apache.bcel.generic.MethodGen int org.apache.bcel.generic.InstructionHandle[] org.apache.bcel.generic.CodeExceptionGen[] java.util.Set java.util.Set java.util.Map java.util.List org.apache.bcel.generic.CodeExceptionGen int int org.apache.bcel.generic.CodeExceptionGen[] org.apache.bcel.generic.InstructionHandle
StackMap stack:
aload 13
aload 9
invokevirtual org.apache.bcel.generic.CodeExceptionGen.getEndPC:()Lorg/apache/bcel/generic/InstructionHandle;
invokevirtual org.apache.bcel.generic.InstructionHandle.getNext:()Lorg/apache/bcel/generic/InstructionHandle;
if_acmpne 82
end local 13 end local 9 93: iinc 10 1
StackMap locals: org.apache.bcel.verifier.structurals.Subroutines org.apache.bcel.generic.MethodGen int org.apache.bcel.generic.InstructionHandle[] org.apache.bcel.generic.CodeExceptionGen[] java.util.Set java.util.Set java.util.Map java.util.List top int int org.apache.bcel.generic.CodeExceptionGen[]
StackMap stack:
94: iload 10
iload 11
if_icmplt 79
95: StackMap locals: org.apache.bcel.verifier.structurals.Subroutines org.apache.bcel.generic.MethodGen int org.apache.bcel.generic.InstructionHandle[] org.apache.bcel.generic.CodeExceptionGen[] java.util.Set java.util.Set java.util.Map java.util.List
StackMap stack:
aload 0
aload 0
invokevirtual org.apache.bcel.verifier.structurals.Subroutines.getTopLevel:()Lorg/apache/bcel/verifier/structurals/Subroutine;
new java.util.HashSet
dup
invokespecial java.util.HashSet.<init>:()V
invokevirtual org.apache.bcel.verifier.structurals.Subroutines.noRecursiveCalls:(Lorg/apache/bcel/verifier/structurals/Subroutine;Ljava/util/Set;)V
96: return
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 97 0 this Lorg/apache/bcel/verifier/structurals/Subroutines;
0 97 1 mg Lorg/apache/bcel/generic/MethodGen;
0 97 2 enableJustIceCheck Z
3 97 3 all [Lorg/apache/bcel/generic/InstructionHandle;
4 97 4 handlers [Lorg/apache/bcel/generic/CodeExceptionGen;
6 97 5 sub_leaders Ljava/util/Set<Lorg/apache/bcel/generic/InstructionHandle;>;
8 11 6 element Lorg/apache/bcel/generic/InstructionHandle;
9 11 10 inst Lorg/apache/bcel/generic/Instruction;
15 18 6 astore Lorg/apache/bcel/generic/InstructionHandle;
16 18 8 sr Lorg/apache/bcel/verifier/structurals/Subroutines$SubroutineImpl;
23 27 6 element Lorg/apache/bcel/generic/InstructionHandle;
24 27 10 inst Lorg/apache/bcel/generic/Instruction;
26 27 11 leader Lorg/apache/bcel/generic/InstructionHandle;
30 97 6 instructions_assigned Ljava/util/Set<Lorg/apache/bcel/generic/InstructionHandle;>;
31 97 7 colors Ljava/util/Map<Lorg/apache/bcel/generic/InstructionHandle;Lorg/apache/bcel/verifier/structurals/Subroutines$ColourConstants;>;
32 97 8 Q Ljava/util/List<Lorg/apache/bcel/generic/InstructionHandle;>;
34 76 9 actual Lorg/apache/bcel/generic/InstructionHandle;
36 37 11 element Lorg/apache/bcel/generic/InstructionHandle;
45 47 11 handler Lorg/apache/bcel/generic/CodeExceptionGen;
51 60 11 u Lorg/apache/bcel/generic/InstructionHandle;
52 60 12 successors [Lorg/apache/bcel/generic/InstructionHandle;
54 57 13 successor Lorg/apache/bcel/generic/InstructionHandle;
63 72 11 element Lorg/apache/bcel/generic/InstructionHandle;
80 93 9 handler Lorg/apache/bcel/generic/CodeExceptionGen;
81 93 13 _protected Lorg/apache/bcel/generic/InstructionHandle;
84 90 14 sub Lorg/apache/bcel/verifier/structurals/Subroutine;
MethodParameters:
Name Flags
mg final
enableJustIceCheck final
private void noRecursiveCalls(org.apache.bcel.verifier.structurals.Subroutine, java.util.Set<java.lang.Integer>);
descriptor: (Lorg/apache/bcel/verifier/structurals/Subroutine;Ljava/util/Set;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=10, args_size=3
start local 0 start local 1 start local 2 0: aload 1
invokeinterface org.apache.bcel.verifier.structurals.Subroutine.subSubs:()[Lorg/apache/bcel/verifier/structurals/Subroutine;
astore 3
start local 3 1: aload 3
dup
astore 7
arraylength
istore 6
iconst_0
istore 5
goto 14
StackMap locals: org.apache.bcel.verifier.structurals.Subroutines org.apache.bcel.verifier.structurals.Subroutine java.util.Set org.apache.bcel.verifier.structurals.Subroutine[] top int int org.apache.bcel.verifier.structurals.Subroutine[]
StackMap stack:
2: aload 7
iload 5
aaload
astore 4
start local 4 3: aload 4
invokeinterface org.apache.bcel.verifier.structurals.Subroutine.getLeavingRET:()Lorg/apache/bcel/generic/InstructionHandle;
invokevirtual org.apache.bcel.generic.InstructionHandle.getInstruction:()Lorg/apache/bcel/generic/Instruction;
checkcast org.apache.bcel.generic.RET
invokevirtual org.apache.bcel.generic.RET.getIndex:()I
istore 8
start local 8 4: aload 2
iload 8
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
ifne 11
5: aload 4
checkcast org.apache.bcel.verifier.structurals.Subroutines$SubroutineImpl
astore 9
start local 9 6: new org.apache.bcel.verifier.exc.StructuralCodeConstraintException
dup
new java.lang.StringBuilder
dup
ldc "Subroutine with local variable '"
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 9
getfield org.apache.bcel.verifier.structurals.Subroutines$SubroutineImpl.localVariable:I
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
ldc "', JSRs '"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
7: aload 9
getfield org.apache.bcel.verifier.structurals.Subroutines$SubroutineImpl.theJSRs:Ljava/util/Set;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
ldc "', RET '"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 9
getfield org.apache.bcel.verifier.structurals.Subroutines$SubroutineImpl.theRET:Lorg/apache/bcel/generic/InstructionHandle;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
8: ldc "' is called by a subroutine which uses the same local variable index as itself; maybe even a recursive call?"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
9: ldc " JustIce's clean definition of a subroutine forbids both."
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
10: invokespecial org.apache.bcel.verifier.exc.StructuralCodeConstraintException.<init>:(Ljava/lang/String;)V
athrow
end local 9 11: StackMap locals: org.apache.bcel.verifier.structurals.Subroutines org.apache.bcel.verifier.structurals.Subroutine java.util.Set org.apache.bcel.verifier.structurals.Subroutine[] org.apache.bcel.verifier.structurals.Subroutine int int org.apache.bcel.verifier.structurals.Subroutine[] int
StackMap stack:
aload 0
aload 4
aload 2
invokevirtual org.apache.bcel.verifier.structurals.Subroutines.noRecursiveCalls:(Lorg/apache/bcel/verifier/structurals/Subroutine;Ljava/util/Set;)V
12: aload 2
iload 8
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
invokeinterface java.util.Set.remove:(Ljava/lang/Object;)Z
pop
end local 8 end local 4 13: iinc 5 1
StackMap locals: org.apache.bcel.verifier.structurals.Subroutines org.apache.bcel.verifier.structurals.Subroutine java.util.Set org.apache.bcel.verifier.structurals.Subroutine[] top int int org.apache.bcel.verifier.structurals.Subroutine[]
StackMap stack:
14: iload 5
iload 6
if_icmplt 2
15: return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 16 0 this Lorg/apache/bcel/verifier/structurals/Subroutines;
0 16 1 sub Lorg/apache/bcel/verifier/structurals/Subroutine;
0 16 2 set Ljava/util/Set<Ljava/lang/Integer;>;
1 16 3 subs [Lorg/apache/bcel/verifier/structurals/Subroutine;
3 13 4 sub2 Lorg/apache/bcel/verifier/structurals/Subroutine;
4 13 8 index I
6 11 9 si Lorg/apache/bcel/verifier/structurals/Subroutines$SubroutineImpl;
Signature: (Lorg/apache/bcel/verifier/structurals/Subroutine;Ljava/util/Set<Ljava/lang/Integer;>;)V
MethodParameters:
Name Flags
sub final
set final
public org.apache.bcel.verifier.structurals.Subroutine getSubroutine(org.apache.bcel.generic.InstructionHandle);
descriptor: (Lorg/apache/bcel/generic/InstructionHandle;)Lorg/apache/bcel/verifier/structurals/Subroutine;
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=3, args_size=2
start local 0 start local 1 0: aload 0
getfield org.apache.bcel.verifier.structurals.Subroutines.subroutines:Ljava/util/Map;
aload 1
invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast org.apache.bcel.verifier.structurals.Subroutine
astore 2
start local 2 1: aload 2
ifnonnull 5
2: new org.apache.bcel.verifier.exc.AssertionViolatedException
dup
3: ldc "Subroutine requested for an InstructionHandle that is not a leader of a subroutine."
4: invokespecial org.apache.bcel.verifier.exc.AssertionViolatedException.<init>:(Ljava/lang/String;)V
athrow
5: StackMap locals: org.apache.bcel.verifier.structurals.Subroutine
StackMap stack:
aload 2
aload 0
getfield org.apache.bcel.verifier.structurals.Subroutines.TOPLEVEL:Lorg/apache/bcel/verifier/structurals/Subroutine;
if_acmpne 7
6: new org.apache.bcel.verifier.exc.AssertionViolatedException
dup
ldc "TOPLEVEL special subroutine requested; use getTopLevel()."
invokespecial org.apache.bcel.verifier.exc.AssertionViolatedException.<init>:(Ljava/lang/String;)V
athrow
7: StackMap locals:
StackMap stack:
aload 2
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 this Lorg/apache/bcel/verifier/structurals/Subroutines;
0 8 1 leader Lorg/apache/bcel/generic/InstructionHandle;
1 8 2 ret Lorg/apache/bcel/verifier/structurals/Subroutine;
MethodParameters:
Name Flags
leader final
public org.apache.bcel.verifier.structurals.Subroutine subroutineOf(org.apache.bcel.generic.InstructionHandle);
descriptor: (Lorg/apache/bcel/generic/InstructionHandle;)Lorg/apache/bcel/verifier/structurals/Subroutine;
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=4, args_size=2
start local 0 start local 1 0: aload 0
getfield org.apache.bcel.verifier.structurals.Subroutines.subroutines:Ljava/util/Map;
invokeinterface java.util.Map.values:()Ljava/util/Collection;
invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
astore 3
goto 4
StackMap locals: org.apache.bcel.verifier.structurals.Subroutines org.apache.bcel.generic.InstructionHandle top java.util.Iterator
StackMap stack:
1: aload 3
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.apache.bcel.verifier.structurals.Subroutine
astore 2
start local 2 2: aload 2
aload 1
invokeinterface org.apache.bcel.verifier.structurals.Subroutine.contains:(Lorg/apache/bcel/generic/InstructionHandle;)Z
ifeq 4
3: aload 2
areturn
end local 2 4: StackMap locals:
StackMap stack:
aload 3
invokeinterface java.util.Iterator.hasNext:()Z
ifne 1
5: getstatic java.lang.System.err:Ljava/io/PrintStream;
new java.lang.StringBuilder
dup
ldc "DEBUG: Please verify '"
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 1
iconst_1
invokevirtual org.apache.bcel.generic.InstructionHandle.toString:(Z)Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
ldc "' lies in dead code."
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
6: aconst_null
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 this Lorg/apache/bcel/verifier/structurals/Subroutines;
0 7 1 any Lorg/apache/bcel/generic/InstructionHandle;
2 4 2 s Lorg/apache/bcel/verifier/structurals/Subroutine;
MethodParameters:
Name Flags
any final
public org.apache.bcel.verifier.structurals.Subroutine getTopLevel();
descriptor: ()Lorg/apache/bcel/verifier/structurals/Subroutine;
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield org.apache.bcel.verifier.structurals.Subroutines.TOPLEVEL:Lorg/apache/bcel/verifier/structurals/Subroutine;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/apache/bcel/verifier/structurals/Subroutines;
private static org.apache.bcel.generic.InstructionHandle[] getSuccessors(org.apache.bcel.generic.InstructionHandle);
descriptor: (Lorg/apache/bcel/generic/InstructionHandle;)[Lorg/apache/bcel/generic/InstructionHandle;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=5, locals=6, args_size=1
start local 0 0: iconst_0
anewarray org.apache.bcel.generic.InstructionHandle
astore 1
start local 1 1: iconst_1
anewarray org.apache.bcel.generic.InstructionHandle
astore 2
start local 2 2: aload 0
invokevirtual org.apache.bcel.generic.InstructionHandle.getInstruction:()Lorg/apache/bcel/generic/Instruction;
astore 3
start local 3 3: aload 3
instanceof org.apache.bcel.generic.RET
ifeq 5
4: aload 1
areturn
5: StackMap locals: org.apache.bcel.generic.InstructionHandle[] org.apache.bcel.generic.InstructionHandle[] org.apache.bcel.generic.Instruction
StackMap stack:
aload 3
instanceof org.apache.bcel.generic.ReturnInstruction
ifeq 7
6: aload 1
areturn
7: StackMap locals:
StackMap stack:
aload 3
instanceof org.apache.bcel.generic.ATHROW
ifeq 9
8: aload 1
areturn
9: StackMap locals:
StackMap stack:
aload 3
instanceof org.apache.bcel.generic.JsrInstruction
ifeq 12
10: aload 2
iconst_0
aload 0
invokevirtual org.apache.bcel.generic.InstructionHandle.getNext:()Lorg/apache/bcel/generic/InstructionHandle;
aastore
11: aload 2
areturn
12: StackMap locals:
StackMap stack:
aload 3
instanceof org.apache.bcel.generic.GotoInstruction
ifeq 15
13: aload 2
iconst_0
aload 3
checkcast org.apache.bcel.generic.GotoInstruction
invokevirtual org.apache.bcel.generic.GotoInstruction.getTarget:()Lorg/apache/bcel/generic/InstructionHandle;
aastore
14: aload 2
areturn
15: StackMap locals:
StackMap stack:
aload 3
instanceof org.apache.bcel.generic.BranchInstruction
ifeq 26
16: aload 3
instanceof org.apache.bcel.generic.Select
ifeq 22
17: aload 3
checkcast org.apache.bcel.generic.Select
invokevirtual org.apache.bcel.generic.Select.getTargets:()[Lorg/apache/bcel/generic/InstructionHandle;
astore 4
start local 4 18: aload 4
arraylength
iconst_1
iadd
anewarray org.apache.bcel.generic.InstructionHandle
astore 5
start local 5 19: aload 5
iconst_0
aload 3
checkcast org.apache.bcel.generic.Select
invokevirtual org.apache.bcel.generic.Select.getTarget:()Lorg/apache/bcel/generic/InstructionHandle;
aastore
20: aload 4
iconst_0
aload 5
iconst_1
aload 4
arraylength
invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
21: aload 5
areturn
end local 5 end local 4 22: StackMap locals:
StackMap stack:
iconst_2
anewarray org.apache.bcel.generic.InstructionHandle
astore 4
start local 4 23: aload 4
iconst_0
aload 0
invokevirtual org.apache.bcel.generic.InstructionHandle.getNext:()Lorg/apache/bcel/generic/InstructionHandle;
aastore
24: aload 4
iconst_1
aload 3
checkcast org.apache.bcel.generic.BranchInstruction
invokevirtual org.apache.bcel.generic.BranchInstruction.getTarget:()Lorg/apache/bcel/generic/InstructionHandle;
aastore
25: aload 4
areturn
end local 4 26: StackMap locals:
StackMap stack:
aload 2
iconst_0
aload 0
invokevirtual org.apache.bcel.generic.InstructionHandle.getNext:()Lorg/apache/bcel/generic/InstructionHandle;
aastore
27: aload 2
areturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 28 0 instruction Lorg/apache/bcel/generic/InstructionHandle;
1 28 1 empty [Lorg/apache/bcel/generic/InstructionHandle;
2 28 2 single [Lorg/apache/bcel/generic/InstructionHandle;
3 28 3 inst Lorg/apache/bcel/generic/Instruction;
18 22 4 matchTargets [Lorg/apache/bcel/generic/InstructionHandle;
19 22 5 ret [Lorg/apache/bcel/generic/InstructionHandle;
23 26 4 pair [Lorg/apache/bcel/generic/InstructionHandle;
MethodParameters:
Name Flags
instruction final
public java.lang.String toString();
descriptor: ()Ljava/lang/String;
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=1, args_size=1
start local 0 0: new java.lang.StringBuilder
dup
ldc "---\n"
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 0
getfield org.apache.bcel.verifier.structurals.Subroutines.subroutines:Ljava/util/Map;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
ldc "\n---\n"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/apache/bcel/verifier/structurals/Subroutines;
}
SourceFile: "Subroutines.java"
NestMembers:
org.apache.bcel.verifier.structurals.Subroutines$ColourConstants org.apache.bcel.verifier.structurals.Subroutines$SubroutineImpl
InnerClasses:
private final ColourConstants = org.apache.bcel.verifier.structurals.Subroutines$ColourConstants of org.apache.bcel.verifier.structurals.Subroutines
private SubroutineImpl = org.apache.bcel.verifier.structurals.Subroutines$SubroutineImpl of org.apache.bcel.verifier.structurals.Subroutines