proguard.classfile.util
Class DynamicMemberReferenceInitializer

java.lang.Object
  extended by proguard.classfile.util.SimplifiedVisitor
      extended by proguard.classfile.util.DynamicMemberReferenceInitializer
All Implemented Interfaces:
AttributeVisitor, ConstantVisitor, InstructionVisitor, MemberVisitor

public class DynamicMemberReferenceInitializer
extends SimplifiedVisitor
implements InstructionVisitor, ConstantVisitor, AttributeVisitor, MemberVisitor

This InstructionVisitor initializes any constant Class.get[Declared]{Field,Method} references of all instructions it visits. More specifically, it fills out the references of string constant pool entries that refer to a class member in the program class pool or in the library class pool.

It optionally prints notes if on usage of (SomeClass)Class.forName(variable).newInstance().

The class hierarchy and references must be initialized before using this visitor.

See Also:
ClassSuperHierarchyInitializer, ClassReferenceInitializer

Field Summary
static int A
           
static int B
           
static int C
           
static int D
           
static int X
           
static int Y
           
static int Z
           
 
Constructor Summary
DynamicMemberReferenceInitializer(ClassPool programClassPool, ClassPool libraryClassPool, WarningPrinter notePrinter, StringMatcher noteFieldExceptionMatcher, StringMatcher noteMethodExceptionMatcher)
          Creates a new DynamicMemberReferenceInitializer.
 
Method Summary
 void visitAnyInstruction(Clazz clazz, Method method, CodeAttribute codeAttribute, int offset, Instruction instruction)
          Visits any type of Instruction.
 void visitClassConstant(Clazz clazz, ClassConstant classConstant)
          Remembers the referenced class.
 void visitLibraryField(LibraryClass libraryClass, LibraryField libraryField)
           
 void visitLibraryMethod(LibraryClass libraryClass, LibraryMethod libraryMethod)
           
 void visitProgramField(ProgramClass programClass, ProgramField programField)
           
 void visitProgramMethod(ProgramClass programClass, ProgramMethod programMethod)
           
 void visitStringConstant(Clazz clazz, StringConstant stringConstant)
          Fills out the link to the referenced class member.
 
Methods inherited from class proguard.classfile.util.SimplifiedVisitor
visitAnnotation, visitAnnotation, visitAnnotation, visitAnnotation, visitAnnotation, visitAnnotationDefaultAttribute, visitAnnotationElementValue, visitAnyAnnotationsAttribute, visitAnyAttribute, visitAnyClass, visitAnyConstant, visitAnyElementValue, visitAnyMember, visitAnyMethodrefConstant, visitAnyParameterAnnotationsAttribute, visitAnyRefConstant, visitAnyStackMapFrame, visitAnySwitchInstruction, visitAnyVerificationType, visitArrayElementValue, visitBranchInstruction, visitClassElementValue, visitCodeAttribute, visitConstantElementValue, visitConstantInstruction, visitConstantValueAttribute, visitDeprecatedAttribute, visitDeprecatedAttribute, visitDeprecatedAttribute, visitDeprecatedAttribute, visitDoubleConstant, visitDoubleType, visitEnclosingMethodAttribute, visitEnumConstantElementValue, visitExceptionsAttribute, visitFieldrefConstant, visitFloatConstant, visitFloatType, visitFullFrame, visitInnerClassesAttribute, visitIntegerConstant, visitIntegerType, visitInterfaceMethodrefConstant, visitLessZeroFrame, visitLibraryClass, visitLibraryMember, visitLineNumberTableAttribute, visitLocalVariableTableAttribute, visitLocalVariableTypeTableAttribute, visitLongConstant, visitLongType, visitLookUpSwitchInstruction, visitMethodrefConstant, visitMoreZeroFrame, visitNameAndTypeConstant, visitNullType, visitObjectType, visitProgramClass, visitProgramMember, visitRuntimeInvisibleAnnotationsAttribute, visitRuntimeInvisibleAnnotationsAttribute, visitRuntimeInvisibleAnnotationsAttribute, visitRuntimeInvisibleAnnotationsAttribute, visitRuntimeInvisibleParameterAnnotationsAttribute, visitRuntimeVisibleAnnotationsAttribute, visitRuntimeVisibleAnnotationsAttribute, visitRuntimeVisibleAnnotationsAttribute, visitRuntimeVisibleAnnotationsAttribute, visitRuntimeVisibleParameterAnnotationsAttribute, visitSameOneFrame, visitSameZeroFrame, visitSignatureAttribute, visitSignatureAttribute, visitSignatureAttribute, visitSignatureAttribute, visitSimpleInstruction, visitSourceDirAttribute, visitSourceFileAttribute, visitStackDoubleType, visitStackFloatType, visitStackIntegerType, visitStackLongType, visitStackMapAttribute, visitStackMapTableAttribute, visitStackNullType, visitStackObjectType, visitStackTopType, visitStackUninitializedThisType, visitStackUninitializedType, visitSyntheticAttribute, visitSyntheticAttribute, visitSyntheticAttribute, visitSyntheticAttribute, visitTableSwitchInstruction, visitTopType, visitUninitializedThisType, visitUninitializedType, visitUnknownAttribute, visitUtf8Constant, visitVariableInstruction, visitVariablesDoubleType, visitVariablesFloatType, visitVariablesIntegerType, visitVariablesLongType, visitVariablesNullType, visitVariablesObjectType, visitVariablesTopType, visitVariablesUninitializedThisType, visitVariablesUninitializedType
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface proguard.classfile.instruction.visitor.InstructionVisitor
visitBranchInstruction, visitConstantInstruction, visitLookUpSwitchInstruction, visitSimpleInstruction, visitTableSwitchInstruction, visitVariableInstruction
 
