Package proguard.evaluation
Class SimplifiedInvocationUnit
- java.lang.Object
-
- proguard.evaluation.SimplifiedInvocationUnit
-
- All Implemented Interfaces:
ConstantVisitor,ParameterVisitor,InvocationUnit
- Direct Known Subclasses:
BasicInvocationUnit,ReferenceTracingInvocationUnit
public abstract class SimplifiedInvocationUnit extends java.lang.Object implements InvocationUnit, ParameterVisitor, ConstantVisitor
ThisInvocationUnitsets up the variables for entering a method, and it updates the stack for the invocation of a class member, using simple values.
-
-
Constructor Summary
Constructors Constructor Description SimplifiedInvocationUnit()
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description voidenterExceptionHandler(Clazz clazz, Method method, CodeAttribute codeAttribute, int offset, int catchType, Stack stack)Sets up the given stack for entering the given exception handler.voidenterMethod(Clazz clazz, Method method, Variables variables)Sets up the given variables for entering the given method.voidexitMethod(Clazz clazz, Method method, Value returnValue)Exits the given method with the given return value.abstract ValuegetExceptionValue(Clazz clazz, ClassConstant catchClassConstant)Returns the value of the specified exception.abstract ValuegetFieldClassValue(Clazz clazz, FieldrefConstant fieldrefConstant, java.lang.String type)Returns the class though which the specified field is accessed.abstract ValuegetFieldValue(Clazz clazz, FieldrefConstant fieldrefConstant, java.lang.String type)Returns the value of the specified field.abstract ValuegetMethodParameterValue(Clazz clazz, Method method, int parameterIndex, java.lang.String type, Clazz referencedClass)Returns the value of the specified method parameter.abstract ValuegetMethodReturnValue(Clazz clazz, AnyMethodrefConstant anyMethodrefConstant, java.lang.String type)Returns the return value of the specified method.abstract ValuegetMethodReturnValue(Clazz clazz, InvokeDynamicConstant invokeDynamicConstant, java.lang.String type)Returns the return value of the specified method.voidinvokeMember(Clazz clazz, Method method, CodeAttribute codeAttribute, int offset, ConstantInstruction constantInstruction, Stack stack, Variables variables)Updates the given stack corresponding to the execution of the given field or method reference instruction.protected booleanmethodMayHaveSideEffects(Clazz clazz, AnyMethodrefConstant anyMethodrefConstant, java.lang.String returnType)Returns true if the method itself can modify the stack/variables and therefore needs to be executed even if it returns void.abstract voidsetFieldClassValue(Clazz clazz, FieldrefConstant fieldrefConstant, ReferenceValue value)Sets the class through which the specified field is accessed.abstract voidsetFieldValue(Clazz clazz, FieldrefConstant fieldrefConstant, Value value)Sets the value of the specified field.abstract voidsetMethodParameterValue(Clazz clazz, AnyMethodrefConstant anyMethodrefConstant, int parameterIndex, Value value)Sets the value of the specified method parameter.abstract voidsetMethodReturnValue(Clazz clazz, Method method, Value value)Sets the return value of the specified method.voidvisitAnyMethodrefConstant(Clazz clazz, AnyMethodrefConstant anyMethodrefConstant)Visits any RefConstant instance.voidvisitFieldrefConstant(Clazz clazz, FieldrefConstant fieldrefConstant)voidvisitInvokeDynamicConstant(Clazz clazz, InvokeDynamicConstant invokeDynamicConstant)voidvisitParameter(Clazz clazz, Member member, int parameterIndex, int parameterCount, int parameterOffset, int parameterSize, java.lang.String parameterType, Clazz referencedClass)Visits the given parameter.-
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
visitAnyConstant, visitAnyRefConstant, visitClassConstant, visitDoubleConstant, visitDynamicConstant, visitFloatConstant, visitIntegerConstant, visitInterfaceMethodrefConstant, visitLongConstant, visitMethodHandleConstant, visitMethodrefConstant, visitMethodTypeConstant, visitModuleConstant, visitNameAndTypeConstant, visitPackageConstant, visitPrimitiveArrayConstant, visitStringConstant, visitUtf8Constant
-
-
-
-
Method Detail
-
enterMethod
public void enterMethod(Clazz clazz, Method method, Variables variables)
Description copied from interface:InvocationUnitSets up the given variables for entering the given method.- Specified by:
enterMethodin interfaceInvocationUnit
-
visitParameter
public void visitParameter(Clazz clazz, Member member, int parameterIndex, int parameterCount, int parameterOffset, int parameterSize, java.lang.String parameterType, Clazz referencedClass)
Description copied from interface:ParameterVisitorVisits the given parameter.- Specified by:
visitParameterin interfaceParameterVisitor- Parameters:
clazz- the class of the method.member- the field or method of the parameter.parameterIndex- the index of the parameter.parameterCount- the total number of parameters.parameterOffset- the offset of the parameter, accounting for longs and doubles taking up two entries.parameterSize- the total size of the parameters, accounting for longs and doubles taking up two entries.parameterType- the parameter type.referencedClass- the class contained in the parameter type, if any.
-
exitMethod
public void exitMethod(Clazz clazz, Method method, Value returnValue)
Description copied from interface:InvocationUnitExits the given method with the given return value.- Specified by:
exitMethodin interfaceInvocationUnit
-
enterExceptionHandler
public void enterExceptionHandler(Clazz clazz, Method method, CodeAttribute codeAttribute, int offset, int catchType, Stack stack)
Description copied from interface:InvocationUnitSets up the given stack for entering the given exception handler.- Specified by:
enterExceptionHandlerin interfaceInvocationUnit
-
invokeMember
public void invokeMember(Clazz clazz, Method method, CodeAttribute codeAttribute, int offset, ConstantInstruction constantInstruction, Stack stack, Variables variables)
Description copied from interface:InvocationUnitUpdates the given stack corresponding to the execution of the given field or method reference instruction.- Specified by:
invokeMemberin interfaceInvocationUnit
-
visitFieldrefConstant
public void visitFieldrefConstant(Clazz clazz, FieldrefConstant fieldrefConstant)
- Specified by:
visitFieldrefConstantin interfaceConstantVisitor
-
visitAnyMethodrefConstant
public void visitAnyMethodrefConstant(Clazz clazz, AnyMethodrefConstant anyMethodrefConstant)
Description copied from interface:ConstantVisitorVisits any RefConstant instance. The more specific default implementations of this interface delegate to this method.- Specified by:
visitAnyMethodrefConstantin interfaceConstantVisitor
-
visitInvokeDynamicConstant
public void visitInvokeDynamicConstant(Clazz clazz, InvokeDynamicConstant invokeDynamicConstant)
- Specified by:
visitInvokeDynamicConstantin interfaceConstantVisitor
-
getExceptionValue
public abstract Value getExceptionValue(Clazz clazz, ClassConstant catchClassConstant)
Returns the value of the specified exception.
-
setFieldClassValue
public abstract void setFieldClassValue(Clazz clazz, FieldrefConstant fieldrefConstant, ReferenceValue value)
Sets the class through which the specified field is accessed.
-
getFieldClassValue
public abstract Value getFieldClassValue(Clazz clazz, FieldrefConstant fieldrefConstant, java.lang.String type)
Returns the class though which the specified field is accessed.
-
setFieldValue
public abstract void setFieldValue(Clazz clazz, FieldrefConstant fieldrefConstant, Value value)
Sets the value of the specified field.
-
getFieldValue
public abstract Value getFieldValue(Clazz clazz, FieldrefConstant fieldrefConstant, java.lang.String type)
Returns the value of the specified field.
-
setMethodParameterValue
public abstract void setMethodParameterValue(Clazz clazz, AnyMethodrefConstant anyMethodrefConstant, int parameterIndex, Value value)
Sets the value of the specified method parameter.
-
getMethodParameterValue
public abstract Value getMethodParameterValue(Clazz clazz, Method method, int parameterIndex, java.lang.String type, Clazz referencedClass)
Returns the value of the specified method parameter.
-
setMethodReturnValue
public abstract void setMethodReturnValue(Clazz clazz, Method method, Value value)
Sets the return value of the specified method.
-
getMethodReturnValue
public abstract Value getMethodReturnValue(Clazz clazz, AnyMethodrefConstant anyMethodrefConstant, java.lang.String type)
Returns the return value of the specified method.
-
getMethodReturnValue
public abstract Value getMethodReturnValue(Clazz clazz, InvokeDynamicConstant invokeDynamicConstant, java.lang.String type)
Returns the return value of the specified method.
-
methodMayHaveSideEffects
protected boolean methodMayHaveSideEffects(Clazz clazz, AnyMethodrefConstant anyMethodrefConstant, java.lang.String returnType)
Returns true if the method itself can modify the stack/variables and therefore needs to be executed even if it returns void.
-
-