proguard.optimize.peephole
Class TargetClassChanger

java.lang.Object
  extended by proguard.classfile.util.SimplifiedVisitor
      extended by proguard.optimize.peephole.TargetClassChanger
All Implemented Interfaces:
AnnotationVisitor, ElementValueVisitor, AttributeVisitor, LocalVariableInfoVisitor, LocalVariableTypeInfoVisitor, ConstantVisitor, ClassVisitor, MemberVisitor

public class TargetClassChanger
extends SimplifiedVisitor
implements ClassVisitor, ConstantVisitor, MemberVisitor, AttributeVisitor, LocalVariableInfoVisitor, LocalVariableTypeInfoVisitor, AnnotationVisitor, ElementValueVisitor

This ClassVisitor replaces references to classes and class members if the classes have targets that are intended to replace them.

See Also:
VerticalClassMerger, ClassReferenceFixer, MemberReferenceFixer

Constructor Summary
TargetClassChanger()
           
 
Method Summary
 void visitAnnotation(Clazz clazz, Annotation annotation)
           
 void visitAnnotationDefaultAttribute(Clazz clazz, Method method, AnnotationDefaultAttribute annotationDefaultAttribute)
           
 void visitAnnotationElementValue(Clazz clazz, Annotation annotation, AnnotationElementValue annotationElementValue)
           
 void visitAnyAnnotationsAttribute(Clazz clazz, AnnotationsAttribute annotationsAttribute)
          Visits any type of AnnotationsAttribute of a class.
 void visitAnyAttribute(Clazz clazz, Attribute attribute)
          Visit any type of attribute.
 void visitAnyConstant(Clazz clazz, Constant constant)
           
 void visitAnyElementValue(Clazz clazz, Annotation annotation, ElementValue elementValue)
           
 void visitAnyParameterAnnotationsAttribute(Clazz clazz, Method method, ParameterAnnotationsAttribute parameterAnnotationsAttribute)
          Visits any type of ParameterAnnotationsAttribute.
 void visitAnyRefConstant(Clazz clazz, RefConstant refConstant)
          Visits any type of RefConstant of the given class.
 void visitArrayElementValue(Clazz clazz, Annotation annotation, ArrayElementValue arrayElementValue)
           
 void visitClassConstant(Clazz clazz, ClassConstant classConstant)
           
 void visitClassElementValue(Clazz clazz, Annotation annotation, ClassElementValue classElementValue)
           
 void visitCodeAttribute(Clazz clazz, Method method, CodeAttribute codeAttribute)
           
 void visitConstantElementValue(Clazz clazz, Annotation annotation, ConstantElementValue constantElementValue)
           
 void visitEnumConstantElementValue(Clazz clazz, Annotation annotation, EnumConstantElementValue enumConstantElementValue)
           
 void visitLibraryClass(LibraryClass libraryClass)
           
 void visitLibraryField(LibraryClass libraryClass, LibraryField libraryField)
           
 void visitLibraryMethod(LibraryClass libraryClass, LibraryMethod libraryMethod)
           
 void visitLocalVariableInfo(Clazz clazz, Method method, CodeAttribute codeAttribute, LocalVariableInfo localVariableInfo)
           
 void visitLocalVariableTableAttribute(Clazz clazz, Method method, CodeAttribute codeAttribute, LocalVariableTableAttribute localVariableTableAttribute)
           
 void visitLocalVariableTypeInfo(Clazz clazz, Method method, CodeAttribute codeAttribute, LocalVariableTypeInfo localVariableTypeInfo)
           
 void visitLocalVariableTypeTableAttribute(Clazz clazz, Method method, CodeAttribute codeAttribute, LocalVariableTypeTableAttribute localVariableTypeTableAttribute)
           
 void visitProgramClass(ProgramClass programClass)
           
 void visitProgramField(ProgramClass programClass, ProgramField programField)
           
 void visitProgramMethod(ProgramClass programClass, ProgramMethod programMethod)
           
 void visitSignatureAttribute(Clazz clazz, SignatureAttribute signatureAttribute)
           
 void visitStringConstant(Clazz clazz, StringConstant stringConstant)
           
 
