proguard.optimize
Class UnusedParameterInvocationUnit

java.lang.Object
  extended by proguard.classfile.util.SimplifiedVisitor
      extended by proguard.optimize.UnusedParameterInvocationUnit
All Implemented Interfaces:
ConstantVisitor, MemberVisitor, InvocationUnit

public class UnusedParameterInvocationUnit
extends SimplifiedVisitor
implements InvocationUnit, ConstantVisitor, MemberVisitor

This InvocationUnit removes unused parameters from the stack before invoking a method, and then delegates to another given InvocationUnit.

See Also:
ParameterUsageMarker

Constructor Summary
UnusedParameterInvocationUnit(InvocationUnit invocationUnit)
           
 
Method Summary
 void enterMethod(Clazz clazz, Method method, Variables variables)
          Sets up the given variables for entering the given method.
 void exitMethod(Clazz clazz, Method method, Value returnValue)
          Exits the given method with the given return value.
 void invokeMember(Clazz clazz, Method method, CodeAttribute codeAttribute, int offset, ConstantInstruction constantInstruction, Stack stack)
          Updates the given stack corresponding to the execution of the given field or method reference instruction.
 void visitAnyConstant(Clazz clazz, Constant constant)
           
 void visitAnyMethodrefConstant(Clazz clazz, RefConstant refConstant)
          Visits any type of method RefConstant of the given class.
 void visitLibraryMethod(LibraryClass libraryClass, LibraryMethod libraryMethod)
           
 void visitProgramMethod(ProgramClass programClass, ProgramMethod programMethod)
           
 
Methods inherited from class proguard.classfile.util.SimplifiedVisitor
visitAnnotation, visitAnnotation, visitAnnotation, visitAnnotation, visitAnnotation, visitAnnotationDefaultAttribute, visitAnnotationElementValue, visitAnyAnnotationsAttribute, visitAnyAttribute, visitAnyClass, visitAnyElementValue, visitAnyInstruction, visitAnyMember, visitAnyParameterAnnotationsAttribute, visitAnyRefConstant, visitAnyStackMapFrame, visitAnySwitchInstruction, visitAnyVerificationType, visitArrayElementValue, visitBranchInstruction, visitClassConstant, visitClassElementValue, visitCodeAttribute, visitConstantElementValue, visitConstantInstruction, visitConstantValueAttribute, visitDeprecatedAttribute, visitDeprecatedAttribute, visitDeprecatedAttribute, visitDeprecatedAttribute, visitDoubleConstant, visitDoubleType, visitEnclosingMethodAttribute, visitEnumConstantElementValue, visitExceptionsAttribute, visitFieldrefConstant, visitFloatConstant, visitFloatType, visitFullFrame, visitInnerClassesAttribute, visitIntegerConstant, visitIntegerType, visitInterfaceMethodrefConstant, visitLessZeroFrame, visitLibraryClass, visitLibraryField, visitLibraryMember, visitLineNumberTableAttribute, visitLocalVariableTableAttribute, visitLocalVariableTypeTableAttribute, visitLongConstant, visitLongType, visitLookUpSwitchInstruction, visitMethodrefConstant, visitMoreZeroFrame, visitNameAndTypeConstant, visitNullType, visitObjectType, visitProgramClass, visitProgramField, 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, visitStringConstant, 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
visitClassConstant, visitDoubleConstant, visitFieldrefConstant, visitFloatConstant, visitIntegerConstant, visitInterfaceMethodrefConstant, visitLongConstant, visitMethodrefConstant, visitNameAndTypeConstant, visitStringConstant, visitUtf8Constant
 
Methods inherited from interface proguard.classfile.visitor.MemberVisitor
visitLibraryField, visitProgramField
 

Constructor Detail

UnusedParameterInvocationUnit

public UnusedParameterInvocationUnit(InvocationUnit invocationUnit)
Method Detail

enterMethod

public void enterMethod(Clazz clazz,
                        Method method,
                        Variables variables)
Description copied from interface: InvocationUnit
Sets up the given variables for entering the given method.

Specified by:
enterMethod in interface InvocationUnit

exitMethod

public void exitMethod(Clazz clazz,
                       Method method,
                       Value returnValue)
Description copied from interface: InvocationUnit
Exits the given method with the given return value.

Specified by:
exitMethod in interface InvocationUnit

invokeMember

public void invokeMember(Clazz clazz,
                         Method method,
                         CodeAttribute codeAttribute,
                         int offset,
                         ConstantInstruction constantInstruction,
                         Stack stack)
Description copied from interface: InvocationUnit
Updates the given stack corresponding to the execution of the given field or method reference instruction.

Specified by:
invokeMember in interface InvocationUnit

visitAnyConstant

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

visitAnyMethodrefConstant

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

Overrides:
visitAnyMethodrefConstant in class SimplifiedVisitor

visitProgramMethod

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

visitLibraryMethod

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