class org.apache.bcel.verifier.structurals.Subroutines$SubroutineImpl implements org.apache.bcel.verifier.structurals.Subroutine
minor version: 0
major version: 59
flags: flags: (0x0020) ACC_SUPER
this_class: org.apache.bcel.verifier.structurals.Subroutines$SubroutineImpl
super_class: java.lang.Object
{
private static final int UNSET;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: -1
private int localVariable;
descriptor: I
flags: (0x0002) ACC_PRIVATE
private final java.util.Set<org.apache.bcel.generic.InstructionHandle> instructions;
descriptor: Ljava/util/Set;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
Signature: Ljava/util/Set<Lorg/apache/bcel/generic/InstructionHandle;>;
private final java.util.Set<org.apache.bcel.generic.InstructionHandle> theJSRs;
descriptor: Ljava/util/Set;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
Signature: Ljava/util/Set<Lorg/apache/bcel/generic/InstructionHandle;>;
private org.apache.bcel.generic.InstructionHandle theRET;
descriptor: Lorg/apache/bcel/generic/InstructionHandle;
flags: (0x0002) ACC_PRIVATE
final org.apache.bcel.verifier.structurals.Subroutines this$0;
descriptor: Lorg/apache/bcel/verifier/structurals/Subroutines;
flags: (0x1010) ACC_FINAL, ACC_SYNTHETIC
public boolean contains(org.apache.bcel.generic.InstructionHandle);
descriptor: (Lorg/apache/bcel/generic/InstructionHandle;)Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
getfield org.apache.bcel.verifier.structurals.Subroutines$SubroutineImpl.instructions:Ljava/util/Set;
aload 1
invokeinterface java.util.Set.contains:(Ljava/lang/Object;)Z
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/apache/bcel/verifier/structurals/Subroutines$SubroutineImpl;
0 1 1 inst Lorg/apache/bcel/generic/InstructionHandle;
MethodParameters:
Name Flags
inst final
public java.lang.String toString();
descriptor: ()Ljava/lang/String;
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=7, 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 1
ldc "Subroutine: Local variable is '"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 0
getfield org.apache.bcel.verifier.structurals.Subroutines$SubroutineImpl.localVariable:I
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
pop
2: aload 1
ldc "', JSRs are '"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 0
getfield org.apache.bcel.verifier.structurals.Subroutines$SubroutineImpl.theJSRs:Ljava/util/Set;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
pop
3: aload 1
ldc "', RET is '"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 0
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;
pop
4: aload 1
ldc "', Instructions: '"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 0
getfield org.apache.bcel.verifier.structurals.Subroutines$SubroutineImpl.instructions:Ljava/util/Set;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
ldc "'."
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
pop
5: aload 1
ldc " Accessed local variable slots: '"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
pop
6: aload 0
invokevirtual org.apache.bcel.verifier.structurals.Subroutines$SubroutineImpl.getAccessedLocalsIndices:()[I
astore 2
start local 2 7: aload 2
dup
astore 6
arraylength
istore 5
iconst_0
istore 4
goto 11
StackMap locals: org.apache.bcel.verifier.structurals.Subroutines$SubroutineImpl java.lang.StringBuilder int[] top int int int[]
StackMap stack:
8: aload 6
iload 4
iaload
istore 3
start local 3 9: aload 1
iload 3
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
pop
aload 1
ldc " "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
pop
end local 3 10: iinc 4 1
StackMap locals:
StackMap stack:
11: iload 4
iload 5
if_icmplt 8
12: aload 1
ldc "'."
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
pop
13: aload 1
ldc " Recursively (via subsub...routines) accessed local variable slots: '"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
pop
14: aload 0
invokevirtual org.apache.bcel.verifier.structurals.Subroutines$SubroutineImpl.getRecursivelyAccessedLocalsIndices:()[I
astore 2
15: aload 2
dup
astore 6
arraylength
istore 5
iconst_0
istore 4
goto 19
StackMap locals:
StackMap stack:
16: aload 6
iload 4
iaload
istore 3
start local 3 17: aload 1
iload 3
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
pop
aload 1
ldc " "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
pop
end local 3 18: iinc 4 1
StackMap locals:
StackMap stack:
19: iload 4
iload 5
if_icmplt 16
20: aload 1
ldc "'."
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
pop
21: 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 22 0 this Lorg/apache/bcel/verifier/structurals/Subroutines$SubroutineImpl;
1 22 1 ret Ljava/lang/StringBuilder;
7 22 2 alv [I
9 10 3 element I
17 18 3 element I
void setLeavingRET();
descriptor: ()V
flags: (0x0000)
Code:
stack=5, locals=4, args_size=1
start local 0 0: aload 0
getfield org.apache.bcel.verifier.structurals.Subroutines$SubroutineImpl.localVariable:I
iconst_m1
if_icmpne 4
1: new org.apache.bcel.verifier.exc.AssertionViolatedException
dup
2: ldc "setLeavingRET() called for top-level 'subroutine' or forgot to set local variable first."
3: invokespecial org.apache.bcel.verifier.exc.AssertionViolatedException.<init>:(Ljava/lang/String;)V
athrow
4: StackMap locals:
StackMap stack:
aconst_null
astore 1
start local 1 5: aload 0
getfield org.apache.bcel.verifier.structurals.Subroutines$SubroutineImpl.instructions:Ljava/util/Set;
invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
astore 3
goto 13
StackMap locals: org.apache.bcel.verifier.structurals.Subroutines$SubroutineImpl org.apache.bcel.generic.InstructionHandle top java.util.Iterator
StackMap stack:
6: aload 3
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.apache.bcel.generic.InstructionHandle
astore 2
start local 2 7: aload 2
invokevirtual org.apache.bcel.generic.InstructionHandle.getInstruction:()Lorg/apache/bcel/generic/Instruction;
instanceof org.apache.bcel.generic.RET
ifeq 13
8: aload 1
ifnull 12
9: new org.apache.bcel.verifier.exc.StructuralCodeConstraintException
dup
10: new java.lang.StringBuilder
dup
ldc "Subroutine with more then one RET detected: '"
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 1
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
ldc "' and '"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 2
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
ldc "'."
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
11: invokespecial org.apache.bcel.verifier.exc.StructuralCodeConstraintException.<init>:(Ljava/lang/String;)V
athrow
12: StackMap locals: org.apache.bcel.verifier.structurals.Subroutines$SubroutineImpl org.apache.bcel.generic.InstructionHandle org.apache.bcel.generic.InstructionHandle java.util.Iterator
StackMap stack:
aload 2
astore 1
end local 2 13: StackMap locals: org.apache.bcel.verifier.structurals.Subroutines$SubroutineImpl org.apache.bcel.generic.InstructionHandle top java.util.Iterator
StackMap stack:
aload 3
invokeinterface java.util.Iterator.hasNext:()Z
ifne 6
14: aload 1
ifnonnull 16
15: new org.apache.bcel.verifier.exc.StructuralCodeConstraintException
dup
ldc "Subroutine without a RET detected."
invokespecial org.apache.bcel.verifier.exc.StructuralCodeConstraintException.<init>:(Ljava/lang/String;)V
athrow
16: StackMap locals: org.apache.bcel.verifier.structurals.Subroutines$SubroutineImpl org.apache.bcel.generic.InstructionHandle
StackMap stack:
aload 1
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
aload 0
getfield org.apache.bcel.verifier.structurals.Subroutines$SubroutineImpl.localVariable:I
if_icmpeq 20
17: new org.apache.bcel.verifier.exc.StructuralCodeConstraintException
dup
18: new java.lang.StringBuilder
dup
ldc "Subroutine uses '"
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 1
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
ldc "' which does not match the correct local variable '"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 0
getfield org.apache.bcel.verifier.structurals.Subroutines$SubroutineImpl.localVariable:I
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
ldc "'."
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
19: invokespecial org.apache.bcel.verifier.exc.StructuralCodeConstraintException.<init>:(Ljava/lang/String;)V
athrow
20: StackMap locals:
StackMap stack:
aload 0
aload 1
putfield org.apache.bcel.verifier.structurals.Subroutines$SubroutineImpl.theRET:Lorg/apache/bcel/generic/InstructionHandle;
21: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 22 0 this Lorg/apache/bcel/verifier/structurals/Subroutines$SubroutineImpl;
5 22 1 ret Lorg/apache/bcel/generic/InstructionHandle;
7 13 2 actual Lorg/apache/bcel/generic/InstructionHandle;
public org.apache.bcel.generic.InstructionHandle[] getEnteringJsrInstructions();
descriptor: ()[Lorg/apache/bcel/generic/InstructionHandle;
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=2, args_size=1
start local 0 0: aload 0
aload 0
getfield org.apache.bcel.verifier.structurals.Subroutines$SubroutineImpl.this$0:Lorg/apache/bcel/verifier/structurals/Subroutines;
invokevirtual org.apache.bcel.verifier.structurals.Subroutines.getTopLevel:()Lorg/apache/bcel/verifier/structurals/Subroutine;
if_acmpne 2
1: new org.apache.bcel.verifier.exc.AssertionViolatedException
dup
ldc "getLeavingRET() called on top level pseudo-subroutine."
invokespecial org.apache.bcel.verifier.exc.AssertionViolatedException.<init>:(Ljava/lang/String;)V
athrow
2: StackMap locals:
StackMap stack:
aload 0
getfield org.apache.bcel.verifier.structurals.Subroutines$SubroutineImpl.theJSRs:Ljava/util/Set;
invokeinterface java.util.Set.size:()I
anewarray org.apache.bcel.generic.InstructionHandle
astore 1
start local 1 3: aload 0
getfield org.apache.bcel.verifier.structurals.Subroutines$SubroutineImpl.theJSRs:Ljava/util/Set;
aload 1
invokeinterface java.util.Set.toArray:([Ljava/lang/Object;)[Ljava/lang/Object;
checkcast org.apache.bcel.generic.InstructionHandle[]
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lorg/apache/bcel/verifier/structurals/Subroutines$SubroutineImpl;
3 4 1 jsrs [Lorg/apache/bcel/generic/InstructionHandle;
public void addEnteringJsrInstruction(org.apache.bcel.generic.InstructionHandle);
descriptor: (Lorg/apache/bcel/generic/InstructionHandle;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=2, args_size=2
start local 0 start local 1 0: aload 1
ifnull 1
aload 1
invokevirtual org.apache.bcel.generic.InstructionHandle.getInstruction:()Lorg/apache/bcel/generic/Instruction;
instanceof org.apache.bcel.generic.JsrInstruction
ifne 2
1: StackMap locals:
StackMap stack:
new org.apache.bcel.verifier.exc.AssertionViolatedException
dup
ldc "Expecting JsrInstruction InstructionHandle."
invokespecial org.apache.bcel.verifier.exc.AssertionViolatedException.<init>:(Ljava/lang/String;)V
athrow
2: StackMap locals:
StackMap stack:
aload 0
getfield org.apache.bcel.verifier.structurals.Subroutines$SubroutineImpl.localVariable:I
iconst_m1
if_icmpne 4
3: new org.apache.bcel.verifier.exc.AssertionViolatedException
dup
ldc "Set the localVariable first!"
invokespecial org.apache.bcel.verifier.exc.AssertionViolatedException.<init>:(Ljava/lang/String;)V
athrow
4: StackMap locals:
StackMap stack:
aload 0
getfield org.apache.bcel.verifier.structurals.Subroutines$SubroutineImpl.localVariable:I
aload 1
invokevirtual org.apache.bcel.generic.InstructionHandle.getInstruction:()Lorg/apache/bcel/generic/Instruction;
checkcast org.apache.bcel.generic.JsrInstruction
invokevirtual org.apache.bcel.generic.JsrInstruction.getTarget:()Lorg/apache/bcel/generic/InstructionHandle;
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
if_icmpeq 6
5: new org.apache.bcel.verifier.exc.AssertionViolatedException
dup
ldc "Setting a wrong JsrInstruction."
invokespecial org.apache.bcel.verifier.exc.AssertionViolatedException.<init>:(Ljava/lang/String;)V
athrow
6: StackMap locals:
StackMap stack:
aload 0
getfield org.apache.bcel.verifier.structurals.Subroutines$SubroutineImpl.theJSRs:Ljava/util/Set;
aload 1
invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
pop
7: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 this Lorg/apache/bcel/verifier/structurals/Subroutines$SubroutineImpl;
0 8 1 jsrInst Lorg/apache/bcel/generic/InstructionHandle;
MethodParameters:
Name Flags
jsrInst final
public org.apache.bcel.generic.InstructionHandle getLeavingRET();
descriptor: ()Lorg/apache/bcel/generic/InstructionHandle;
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=1, args_size=1
start local 0 0: aload 0
aload 0
getfield org.apache.bcel.verifier.structurals.Subroutines$SubroutineImpl.this$0:Lorg/apache/bcel/verifier/structurals/Subroutines;
invokevirtual org.apache.bcel.verifier.structurals.Subroutines.getTopLevel:()Lorg/apache/bcel/verifier/structurals/Subroutine;
if_acmpne 2
1: new org.apache.bcel.verifier.exc.AssertionViolatedException
dup
ldc "getLeavingRET() called on top level pseudo-subroutine."
invokespecial org.apache.bcel.verifier.exc.AssertionViolatedException.<init>:(Ljava/lang/String;)V
athrow
2: StackMap locals:
StackMap stack:
aload 0
getfield org.apache.bcel.verifier.structurals.Subroutines$SubroutineImpl.theRET:Lorg/apache/bcel/generic/InstructionHandle;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lorg/apache/bcel/verifier/structurals/Subroutines$SubroutineImpl;
public org.apache.bcel.generic.InstructionHandle[] getInstructions();
descriptor: ()[Lorg/apache/bcel/generic/InstructionHandle;
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=2, args_size=1
start local 0 0: aload 0
getfield org.apache.bcel.verifier.structurals.Subroutines$SubroutineImpl.instructions:Ljava/util/Set;
invokeinterface java.util.Set.size:()I
anewarray org.apache.bcel.generic.InstructionHandle
astore 1
start local 1 1: aload 0
getfield org.apache.bcel.verifier.structurals.Subroutines$SubroutineImpl.instructions:Ljava/util/Set;
aload 1
invokeinterface java.util.Set.toArray:([Ljava/lang/Object;)[Ljava/lang/Object;
checkcast org.apache.bcel.generic.InstructionHandle[]
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lorg/apache/bcel/verifier/structurals/Subroutines$SubroutineImpl;
1 2 1 ret [Lorg/apache/bcel/generic/InstructionHandle;
void addInstruction(org.apache.bcel.generic.InstructionHandle);
descriptor: (Lorg/apache/bcel/generic/InstructionHandle;)V
flags: (0x0000)
Code:
stack=3, locals=2, args_size=2
start local 0 start local 1 0: aload 0
getfield org.apache.bcel.verifier.structurals.Subroutines$SubroutineImpl.theRET:Lorg/apache/bcel/generic/InstructionHandle;
ifnull 2
1: new org.apache.bcel.verifier.exc.AssertionViolatedException
dup
ldc "All instructions must have been added before invoking setLeavingRET()."
invokespecial org.apache.bcel.verifier.exc.AssertionViolatedException.<init>:(Ljava/lang/String;)V
athrow
2: StackMap locals:
StackMap stack:
aload 0
getfield org.apache.bcel.verifier.structurals.Subroutines$SubroutineImpl.instructions:Ljava/util/Set;
aload 1
invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
pop
3: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lorg/apache/bcel/verifier/structurals/Subroutines$SubroutineImpl;
0 4 1 ih Lorg/apache/bcel/generic/InstructionHandle;
MethodParameters:
Name Flags
ih final
public int[] getRecursivelyAccessedLocalsIndices();
descriptor: ()[I
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=7, args_size=1
start local 0 0: new java.util.HashSet
dup
invokespecial java.util.HashSet.<init>:()V
astore 1
start local 1 1: aload 0
invokevirtual org.apache.bcel.verifier.structurals.Subroutines$SubroutineImpl.getAccessedLocalsIndices:()[I
astore 2
start local 2 2: aload 2
dup
astore 6
arraylength
istore 5
iconst_0
istore 4
goto 6
StackMap locals: org.apache.bcel.verifier.structurals.Subroutines$SubroutineImpl java.util.Set int[] top int int int[]
StackMap stack:
3: aload 6
iload 4
iaload
istore 3
start local 3 4: aload 1
iload 3
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
pop
end local 3 5: iinc 4 1
StackMap locals:
StackMap stack:
6: iload 4
iload 5
if_icmplt 3
7: aload 0
aload 1
aload 0
invokevirtual org.apache.bcel.verifier.structurals.Subroutines$SubroutineImpl.subSubs:()[Lorg/apache/bcel/verifier/structurals/Subroutine;
invokevirtual org.apache.bcel.verifier.structurals.Subroutines$SubroutineImpl._getRecursivelyAccessedLocalsIndicesHelper:(Ljava/util/Set;[Lorg/apache/bcel/verifier/structurals/Subroutine;)V
8: aload 1
invokeinterface java.util.Set.size:()I
newarray 10
astore 3
start local 3 9: iconst_m1
istore 4
start local 4 10: aload 1
invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
astore 6
goto 14
StackMap locals: org.apache.bcel.verifier.structurals.Subroutines$SubroutineImpl java.util.Set int[] int[] int top java.util.Iterator
StackMap stack:
11: aload 6
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast java.lang.Integer
astore 5
start local 5 12: iinc 4 1
13: aload 3
iload 4
aload 5
invokevirtual java.lang.Integer.intValue:()I
iastore
end local 5 14: StackMap locals:
StackMap stack:
aload 6
invokeinterface java.util.Iterator.hasNext:()Z
ifne 11
15: 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 16 0 this Lorg/apache/bcel/verifier/structurals/Subroutines$SubroutineImpl;
1 16 1 s Ljava/util/Set<Ljava/lang/Integer;>;
2 16 2 lvs [I
4 5 3 lv I
9 16 3 ret [I
10 16 4 j I
12 14 5 index Ljava/lang/Integer;
private void _getRecursivelyAccessedLocalsIndicesHelper(java.util.Set<java.lang.Integer>, org.apache.bcel.verifier.structurals.Subroutine[]);
descriptor: (Ljava/util/Set;[Lorg/apache/bcel/verifier/structurals/Subroutine;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=12, args_size=3
start local 0 start local 1 start local 2 0: aload 2
dup
astore 6
arraylength
istore 5
iconst_0
istore 4
goto 11
StackMap locals: org.apache.bcel.verifier.structurals.Subroutines$SubroutineImpl java.util.Set org.apache.bcel.verifier.structurals.Subroutine[] top int int org.apache.bcel.verifier.structurals.Subroutine[]
StackMap stack:
1: aload 6
iload 4
aaload
astore 3
start local 3 2: aload 3
invokeinterface org.apache.bcel.verifier.structurals.Subroutine.getAccessedLocalsIndices:()[I
astore 7
start local 7 3: aload 7
dup
astore 11
arraylength
istore 10
iconst_0
istore 9
goto 7
StackMap locals: org.apache.bcel.verifier.structurals.Subroutines$SubroutineImpl java.util.Set org.apache.bcel.verifier.structurals.Subroutine[] org.apache.bcel.verifier.structurals.Subroutine int int org.apache.bcel.verifier.structurals.Subroutine[] int[] top int int int[]
StackMap stack:
4: aload 11
iload 9
iaload
istore 8
start local 8 5: aload 1
iload 8
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
pop
end local 8 6: iinc 9 1
StackMap locals:
StackMap stack:
7: iload 9
iload 10
if_icmplt 4
8: aload 3
invokeinterface org.apache.bcel.verifier.structurals.Subroutine.subSubs:()[Lorg/apache/bcel/verifier/structurals/Subroutine;
arraylength
ifeq 10
9: aload 0
aload 1
aload 3
invokeinterface org.apache.bcel.verifier.structurals.Subroutine.subSubs:()[Lorg/apache/bcel/verifier/structurals/Subroutine;
invokevirtual org.apache.bcel.verifier.structurals.Subroutines$SubroutineImpl._getRecursivelyAccessedLocalsIndicesHelper:(Ljava/util/Set;[Lorg/apache/bcel/verifier/structurals/Subroutine;)V
end local 7 end local 3 10: StackMap locals: org.apache.bcel.verifier.structurals.Subroutines$SubroutineImpl java.util.Set org.apache.bcel.verifier.structurals.Subroutine[] top int int org.apache.bcel.verifier.structurals.Subroutine[]
StackMap stack:
iinc 4 1
StackMap locals:
StackMap stack:
11: iload 4
iload 5
if_icmplt 1
12: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 13 0 this Lorg/apache/bcel/verifier/structurals/Subroutines$SubroutineImpl;
0 13 1 s Ljava/util/Set<Ljava/lang/Integer;>;
0 13 2 subs [Lorg/apache/bcel/verifier/structurals/Subroutine;
2 10 3 sub Lorg/apache/bcel/verifier/structurals/Subroutine;
3 10 7 lvs [I
5 6 8 lv I
Signature: (Ljava/util/Set<Ljava/lang/Integer;>;[Lorg/apache/bcel/verifier/structurals/Subroutine;)V
MethodParameters:
Name Flags
s final
subs final
public int[] getAccessedLocalsIndices();
descriptor: ()[I
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=6, args_size=1
start local 0 0: new java.util.HashSet
dup
invokespecial java.util.HashSet.<init>:()V
astore 1
start local 1 1: aload 0
getfield org.apache.bcel.verifier.structurals.Subroutines$SubroutineImpl.theRET:Lorg/apache/bcel/generic/InstructionHandle;
ifnonnull 5
aload 0
aload 0
getfield org.apache.bcel.verifier.structurals.Subroutines$SubroutineImpl.this$0:Lorg/apache/bcel/verifier/structurals/Subroutines;
invokevirtual org.apache.bcel.verifier.structurals.Subroutines.getTopLevel:()Lorg/apache/bcel/verifier/structurals/Subroutine;
if_acmpeq 5
2: new org.apache.bcel.verifier.exc.AssertionViolatedException
dup
3: ldc "This subroutine object must be built up completely before calculating accessed locals."
4: invokespecial org.apache.bcel.verifier.exc.AssertionViolatedException.<init>:(Ljava/lang/String;)V
athrow
5: StackMap locals: java.util.Set
StackMap stack:
aload 0
getfield org.apache.bcel.verifier.structurals.Subroutines$SubroutineImpl.instructions:Ljava/util/Set;
invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
astore 3
goto 17
StackMap locals: org.apache.bcel.verifier.structurals.Subroutines$SubroutineImpl java.util.Set top java.util.Iterator
StackMap stack:
6: aload 3
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.apache.bcel.generic.InstructionHandle
astore 2
start local 2 7: aload 2
invokevirtual org.apache.bcel.generic.InstructionHandle.getInstruction:()Lorg/apache/bcel/generic/Instruction;
instanceof org.apache.bcel.generic.LocalVariableInstruction
ifne 8
aload 2
invokevirtual org.apache.bcel.generic.InstructionHandle.getInstruction:()Lorg/apache/bcel/generic/Instruction;
instanceof org.apache.bcel.generic.RET
ifeq 17
8: StackMap locals: org.apache.bcel.verifier.structurals.Subroutines$SubroutineImpl java.util.Set org.apache.bcel.generic.InstructionHandle java.util.Iterator
StackMap stack:
aload 2
invokevirtual org.apache.bcel.generic.InstructionHandle.getInstruction:()Lorg/apache/bcel/generic/Instruction;
checkcast org.apache.bcel.generic.IndexedInstruction
invokeinterface org.apache.bcel.generic.IndexedInstruction.getIndex:()I
istore 4
start local 4 9: aload 1
iload 4
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
pop
10: aload 2
invokevirtual org.apache.bcel.generic.InstructionHandle.getInstruction:()Lorg/apache/bcel/generic/Instruction;
instanceof org.apache.bcel.generic.LocalVariableInstruction
ifeq 17
11: aload 2
invokevirtual org.apache.bcel.generic.InstructionHandle.getInstruction:()Lorg/apache/bcel/generic/Instruction;
checkcast org.apache.bcel.generic.LocalVariableInstruction
aconst_null
invokevirtual org.apache.bcel.generic.LocalVariableInstruction.getType:(Lorg/apache/bcel/generic/ConstantPoolGen;)Lorg/apache/bcel/generic/Type;
invokevirtual org.apache.bcel.generic.Type.getSize:()I
istore 5
start local 5 12: iload 5
iconst_2
if_icmpne 17
13: aload 1
iload 4
iconst_1
iadd
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
pop
end local 5 14: goto 17
15: StackMap locals: org.apache.bcel.verifier.structurals.Subroutines$SubroutineImpl java.util.Set org.apache.bcel.generic.InstructionHandle java.util.Iterator int
StackMap stack: java.lang.RuntimeException
astore 5
start local 5 16: new org.apache.bcel.verifier.exc.AssertionViolatedException
dup
ldc "BCEL did not like NULL as a ConstantPoolGen object."
aload 5
invokespecial org.apache.bcel.verifier.exc.AssertionViolatedException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
athrow
end local 5 end local 4 end local 2 17: StackMap locals: org.apache.bcel.verifier.structurals.Subroutines$SubroutineImpl java.util.Set top java.util.Iterator
StackMap stack:
aload 3
invokeinterface java.util.Iterator.hasNext:()Z
ifne 6
18: aload 1
invokeinterface java.util.Set.size:()I
newarray 10
astore 2
start local 2 19: iconst_m1
istore 3
start local 3 20: aload 1
invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
astore 5
goto 24
StackMap locals: org.apache.bcel.verifier.structurals.Subroutines$SubroutineImpl java.util.Set int[] int top java.util.Iterator
StackMap stack:
21: aload 5
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast java.lang.Integer
astore 4
start local 4 22: iinc 3 1
23: aload 2
iload 3
aload 4
invokevirtual java.lang.Integer.intValue:()I
iastore
end local 4 24: StackMap locals:
StackMap stack:
aload 5
invokeinterface java.util.Iterator.hasNext:()Z
ifne 21
25: aload 2
areturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 26 0 this Lorg/apache/bcel/verifier/structurals/Subroutines$SubroutineImpl;
1 26 1 acc Ljava/util/Set<Ljava/lang/Integer;>;
7 17 2 ih Lorg/apache/bcel/generic/InstructionHandle;
9 17 4 idx I
12 14 5 s I
16 17 5 re Ljava/lang/RuntimeException;
19 26 2 ret [I
20 26 3 j I
22 24 4 accessedLocal Ljava/lang/Integer;
Exception table:
from to target type
10 14 15 Class java.lang.RuntimeException
public org.apache.bcel.verifier.structurals.Subroutine[] subSubs();
descriptor: ()[Lorg/apache/bcel/verifier/structurals/Subroutine;
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=6, args_size=1
start local 0 0: new java.util.HashSet
dup
invokespecial java.util.HashSet.<init>:()V
astore 1
start local 1 1: aload 0
getfield org.apache.bcel.verifier.structurals.Subroutines$SubroutineImpl.instructions:Ljava/util/Set;
invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
astore 3
goto 7
StackMap locals: org.apache.bcel.verifier.structurals.Subroutines$SubroutineImpl java.util.Set top java.util.Iterator
StackMap stack:
2: aload 3
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.apache.bcel.generic.InstructionHandle
astore 2
start local 2 3: aload 2
invokevirtual org.apache.bcel.generic.InstructionHandle.getInstruction:()Lorg/apache/bcel/generic/Instruction;
astore 4
start local 4 4: aload 4
instanceof org.apache.bcel.generic.JsrInstruction
ifeq 7
5: aload 4
checkcast org.apache.bcel.generic.JsrInstruction
invokevirtual org.apache.bcel.generic.JsrInstruction.getTarget:()Lorg/apache/bcel/generic/InstructionHandle;
astore 5
start local 5 6: aload 1
aload 0
getfield org.apache.bcel.verifier.structurals.Subroutines$SubroutineImpl.this$0:Lorg/apache/bcel/verifier/structurals/Subroutines;
aload 5
invokevirtual org.apache.bcel.verifier.structurals.Subroutines.getSubroutine:(Lorg/apache/bcel/generic/InstructionHandle;)Lorg/apache/bcel/verifier/structurals/Subroutine;
invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
pop
end local 5 end local 4 end local 2 7: StackMap locals:
StackMap stack:
aload 3
invokeinterface java.util.Iterator.hasNext:()Z
ifne 2
8: aload 1
invokeinterface java.util.Set.size:()I
anewarray org.apache.bcel.verifier.structurals.Subroutine
astore 2
start local 2 9: aload 1
aload 2
invokeinterface java.util.Set.toArray:([Ljava/lang/Object;)[Ljava/lang/Object;
checkcast org.apache.bcel.verifier.structurals.Subroutine[]
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 10 0 this Lorg/apache/bcel/verifier/structurals/Subroutines$SubroutineImpl;
1 10 1 h Ljava/util/Set<Lorg/apache/bcel/verifier/structurals/Subroutine;>;
3 7 2 ih Lorg/apache/bcel/generic/InstructionHandle;
4 7 4 inst Lorg/apache/bcel/generic/Instruction;
6 7 5 targ Lorg/apache/bcel/generic/InstructionHandle;
9 10 2 ret [Lorg/apache/bcel/verifier/structurals/Subroutine;
void setLocalVariable(int);
descriptor: (I)V
flags: (0x0000)
Code:
stack=3, locals=2, args_size=2
start local 0 start local 1 0: aload 0
getfield org.apache.bcel.verifier.structurals.Subroutines$SubroutineImpl.localVariable:I
iconst_m1
if_icmpeq 2
1: new org.apache.bcel.verifier.exc.AssertionViolatedException
dup
ldc "localVariable set twice."
invokespecial org.apache.bcel.verifier.exc.AssertionViolatedException.<init>:(Ljava/lang/String;)V
athrow
2: StackMap locals:
StackMap stack:
aload 0
iload 1
putfield org.apache.bcel.verifier.structurals.Subroutines$SubroutineImpl.localVariable:I
3: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lorg/apache/bcel/verifier/structurals/Subroutines$SubroutineImpl;
0 4 1 i I
MethodParameters:
Name Flags
i final
public void <init>(org.apache.bcel.verifier.structurals.Subroutines);
descriptor: (Lorg/apache/bcel/verifier/structurals/Subroutines;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=2, args_size=2
start local 0 0: aload 0
aload 1
putfield org.apache.bcel.verifier.structurals.Subroutines$SubroutineImpl.this$0:Lorg/apache/bcel/verifier/structurals/Subroutines;
aload 0
invokespecial java.lang.Object.<init>:()V
1: aload 0
iconst_m1
putfield org.apache.bcel.verifier.structurals.Subroutines$SubroutineImpl.localVariable:I
2: aload 0
new java.util.HashSet
dup
invokespecial java.util.HashSet.<init>:()V
putfield org.apache.bcel.verifier.structurals.Subroutines$SubroutineImpl.instructions:Ljava/util/Set;
3: aload 0
new java.util.HashSet
dup
invokespecial java.util.HashSet.<init>:()V
putfield org.apache.bcel.verifier.structurals.Subroutines$SubroutineImpl.theJSRs:Ljava/util/Set;
4: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lorg/apache/bcel/verifier/structurals/Subroutines$SubroutineImpl;
MethodParameters:
Name Flags
this$0 final
}
SourceFile: "Subroutines.java"
NestHost: org.apache.bcel.verifier.structurals.Subroutines
InnerClasses:
private SubroutineImpl = org.apache.bcel.verifier.structurals.Subroutines$SubroutineImpl of org.apache.bcel.verifier.structurals.Subroutines