Class JvmTransferRelation<ContentT extends AbstractState<ContentT>>

java.lang.Object
proguard.analysis.cpa.jvm.transfer.JvmTransferRelation<ContentT>
Type Parameters:
ContentT - The content of the jvm states. For example, this can be a SetAbstractState of taints for taint analysis or a ValueAbstractState for value analysis.
All Implemented Interfaces:
ProgramLocationDependentForwardTransferRelation<ContentT>, ProgramLocationDependentTransferRelation<ContentT>, TransferRelation<JvmAbstractState<ContentT>>
Direct Known Subclasses:
JvmTaintTransferRelation, JvmValueTransferRelation

public abstract class JvmTransferRelation<ContentT extends AbstractState<ContentT>> extends Object implements ProgramLocationDependentForwardTransferRelation<ContentT>
The JvmTransferRelation computes the successors of an JvmAbstractState for a given instruction. It stores category 2 computational types as tuples of the abstract state containing the information about the value in the most significant bits and a default abstract state in the least significant bits of the big-endian notation.
  • Constructor Details

    • JvmTransferRelation

      public JvmTransferRelation()
  • Method Details

    • generateEdgeAbstractSuccessors

      public Collection<JvmAbstractState<ContentT>> generateEdgeAbstractSuccessors(JvmAbstractState<ContentT> abstractState, JvmCfaEdge edge, Precision precision)
      Description copied from interface: ProgramLocationDependentTransferRelation
      Computes the successor states for the CFA edge.
      Specified by:
      generateEdgeAbstractSuccessors in interface ProgramLocationDependentTransferRelation<ContentT extends AbstractState<ContentT>>
    • generateEdgeAbstractSuccessor

      public JvmAbstractState<ContentT> generateEdgeAbstractSuccessor(JvmAbstractState<ContentT> abstractState, JvmCfaEdge edge, Precision precision)
    • getAbstractSuccessorForInstruction

      protected JvmAbstractState<ContentT> getAbstractSuccessorForInstruction(JvmAbstractState<ContentT> abstractState, Instruction instruction, Clazz clazz, Precision precision)
      Returns the result of applying instruction to the abstractState.
    • calculateArithmeticInstruction

      protected ContentT calculateArithmeticInstruction(Instruction instruction, List<ContentT> operands)
      Calculates the result of the instruction application. The default implementation computes join over its arguments.
    • computeIncrement

      protected ContentT computeIncrement(ContentT state, int value)
      Returns the abstract state of the incremented input state by value. The default implementation computes the join.
    • getAbstractByteConstant

      public ContentT getAbstractByteConstant(byte b)
      Returns an abstract representation of a byte constant b.
    • getAbstractDefault

      public abstract ContentT getAbstractDefault()
      Returns a default abstract state. In case of lattice abstract domains, it should be the bottom element.
    • getAbstractDoubleConstant

      public List<ContentT> getAbstractDoubleConstant(double d)
      Returns an abstract representation of a double constant d.
    • getAbstractFloatConstant

      public ContentT getAbstractFloatConstant(float f)
      Returns an abstract representation of a float constant f.
    • getAbstractIntegerConstant

      public ContentT getAbstractIntegerConstant(int i)
      Returns an abstract representation of an integer constant i.
    • getAbstractLongConstant

      public List<ContentT> getAbstractLongConstant(long l)
      Returns an abstract representation of a long constant l.
    • getAbstractNull

      public ContentT getAbstractNull()
      Returns an abstract representation of a null reference.
    • getAbstractShortConstant

      public ContentT getAbstractShortConstant(short s)
      Returns an abstract representation of a short constant s.
    • getAbstractReferenceValue

      public ContentT getAbstractReferenceValue(String className, Clazz referencedClazz, boolean mayBeExtension, boolean mayBeNull, Clazz creationClass, Method creationMethod, int creationOffset, Object value)
      Returns an abstract representation of a reference value object.
    • processCall

      protected void processCall(JvmAbstractState<ContentT> state, Call call)
      Pops the arguments from the operand stack and passes them to invokeMethod.
    • invokeMethod

      public void invokeMethod(JvmAbstractState<ContentT> state, Call call, List<ContentT> operands)
      The default implementation computes join over its arguments.
    • isInstanceOf

      protected ContentT isInstanceOf(ContentT state, String type)
      Returns an abstract state representing the result of the instanceof operation.
    • handleCheckCast

      protected ContentT handleCheckCast(ContentT state, String typeName)
      Returns an abstract state representing the result of the checkcast operation.