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 aSetAbstractStateof taints for taint analysis or aValueAbstractStatefor 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.-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionprotected classThisInstructionVisitorperforms generic operations (e.g., loads, stores) parametrized by the specific behavior ofJvmTransferRelationfor instruction applications, method invocations, and constructing literals. -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected ContentTcalculateArithmeticInstruction(Instruction instruction, List<ContentT> operands) Calculates the result of the instruction application.protected ContentTcomputeIncrement(ContentT state, int value) Returns the abstract state of the incremented inputstatebyvalue.generateEdgeAbstractSuccessor(JvmAbstractState<ContentT> abstractState, JvmCfaEdge edge, Precision precision) generateEdgeAbstractSuccessors(JvmAbstractState<ContentT> abstractState, JvmCfaEdge edge, Precision precision) Computes the successor states for the CFAedge.getAbstractByteConstant(byte b) Returns an abstract representation of a byte constantb.abstract ContentTReturns a default abstract state.getAbstractDoubleConstant(double d) Returns an abstract representation of a double constantd.getAbstractFloatConstant(float f) Returns an abstract representation of a float constantf.getAbstractIntegerConstant(int i) Returns an abstract representation of an integer constanti.getAbstractLongConstant(long l) Returns an abstract representation of a long constantl.Returns an abstract representation of a null reference.getAbstractReferenceValue(String className, Clazz referencedClazz, boolean mayBeExtension, boolean mayBeNull, Clazz creationClass, Method creationMethod, int creationOffset, Object value) Returns an abstract representation of a reference valueobject.getAbstractShortConstant(short s) Returns an abstract representation of a short constants.protected JvmAbstractState<ContentT>getAbstractSuccessorForInstruction(JvmAbstractState<ContentT> abstractState, Instruction instruction, Clazz clazz, Precision precision) Returns the result of applyinginstructionto theabstractState.protected ContentThandleCheckCast(ContentT state, String typeName) Returns an abstract state representing the result of thecheckcastoperation.voidinvokeMethod(JvmAbstractState<ContentT> state, Call call, List<ContentT> operands) The default implementation computes join over its arguments.protected ContentTisInstanceOf(ContentT state, String type) Returns an abstract state representing the result of theinstanceofoperation.protected voidprocessCall(JvmAbstractState<ContentT> state, Call call) Pops the arguments from the operand stack and passes them toinvokeMethod.Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface proguard.analysis.cpa.interfaces.ProgramLocationDependentForwardTransferRelation
getEdgesMethods inherited from interface proguard.analysis.cpa.interfaces.ProgramLocationDependentTransferRelation
generateAbstractSuccessors, wrapAbstractSuccessorInCollection
-
Constructor Details
-
JvmTransferRelation
public JvmTransferRelation()
-
-
Method Details
-
generateEdgeAbstractSuccessors
public Collection<JvmAbstractState<ContentT>> generateEdgeAbstractSuccessors(JvmAbstractState<ContentT> abstractState, JvmCfaEdge edge, Precision precision) Description copied from interface:ProgramLocationDependentTransferRelationComputes the successor states for the CFAedge.- Specified by:
generateEdgeAbstractSuccessorsin interfaceProgramLocationDependentTransferRelation<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 applyinginstructionto theabstractState. -
calculateArithmeticInstruction
Calculates the result of the instruction application. The default implementation computes join over its arguments. -
computeIncrement
Returns the abstract state of the incremented inputstatebyvalue. The default implementation computes the join. -
getAbstractByteConstant
Returns an abstract representation of a byte constantb. -
getAbstractDefault
Returns a default abstract state. In case of lattice abstract domains, it should be the bottom element. -
getAbstractDoubleConstant
Returns an abstract representation of a double constantd. -
getAbstractFloatConstant
Returns an abstract representation of a float constantf. -
getAbstractIntegerConstant
Returns an abstract representation of an integer constanti. -
getAbstractLongConstant
Returns an abstract representation of a long constantl. -
getAbstractNull
Returns an abstract representation of a null reference. -
getAbstractShortConstant
Returns an abstract representation of a short constants. -
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 valueobject. -
processCall
Pops the arguments from the operand stack and passes them toinvokeMethod. -
invokeMethod
The default implementation computes join over its arguments. -
isInstanceOf
Returns an abstract state representing the result of theinstanceofoperation. -
handleCheckCast
Returns an abstract state representing the result of thecheckcastoperation.
-