Methods inherited from class proguard.classfile.util.SimplifiedVisitor
visitAnnotation, visitAnnotation, visitAnnotation, visitAnnotation, visitAnyClass, visitAnyInstruction, visitAnyMember, visitAnyMethodrefConstant, visitAnyStackMapFrame, visitAnySwitchInstruction, visitAnyVerificationType, visitBranchInstruction, visitConstantInstruction, visitConstantValueAttribute, visitDeprecatedAttribute, visitDeprecatedAttribute, visitDeprecatedAttribute, visitDeprecatedAttribute, visitDoubleConstant, visitDoubleType, visitEnclosingMethodAttribute, visitExceptionsAttribute, visitFieldrefConstant, visitFloatConstant, visitFloatType, visitFullFrame, visitInnerClassesAttribute, visitIntegerConstant, visitIntegerType, visitInterfaceMethodrefConstant, visitLessZeroFrame, visitLibraryMember, visitLineNumberTableAttribute, visitLongConstant, visitLongType, visitLookUpSwitchInstruction, visitMethodrefConstant, visitMoreZeroFrame, visitNameAndTypeConstant, visitNullType, visitObjectType, visitProgramMember, visitRuntimeInvisibleAnnotationsAttribute, visitRuntimeInvisibleAnnotationsAttribute, visitRuntimeInvisibleAnnotationsAttribute, visitRuntimeInvisibleAnnotationsAttribute, visitRuntimeInvisibleParameterAnnotationsAttribute, visitRuntimeVisibleAnnotationsAttribute, visitRuntimeVisibleAnnotationsAttribute, visitRuntimeVisibleAnnotationsAttribute, visitRuntimeVisibleAnnotationsAttribute, visitRuntimeVisibleParameterAnnotationsAttribute, visitSameOneFrame, visitSameZeroFrame, 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.constant.visitor.ConstantVisitor
visitDoubleConstant, visitFieldrefConstant, visitFloatConstant, visitIntegerConstant, visitInterfaceMethodrefConstant, visitLongConstant, visitMethodrefConstant, visitNameAndTypeConstant, visitUtf8Constant
 
Methods inherited from interface proguard.classfile.attribute.visitor.AttributeVisitor
visitConstantValueAttribute, visitDeprecatedAttribute, visitDeprecatedAttribute, visitDeprecatedAttribute, visitEnclosingMethodAttribute, visitExceptionsAttribute, visitInnerClassesAttribute, visitLineNumberTableAttribute, visitRuntimeInvisibleAnnotationsAttribute, visitRuntimeInvisibleAnnotationsAttribute, visitRuntimeInvisibleAnnotationsAttribute, visitRuntimeInvisibleParameterAnnotationsAttribute, visitRuntimeVisibleAnnotationsAttribute, visitRuntimeVisibleAnnotationsAttribute, visitRuntimeVisibleAnnotationsAttribute, visitRuntimeVisibleParameterAnnotationsAttribute, visitSignatureAttribute, visitSignatureAttribute, visitSourceDirAttribute, visitSourceFileAttribute, visitStackMapAttribute, visitStackMapTableAttribute, visitSyntheticAttribute, visitSyntheticAttribute, visitSyntheticAttribute, visitUnknownAttribute
 
Methods inherited from interface proguard.classfile.attribute.annotation.visitor.AnnotationVisitor
visitAnnotation, visitAnnotation, visitAnnotation
 

Constructor Detail

TargetClassChanger

public TargetClassChanger()
Method Detail

visitProgramClass

public void visitProgramClass(ProgramClass programClass)
Specified by:
visitProgramClass in interface ClassVisitor
Overrides:
visitProgramClass in class SimplifiedVisitor

visitLibraryClass

public void visitLibraryClass(LibraryClass libraryClass)
Specified by:
visitLibraryClass in interface ClassVisitor
Overrides:
visitLibraryClass 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

visitAnyConstant

public void visitAnyConstant(Clazz clazz,
                             Constant constant)
Overrides:
visitAnyConstant in class SimplifiedVisitor

visitStringConstant

public void visitStringConstant(Clazz clazz,
                                StringConstant stringConstant)
Specified by:
visitStringConstant in interface ConstantVisitor
Overrides:
visitStringConstant in class SimplifiedVisitor

visitAnyRefConstant

public void visitAnyRefConstant(Clazz clazz,
                                RefConstant refConstant)
Description copied from class: SimplifiedVisitor
Visits any type of RefConstant of the given class.

Overrides:
visitAnyRefConstant in class SimplifiedVisitor

visitClassConstant

public void visitClassConstant(Clazz clazz,
                               ClassConstant classConstant)
Specified by:
visitClassConstant in interface ConstantVisitor
Overrides:
visitClassConstant in class SimplifiedVisitor

visitAnyAttribute

public void visitAnyAttribute(Clazz clazz,
                              Attribute attribute)
Description copied from class: SimplifiedVisitor
Visit any type of attribute.

Overrides:
visitAnyAttribute in class SimplifiedVisitor

visitCodeAttribute

public void visitCodeAttribute(Clazz clazz,
                               Method method,
                               CodeAttribute codeAttribute)
Specified by:
visitCodeAttribute in interface AttributeVisitor
Overrides:
visitCodeAttribute in class SimplifiedVisitor

visitLocalVariableTableAttribute

