类 SimplifiedInvocationUnit

java.lang.Object
proguard.evaluation.SimplifiedInvocationUnit
所有已实现的接口:
ConstantVisitor, ParameterVisitor, InvocationUnit
直接已知子类:
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.
  • 字段详细资料

    • variables

      protected Variables variables
    • isStatic

      protected boolean isStatic
    • isLoad

      protected boolean isLoad
    • stack

      protected Stack stack
    • method

      protected Method method
  • 构造器详细资料

    • SimplifiedInvocationUnit

      public SimplifiedInvocationUnit()
  • 方法详细资料

    • enterMethod

      public void enterMethod(Clazz clazz, Method method, Variables variables)
      从接口复制的说明: InvocationUnit
      Sets up the given variables for entering the given method.
      指定者:
      enterMethod 在接口中 InvocationUnit
    • visitParameter

      public void visitParameter(Clazz clazz, Member member, int parameterIndex, int parameterCount, int parameterOffset, int parameterSize, String parameterType, Clazz referencedClass)
      从接口复制的说明: ParameterVisitor
      Visits the given parameter.
      指定者:
      visitParameter 在接口中 ParameterVisitor
      参数:
      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)
      从接口复制的说明: InvocationUnit
      Exits the given method with the given return value.
      指定者:
      exitMethod 在接口中 InvocationUnit
    • enterExceptionHandler

      public void enterExceptionHandler(Clazz clazz, Method method, CodeAttribute codeAttribute, int offset, int catchType, Stack stack)
      从接口复制的说明: InvocationUnit
      Sets up the given stack for entering the given exception handler.
      指定者:
      enterExceptionHandler 在接口中 InvocationUnit
    • invokeMember

      public void invokeMember(Clazz clazz, Method method, CodeAttribute codeAttribute, int offset, ConstantInstruction constantInstruction, Stack stack, Variables variables)
      从接口复制的说明: InvocationUnit
      Updates the given stack corresponding to the execution of the given field or method reference instruction.
      指定者:
      invokeMember 在接口中 InvocationUnit
    • visitFieldrefConstant

      public void visitFieldrefConstant(Clazz clazz, FieldrefConstant fieldrefConstant)
      指定者:
      visitFieldrefConstant 在接口中 ConstantVisitor
    • visitAnyMethodrefConstant

      public void visitAnyMethodrefConstant(Clazz clazz, AnyMethodrefConstant anyMethodrefConstant)
      从接口复制的说明: ConstantVisitor
      Visits any RefConstant instance. The more specific default implementations of this interface delegate to this method.
      指定者:
      visitAnyMethodrefConstant 在接口中 ConstantVisitor
    • visitInvokeDynamicConstant

      public void visitInvokeDynamicConstant(Clazz clazz, InvokeDynamicConstant invokeDynamicConstant)
      指定者:
      visitInvokeDynamicConstant 在接口中 ConstantVisitor
    • 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, 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, 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, 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, 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.