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 Object
implements InvocationUnit, ParameterVisitor, ConstantVisitor
This
InvocationUnit sets up the variables for entering a method, and it updates the stack
for the invocation of a class member, using simple values.-
Field Summary
Fields -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidenterExceptionHandler(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, String type) Returns the class though which the specified field is accessed.abstract ValuegetFieldValue(Clazz clazz, FieldrefConstant fieldrefConstant, String type) Returns the value of the specified field.abstract ValuegetMethodParameterValue(Clazz clazz, Method method, int parameterIndex, String type, Clazz referencedClass) Returns the value of the specified method parameter.abstract ValuegetMethodReturnValue(Clazz clazz, AnyMethodrefConstant anyMethodrefConstant, String type) Returns the return value of the specified method.abstract ValuegetMethodReturnValue(Clazz clazz, InvokeDynamicConstant invokeDynamicConstant, 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, 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, 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, waitMethods 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
-
Field Details
-
variables
-
isStatic
protected boolean isStatic -
isLoad
protected boolean isLoad -
stack
-
method
-
-
Constructor Details
-
SimplifiedInvocationUnit
public SimplifiedInvocationUnit()
-
-
Method Details
-
enterMethod
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, 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
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
- Specified by:
visitFieldrefConstantin interfaceConstantVisitor
-
visitAnyMethodrefConstant
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
- Specified by:
visitInvokeDynamicConstantin interfaceConstantVisitor
-
getExceptionValue
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, String type) Returns the class though which the specified field is accessed. -
setFieldValue
Sets the value of the specified field. -
getFieldValue
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, String type, Clazz referencedClass) Returns the value of the specified method parameter. -
setMethodReturnValue
Sets the return value of the specified method. -
getMethodReturnValue
public abstract Value getMethodReturnValue(Clazz clazz, AnyMethodrefConstant anyMethodrefConstant, String type) Returns the return value of the specified method. -
getMethodReturnValue
public abstract Value getMethodReturnValue(Clazz clazz, InvokeDynamicConstant invokeDynamicConstant, String type) Returns the return value of the specified method. -
methodMayHaveSideEffects
protected boolean methodMayHaveSideEffects(Clazz clazz, AnyMethodrefConstant anyMethodrefConstant, String returnType) Returns true if the method itself can modify the stack/variables and therefore needs to be executed even if it returns void.
-