public final class com.sun.tools.classfile.ReferenceFinder
minor version: 0
major version: 59
flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
this_class: com.sun.tools.classfile.ReferenceFinder
super_class: java.lang.Object
{
private final com.sun.tools.classfile.ReferenceFinder$Filter filter;
descriptor: Lcom/sun/tools/classfile/ReferenceFinder$Filter;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final com.sun.tools.classfile.ReferenceFinder$Visitor visitor;
descriptor: Lcom/sun/tools/classfile/ReferenceFinder$Visitor;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private com.sun.tools.classfile.ConstantPool$Visitor<java.lang.Boolean, com.sun.tools.classfile.ConstantPool> cpVisitor;
descriptor: Lcom/sun/tools/classfile/ConstantPool$Visitor;
flags: (0x0002) ACC_PRIVATE
Signature: Lcom/sun/tools/classfile/ConstantPool$Visitor<Ljava/lang/Boolean;Lcom/sun/tools/classfile/ConstantPool;>;
private com.sun.tools.classfile.Instruction$KindVisitor<java.lang.Integer, java.util.List<java.lang.Integer>> codeVisitor;
descriptor: Lcom/sun/tools/classfile/Instruction$KindVisitor;
flags: (0x0002) ACC_PRIVATE
Signature: Lcom/sun/tools/classfile/Instruction$KindVisitor<Ljava/lang/Integer;Ljava/util/List<Ljava/lang/Integer;>;>;
public void <init>(com.sun.tools.classfile.ReferenceFinder$Filter, com.sun.tools.classfile.ReferenceFinder$Visitor);
descriptor: (Lcom/sun/tools/classfile/ReferenceFinder$Filter;Lcom/sun/tools/classfile/ReferenceFinder$Visitor;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: aload 0
2: new com.sun.tools.classfile.ReferenceFinder$1
dup
aload 0
invokespecial com.sun.tools.classfile.ReferenceFinder$1.<init>:(Lcom/sun/tools/classfile/ReferenceFinder;)V
putfield com.sun.tools.classfile.ReferenceFinder.cpVisitor:Lcom/sun/tools/classfile/ConstantPool$Visitor;
3: aload 0
4: new com.sun.tools.classfile.ReferenceFinder$2
dup
aload 0
invokespecial com.sun.tools.classfile.ReferenceFinder$2.<init>:(Lcom/sun/tools/classfile/ReferenceFinder;)V
putfield com.sun.tools.classfile.ReferenceFinder.codeVisitor:Lcom/sun/tools/classfile/Instruction$KindVisitor;
5: aload 0
aload 1
invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast com.sun.tools.classfile.ReferenceFinder$Filter
putfield com.sun.tools.classfile.ReferenceFinder.filter:Lcom/sun/tools/classfile/ReferenceFinder$Filter;
6: aload 0
aload 2
invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast com.sun.tools.classfile.ReferenceFinder$Visitor
putfield com.sun.tools.classfile.ReferenceFinder.visitor:Lcom/sun/tools/classfile/ReferenceFinder$Visitor;
7: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 this Lcom/sun/tools/classfile/ReferenceFinder;
0 8 1 filter Lcom/sun/tools/classfile/ReferenceFinder$Filter;
0 8 2 visitor Lcom/sun/tools/classfile/ReferenceFinder$Visitor;
MethodParameters:
Name Flags
filter
visitor
public boolean parse(com.sun.tools.classfile.ClassFile);
descriptor: (Lcom/sun/tools/classfile/ClassFile;)Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=13, 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: iconst_1
istore 3
start local 3 2: aload 1
getfield com.sun.tools.classfile.ClassFile.constant_pool:Lcom/sun/tools/classfile/ConstantPool;
invokevirtual com.sun.tools.classfile.ConstantPool.entries:()Ljava/lang/Iterable;
invokeinterface java.lang.Iterable.iterator:()Ljava/util/Iterator;
astore 5
goto 7
StackMap locals: com.sun.tools.classfile.ReferenceFinder com.sun.tools.classfile.ClassFile java.util.List int top java.util.Iterator
StackMap stack:
3: aload 5
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast com.sun.tools.classfile.ConstantPool$CPInfo
astore 4
start local 4 4: aload 4
aload 0
getfield com.sun.tools.classfile.ReferenceFinder.cpVisitor:Lcom/sun/tools/classfile/ConstantPool$Visitor;
aload 1
getfield com.sun.tools.classfile.ClassFile.constant_pool:Lcom/sun/tools/classfile/ConstantPool;
invokevirtual com.sun.tools.classfile.ConstantPool$CPInfo.accept:(Lcom/sun/tools/classfile/ConstantPool$Visitor;Ljava/lang/Object;)Ljava/lang/Object;
checkcast java.lang.Boolean
invokevirtual java.lang.Boolean.booleanValue:()Z
ifeq 6
5: aload 2
iload 3
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
pop
6: StackMap locals: com.sun.tools.classfile.ReferenceFinder com.sun.tools.classfile.ClassFile java.util.List int com.sun.tools.classfile.ConstantPool$CPInfo java.util.Iterator
StackMap stack:
iload 3
aload 4
invokevirtual com.sun.tools.classfile.ConstantPool$CPInfo.size:()I
iadd
istore 3
end local 4 7: StackMap locals: com.sun.tools.classfile.ReferenceFinder com.sun.tools.classfile.ClassFile java.util.List int top java.util.Iterator
StackMap stack:
aload 5
invokeinterface java.util.Iterator.hasNext:()Z
ifne 3
8: aload 2
invokeinterface java.util.List.isEmpty:()Z
ifeq 10
9: iconst_0
ireturn
10: StackMap locals: com.sun.tools.classfile.ReferenceFinder com.sun.tools.classfile.ClassFile java.util.List int
StackMap stack:
aload 1
getfield com.sun.tools.classfile.ClassFile.methods:[Lcom/sun/tools/classfile/Method;
dup
astore 7
arraylength
istore 6
iconst_0
istore 5
goto 29
StackMap locals: com.sun.tools.classfile.ReferenceFinder com.sun.tools.classfile.ClassFile java.util.List int top int int com.sun.tools.classfile.Method[]
StackMap stack:
11: aload 7
iload 5
aaload
astore 4
start local 4 12: new java.util.HashSet
dup
invokespecial java.util.HashSet.<init>:()V
astore 8
start local 8 13: aload 4
getfield com.sun.tools.classfile.Method.attributes:Lcom/sun/tools/classfile/Attributes;
ldc "Code"
invokevirtual com.sun.tools.classfile.Attributes.get:(Ljava/lang/String;)Lcom/sun/tools/classfile/Attribute;
checkcast com.sun.tools.classfile.Code_attribute
astore 9
start local 9 14: aload 9
ifnull 21
15: aload 9
invokevirtual com.sun.tools.classfile.Code_attribute.getInstructions:()Ljava/lang/Iterable;
invokeinterface java.lang.Iterable.iterator:()Ljava/util/Iterator;
astore 11
goto 20
StackMap locals: com.sun.tools.classfile.ReferenceFinder com.sun.tools.classfile.ClassFile java.util.List int com.sun.tools.classfile.Method int int com.sun.tools.classfile.Method[] java.util.Set com.sun.tools.classfile.Code_attribute top java.util.Iterator
StackMap stack:
16: aload 11
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast com.sun.tools.classfile.Instruction
astore 10
start local 10 17: aload 10
aload 0
getfield com.sun.tools.classfile.ReferenceFinder.codeVisitor:Lcom/sun/tools/classfile/Instruction$KindVisitor;
aload 2
invokevirtual com.sun.tools.classfile.Instruction.accept:(Lcom/sun/tools/classfile/Instruction$KindVisitor;Ljava/lang/Object;)Ljava/lang/Object;
checkcast java.lang.Integer
invokevirtual java.lang.Integer.intValue:()I
istore 12
start local 12 18: iload 12
ifle 20
19: aload 8
iload 12
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
pop
end local 12 end local 10 20: StackMap locals:
StackMap stack:
aload 11
invokeinterface java.util.Iterator.hasNext:()Z
ifne 16
21: StackMap locals: com.sun.tools.classfile.ReferenceFinder com.sun.tools.classfile.ClassFile java.util.List int com.sun.tools.classfile.Method int int com.sun.tools.classfile.Method[] java.util.Set com.sun.tools.classfile.Code_attribute
StackMap stack:
aload 8
invokeinterface java.util.Set.size:()I
ifle 28
22: new java.util.ArrayList
dup
aload 8
invokeinterface java.util.Set.size:()I
invokespecial java.util.ArrayList.<init>:(I)V
astore 10
start local 10 23: aload 8
invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
astore 12
goto 26
StackMap locals: com.sun.tools.classfile.ReferenceFinder com.sun.tools.classfile.ClassFile java.util.List int com.sun.tools.classfile.Method int int com.sun.tools.classfile.Method[] java.util.Set com.sun.tools.classfile.Code_attribute java.util.List top java.util.Iterator
StackMap stack:
24: aload 12
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast java.lang.Integer
invokevirtual java.lang.Integer.intValue:()I
istore 11
start local 11 25: aload 10
ldc Lcom/sun/tools/classfile/ConstantPool$CPRefInfo;
aload 1
getfield com.sun.tools.classfile.ClassFile.constant_pool:Lcom/sun/tools/classfile/ConstantPool;
iload 11
invokevirtual com.sun.tools.classfile.ConstantPool.get:(I)Lcom/sun/tools/classfile/ConstantPool$CPInfo;
invokevirtual java.lang.Class.cast:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast com.sun.tools.classfile.ConstantPool$CPRefInfo
invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
pop
end local 11 26: StackMap locals:
StackMap stack:
aload 12
invokeinterface java.util.Iterator.hasNext:()Z
ifne 24
27: aload 0
getfield com.sun.tools.classfile.ReferenceFinder.visitor:Lcom/sun/tools/classfile/ReferenceFinder$Visitor;
aload 1
aload 4
aload 10
invokeinterface com.sun.tools.classfile.ReferenceFinder$Visitor.visit:(Lcom/sun/tools/classfile/ClassFile;Lcom/sun/tools/classfile/Method;Ljava/util/List;)V
end local 10 end local 9 end local 8 end local 4 28: StackMap locals: com.sun.tools.classfile.ReferenceFinder com.sun.tools.classfile.ClassFile java.util.List int top int int com.sun.tools.classfile.Method[]
StackMap stack:
iinc 5 1
StackMap locals:
StackMap stack:
29: iload 5
iload 6
if_icmplt 11
30: iconst_1
ireturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 31 0 this Lcom/sun/tools/classfile/ReferenceFinder;
0 31 1 cf Lcom/sun/tools/classfile/ClassFile;
1 31 2 cprefs Ljava/util/List<Ljava/lang/Integer;>;
2 31 3 index I
4 7 4 cpInfo Lcom/sun/tools/classfile/ConstantPool$CPInfo;
12 28 4 m Lcom/sun/tools/classfile/Method;
13 28 8 ids Ljava/util/Set<Ljava/lang/Integer;>;
14 28 9 c_attr Lcom/sun/tools/classfile/Code_attribute;
17 20 10 instr Lcom/sun/tools/classfile/Instruction;
18 20 12 idx I
23 28 10 refInfos Ljava/util/List<Lcom/sun/tools/classfile/ConstantPool$CPRefInfo;>;
25 26 11 id I
Exceptions:
throws com.sun.tools.classfile.ConstantPoolException
MethodParameters:
Name Flags
cf
}
SourceFile: "ReferenceFinder.java"
NestMembers:
com.sun.tools.classfile.ReferenceFinder$1 com.sun.tools.classfile.ReferenceFinder$2 com.sun.tools.classfile.ReferenceFinder$Filter com.sun.tools.classfile.ReferenceFinder$Visitor
InnerClasses:
public abstract CPInfo = com.sun.tools.classfile.ConstantPool$CPInfo of com.sun.tools.classfile.ConstantPool
public abstract CPRefInfo = com.sun.tools.classfile.ConstantPool$CPRefInfo of com.sun.tools.classfile.ConstantPool
public abstract Visitor = com.sun.tools.classfile.ConstantPool$Visitor of com.sun.tools.classfile.ConstantPool
public abstract KindVisitor = com.sun.tools.classfile.Instruction$KindVisitor of com.sun.tools.classfile.Instruction
com.sun.tools.classfile.ReferenceFinder$1
com.sun.tools.classfile.ReferenceFinder$2
public abstract Filter = com.sun.tools.classfile.ReferenceFinder$Filter of com.sun.tools.classfile.ReferenceFinder
public abstract Visitor = com.sun.tools.classfile.ReferenceFinder$Visitor of com.sun.tools.classfile.ReferenceFinder