Methods inherited from interface proguard.classfile.constant.visitor.ConstantVisitor
visitDoubleConstant, visitFieldrefConstant, visitFloatConstant, visitIntegerConstant, visitInterfaceMethodrefConstant, visitLongConstant, visitMethodrefConstant, visitNameAndTypeConstant, visitUtf8Constant
 
Methods inherited from interface proguard.classfile.attribute.visitor.AttributeVisitor
visitAnnotationDefaultAttribute, visitCodeAttribute, visitConstantValueAttribute, visitDeprecatedAttribute, visitDeprecatedAttribute, visitDeprecatedAttribute, visitEnclosingMethodAttribute, visitExceptionsAttribute, visitInnerClassesAttribute, visitLineNumberTableAttribute, visitLocalVariableTableAttribute, visitLocalVariableTypeTableAttribute, visitRuntimeInvisibleAnnotationsAttribute, visitRuntimeInvisibleAnnotationsAttribute, visitRuntimeInvisibleAnnotationsAttribute, visitRuntimeInvisibleParameterAnnotationsAttribute, visitRuntimeVisibleAnnotationsAttribute, visitRuntimeVisibleAnnotationsAttribute, visitRuntimeVisibleAnnotationsAttribute, visitRuntimeVisibleParameterAnnotationsAttribute, visitSignatureAttribute, visitSignatureAttribute, visitSignatureAttribute, visitSourceDirAttribute, visitSourceFileAttribute, visitStackMapAttribute, visitStackMapTableAttribute, visitSyntheticAttribute, visitSyntheticAttribute, visitSyntheticAttribute, visitUnknownAttribute
 

Field Detail

X

public static final int X
See Also:
Constant Field Values

Y

public static final int Y
See Also:
Constant Field Values

Z

public static final int Z
See Also:
Constant Field Values

A

public static final int A
See Also:
Constant Field Values

B

public static final int B
See Also:
Constant Field Values

C

public static final int C
See Also:
Constant Field Values

D

public static final int D
See Also:
Constant Field Values
Constructor Detail

DynamicMemberReferenceInitializer

public DynamicMemberReferenceInitializer(ClassPool programClassPool,
                                         ClassPool libraryClassPool,
                                         WarningPrinter notePrinter,
                                         StringMatcher noteFieldExceptionMatcher,
                                         StringMatcher noteMethodExceptionMatcher)
Creates a new DynamicMemberReferenceInitializer.

Method Detail

visitAnyInstruction

public void visitAnyInstruction(Clazz clazz,
                                Method method,
                                CodeAttribute codeAttribute,
                                int offset,
                                Instruction instruction)
Description copied from class: SimplifiedVisitor
Visits any type of Instruction.

Overrides:
visitAnyInstruction in class SimplifiedVisitor

visitClassConstant

public void visitClassConstant(Clazz clazz,
                               ClassConstant classConstant)
Remembers the referenced class.

Specified by:
visitClassConstant in interface ConstantVisitor
Overrides:
visitClassConstant in class SimplifiedVisitor

visitStringConstant

public void visitStringConstant(Clazz clazz,
                                StringConstant stringConstant)
Fills out the link to the referenced class member.

Specified by:
visitStringConstant in interface ConstantVisitor
Overrides:
visitStringConstant in class SimplifiedVisitor

visitProgramField

public void visitProgramField(ProgramClass programClass,
                              ProgramField programField)
Specified by:
visitProgramField in interface MemberVisitor
Overrides:
visitProgramField in class SimplifiedVisitor

visitProgramMethod

public void visitProgramMethod(ProgramClass programClass,
                               ProgramMethod programMethod)
Specified by:
visitProgramMethod in interface MemberVisitor
Overrides:
visitProgramMethod in class SimplifiedVisitor

visitLibraryField

public void visitLibraryField(LibraryClass libraryClass,
                              LibraryField libraryField)
Specified by:
visitLibraryField in interface MemberVisitor
Overrides:
visitLibraryField in class SimplifiedVisitor

visitLibraryMethod

public void visitLibraryMethod(LibraryClass libraryClass,
                               LibraryMethod libraryMethod)
Specified by:
visitLibraryMethod in interface MemberVisitor
Overrides:
visitLibraryMethod in class SimplifiedVisitor