public void visitLocalVariableTableAttribute(Clazz clazz,
                                             Method method,
                                             CodeAttribute codeAttribute,
                                             LocalVariableTableAttribute localVariableTableAttribute)
Specified by:
visitLocalVariableTableAttribute in interface AttributeVisitor
Overrides:
visitLocalVariableTableAttribute in class SimplifiedVisitor

visitLocalVariableTypeTableAttribute

public void visitLocalVariableTypeTableAttribute(Clazz clazz,
                                                 Method method,
                                                 CodeAttribute codeAttribute,
                                                 LocalVariableTypeTableAttribute localVariableTypeTableAttribute)
Specified by:
visitLocalVariableTypeTableAttribute in interface AttributeVisitor
Overrides:
visitLocalVariableTypeTableAttribute in class SimplifiedVisitor

visitSignatureAttribute

public void visitSignatureAttribute(Clazz clazz,
                                    SignatureAttribute signatureAttribute)
Specified by:
visitSignatureAttribute in interface AttributeVisitor
Overrides:
visitSignatureAttribute in class SimplifiedVisitor

visitAnyAnnotationsAttribute

public void visitAnyAnnotationsAttribute(Clazz clazz,
                                         AnnotationsAttribute annotationsAttribute)
Description copied from class: SimplifiedVisitor
Visits any type of AnnotationsAttribute of a class.

Overrides:
visitAnyAnnotationsAttribute in class SimplifiedVisitor

visitAnyParameterAnnotationsAttribute

public void visitAnyParameterAnnotationsAttribute(Clazz clazz,
                                                  Method method,
                                                  ParameterAnnotationsAttribute parameterAnnotationsAttribute)
Description copied from class: SimplifiedVisitor
Visits any type of ParameterAnnotationsAttribute.

Overrides:
visitAnyParameterAnnotationsAttribute in class SimplifiedVisitor

visitAnnotationDefaultAttribute

public void visitAnnotationDefaultAttribute(Clazz clazz,
                                            Method method,
                                            AnnotationDefaultAttribute annotationDefaultAttribute)
Specified by:
visitAnnotationDefaultAttribute in interface AttributeVisitor
Overrides:
visitAnnotationDefaultAttribute in class SimplifiedVisitor

visitLocalVariableInfo

public void visitLocalVariableInfo(Clazz clazz,
                                   Method method,
                                   CodeAttribute codeAttribute,
                                   LocalVariableInfo localVariableInfo)
Specified by:
visitLocalVariableInfo in interface LocalVariableInfoVisitor

visitLocalVariableTypeInfo

public void visitLocalVariableTypeInfo(Clazz clazz,
                                       Method method,
                                       CodeAttribute codeAttribute,
                                       LocalVariableTypeInfo localVariableTypeInfo)
Specified by:
visitLocalVariableTypeInfo in interface LocalVariableTypeInfoVisitor

visitAnnotation

public void visitAnnotation(Clazz clazz,
                            Annotation annotation)
Specified by:
visitAnnotation in interface AnnotationVisitor
Overrides:
visitAnnotation in class SimplifiedVisitor

visitAnyElementValue

public void visitAnyElementValue(Clazz clazz,
                                 Annotation annotation,
                                 ElementValue elementValue)
Overrides:
visitAnyElementValue in class SimplifiedVisitor

visitConstantElementValue

public void visitConstantElementValue(Clazz clazz,
                                      Annotation annotation,
                                      ConstantElementValue constantElementValue)
Specified by:
visitConstantElementValue in interface ElementValueVisitor
Overrides:
visitConstantElementValue in class SimplifiedVisitor

visitEnumConstantElementValue

public void visitEnumConstantElementValue(Clazz clazz,
                                          Annotation annotation,
                                          EnumConstantElementValue enumConstantElementValue)
Specified by:
visitEnumConstantElementValue in interface ElementValueVisitor
Overrides:
visitEnumConstantElementValue in class SimplifiedVisitor

visitClassElementValue

public void visitClassElementValue(Clazz clazz,
                                   Annotation annotation,
                                   ClassElementValue classElementValue)
Specified by:
visitClassElementValue in interface ElementValueVisitor
Overrides:
visitClassElementValue in class SimplifiedVisitor

visitAnnotationElementValue

public void visitAnnotationElementValue(Clazz clazz,
                                        Annotation annotation,
                                        AnnotationElementValue annotationElementValue)
Specified by:
visitAnnotationElementValue in interface ElementValueVisitor
Overrides:
visitAnnotationElementValue in class SimplifiedVisitor

visitArrayElementValue

public void visitArrayElementValue(Clazz clazz,
                                   Annotation annotation,
                                   ArrayElementValue arrayElementValue)
Specified by:
visitArrayElementValue in interface ElementValueVisitor
Overrides:
visitArrayElementValue in class SimplifiedVisitor