Class JvmReferenceTransferRelation
- java.lang.Object
-
- proguard.analysis.cpa.jvm.transfer.JvmTransferRelation<SetAbstractState<Reference>>
-
- proguard.analysis.cpa.jvm.domain.reference.JvmReferenceTransferRelation
-
- All Implemented Interfaces:
ProgramLocationDependentForwardTransferRelation<JvmCfaNode,JvmCfaEdge,MethodSignature>
,ProgramLocationDependentTransferRelation<JvmCfaNode,JvmCfaEdge,MethodSignature>
,TransferRelation
public class JvmReferenceTransferRelation extends JvmTransferRelation<SetAbstractState<Reference>>
ThisJvmTransferRelation
propagates reference values, destroys references upon arithmetic operations, and creates fresh references for return values of intraprocedurally analyzed calls.
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class proguard.analysis.cpa.jvm.transfer.JvmTransferRelation
JvmTransferRelation.InstructionAbstractInterpreter
-
-
Constructor Summary
Constructors Constructor Description JvmReferenceTransferRelation()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected SetAbstractState<Reference>
calculateArithmeticInstruction(Instruction instruction, java.util.List<SetAbstractState<Reference>> operands)
Calculates the result of the instruction application.protected SetAbstractState<Reference>
computeIncrement(SetAbstractState<Reference> state, int value)
Returns the abstract state of the incremented inputstate
byvalue
.JvmReferenceAbstractState
generateEdgeAbstractSuccessor(AbstractState abstractState, JvmCfaEdge edge, Precision precision)
java.util.Collection<? extends AbstractState>
generateEdgeAbstractSuccessors(AbstractState abstractState, JvmCfaEdge edge, Precision precision)
Computes the successor states for the CFAedge
.SetAbstractState<Reference>
getAbstractDefault()
Returns a default abstract state.void
invokeMethod(JvmAbstractState<SetAbstractState<Reference>> state, Call call, java.util.List<SetAbstractState<Reference>> operands)
The default implementation computes join over its arguments.-
Methods inherited from class proguard.analysis.cpa.jvm.transfer.JvmTransferRelation
getAbstractByteConstant, getAbstractDoubleConstant, getAbstractFloatConstant, getAbstractIntegerConstant, getAbstractLongConstant, getAbstractNull, getAbstractReferenceValue, getAbstractReferenceValue, getAbstractReferenceValue, getAbstractShortConstant, getAbstractSuccessorForInstruction, handleCheckCast, isInstanceOf, processCall
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface proguard.analysis.cpa.interfaces.ProgramLocationDependentForwardTransferRelation
getEdges
-
Methods inherited from interface proguard.analysis.cpa.interfaces.ProgramLocationDependentTransferRelation
generateAbstractSuccessors, wrapAbstractSuccessorInCollection
-
-
-
-
Method Detail
-
generateEdgeAbstractSuccessor
public JvmReferenceAbstractState generateEdgeAbstractSuccessor(AbstractState abstractState, JvmCfaEdge edge, Precision precision)
- Overrides:
generateEdgeAbstractSuccessor
in classJvmTransferRelation<SetAbstractState<Reference>>
-
getAbstractDefault
public SetAbstractState<Reference> getAbstractDefault()
Description copied from class:JvmTransferRelation
Returns a default abstract state. In case of lattice abstract domains, it should be the bottom element.- Specified by:
getAbstractDefault
in classJvmTransferRelation<SetAbstractState<Reference>>
-
calculateArithmeticInstruction
protected SetAbstractState<Reference> calculateArithmeticInstruction(Instruction instruction, java.util.List<SetAbstractState<Reference>> operands)
Description copied from class:JvmTransferRelation
Calculates the result of the instruction application. The default implementation computes join over its arguments.- Overrides:
calculateArithmeticInstruction
in classJvmTransferRelation<SetAbstractState<Reference>>
-
computeIncrement
protected SetAbstractState<Reference> computeIncrement(SetAbstractState<Reference> state, int value)
Description copied from class:JvmTransferRelation
Returns the abstract state of the incremented inputstate
byvalue
. The default implementation computes the join.- Overrides:
computeIncrement
in classJvmTransferRelation<SetAbstractState<Reference>>
-
invokeMethod
public void invokeMethod(JvmAbstractState<SetAbstractState<Reference>> state, Call call, java.util.List<SetAbstractState<Reference>> operands)
Description copied from class:JvmTransferRelation
The default implementation computes join over its arguments.- Overrides:
invokeMethod
in classJvmTransferRelation<SetAbstractState<Reference>>
-
generateEdgeAbstractSuccessors
public java.util.Collection<? extends AbstractState> generateEdgeAbstractSuccessors(AbstractState abstractState, JvmCfaEdge edge, Precision precision)
Description copied from interface:ProgramLocationDependentTransferRelation
Computes the successor states for the CFAedge
.
-
-