Class JvmValueTransferRelation
- java.lang.Object
-
- proguard.analysis.cpa.jvm.transfer.JvmTransferRelation<ValueAbstractState>
-
- proguard.analysis.cpa.jvm.domain.value.JvmValueTransferRelation
-
- All Implemented Interfaces:
ProgramLocationDependentForwardTransferRelation<JvmCfaNode,JvmCfaEdge,MethodSignature>
,ProgramLocationDependentTransferRelation<JvmCfaNode,JvmCfaEdge,MethodSignature>
,TransferRelation
public class JvmValueTransferRelation extends JvmTransferRelation<ValueAbstractState>
AJvmTransferRelation
that tracks values.
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class proguard.analysis.cpa.jvm.transfer.JvmTransferRelation
JvmTransferRelation.InstructionAbstractInterpreter
-
-
Field Summary
Fields Modifier and Type Field Description ExecutingInvocationUnit
executingInvocationUnit
-
Constructor Summary
Constructors Constructor Description JvmValueTransferRelation(ValueFactory valueFactory, ExecutingInvocationUnit executingInvocationUnit)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description java.util.Collection<? extends AbstractState>
generateEdgeAbstractSuccessors(AbstractState abstractState, JvmCfaEdge edge, Precision precision)
Computes the successor states for the CFAedge
.ValueAbstractState
getAbstractByteConstant(byte b)
Returns an abstract representation of a byte constantb
.ValueAbstractState
getAbstractDefault()
Returns a default abstract state.java.util.List<ValueAbstractState>
getAbstractDoubleConstant(double d)
Returns an abstract representation of a double constantd
.ValueAbstractState
getAbstractFloatConstant(float f)
Returns an abstract representation of a float constantf
.ValueAbstractState
getAbstractIntegerConstant(int i)
Returns an abstract representation of an integer constanti
.java.util.List<ValueAbstractState>
getAbstractLongConstant(long l)
Returns an abstract representation of a long constantl
.ValueAbstractState
getAbstractNull()
Returns an abstract representation of a null reference.ValueAbstractState
getAbstractReferenceValue(java.lang.String className)
Returns an abstract representation of a reference valueobject
.ValueAbstractState
getAbstractReferenceValue(java.lang.String internalType, Clazz referencedClazz, boolean mayBeExtension, boolean mayBeNull)
Returns an abstract representation of a reference valueobject
.ValueAbstractState
getAbstractReferenceValue(java.lang.String internalType, Clazz referencedClazz, boolean mayBeExtension, boolean mayBeNull, Clazz creationClass, Method creationMethod, int creationOffset, java.lang.Object value)
Returns an abstract representation of a reference valueobject
.ValueAbstractState
getAbstractShortConstant(short s)
Returns an abstract representation of a short constants
.ValueFactory
getValueFactory()
protected ValueAbstractState
handleCheckCast(ValueAbstractState state, java.lang.String internalName)
Returns an abstract state representing the result of thecheckcast
operation.void
invokeMethod(JvmAbstractState<ValueAbstractState> state, Call call, java.util.List<ValueAbstractState> operands)
The default implementation computes join over its arguments.protected void
processCall(JvmAbstractState<ValueAbstractState> state, Call call)
Pops the arguments from the operand stack and passes them toinvokeMethod
.-
Methods inherited from class proguard.analysis.cpa.jvm.transfer.JvmTransferRelation
calculateArithmeticInstruction, computeIncrement, generateEdgeAbstractSuccessor, getAbstractSuccessorForInstruction, isInstanceOf
-
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
-
-
-
-
Field Detail
-
executingInvocationUnit
public final ExecutingInvocationUnit executingInvocationUnit
-
-
Constructor Detail
-
JvmValueTransferRelation
public JvmValueTransferRelation(ValueFactory valueFactory, ExecutingInvocationUnit executingInvocationUnit)
-
-
Method Detail
-
getValueFactory
public ValueFactory getValueFactory()
-
getAbstractDefault
public ValueAbstractState 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<ValueAbstractState>
-
getAbstractByteConstant
public ValueAbstractState getAbstractByteConstant(byte b)
Description copied from class:JvmTransferRelation
Returns an abstract representation of a byte constantb
.- Overrides:
getAbstractByteConstant
in classJvmTransferRelation<ValueAbstractState>
-
getAbstractDoubleConstant
public java.util.List<ValueAbstractState> getAbstractDoubleConstant(double d)
Description copied from class:JvmTransferRelation
Returns an abstract representation of a double constantd
.- Overrides:
getAbstractDoubleConstant
in classJvmTransferRelation<ValueAbstractState>
-
getAbstractFloatConstant
public ValueAbstractState getAbstractFloatConstant(float f)
Description copied from class:JvmTransferRelation
Returns an abstract representation of a float constantf
.- Overrides:
getAbstractFloatConstant
in classJvmTransferRelation<ValueAbstractState>
-
getAbstractIntegerConstant
public ValueAbstractState getAbstractIntegerConstant(int i)
Description copied from class:JvmTransferRelation
Returns an abstract representation of an integer constanti
.- Overrides:
getAbstractIntegerConstant
in classJvmTransferRelation<ValueAbstractState>
-
getAbstractLongConstant
public java.util.List<ValueAbstractState> getAbstractLongConstant(long l)
Description copied from class:JvmTransferRelation
Returns an abstract representation of a long constantl
.- Overrides:
getAbstractLongConstant
in classJvmTransferRelation<ValueAbstractState>
-
getAbstractNull
public ValueAbstractState getAbstractNull()
Description copied from class:JvmTransferRelation
Returns an abstract representation of a null reference.- Overrides:
getAbstractNull
in classJvmTransferRelation<ValueAbstractState>
-
getAbstractShortConstant
public ValueAbstractState getAbstractShortConstant(short s)
Description copied from class:JvmTransferRelation
Returns an abstract representation of a short constants
.- Overrides:
getAbstractShortConstant
in classJvmTransferRelation<ValueAbstractState>
-
getAbstractReferenceValue
public ValueAbstractState getAbstractReferenceValue(java.lang.String className)
Description copied from class:JvmTransferRelation
Returns an abstract representation of a reference valueobject
.- Overrides:
getAbstractReferenceValue
in classJvmTransferRelation<ValueAbstractState>
-
getAbstractReferenceValue
public ValueAbstractState getAbstractReferenceValue(java.lang.String internalType, Clazz referencedClazz, boolean mayBeExtension, boolean mayBeNull)
Description copied from class:JvmTransferRelation
Returns an abstract representation of a reference valueobject
.- Overrides:
getAbstractReferenceValue
in classJvmTransferRelation<ValueAbstractState>
-
getAbstractReferenceValue
public ValueAbstractState getAbstractReferenceValue(java.lang.String internalType, Clazz referencedClazz, boolean mayBeExtension, boolean mayBeNull, Clazz creationClass, Method creationMethod, int creationOffset, java.lang.Object value)
Description copied from class:JvmTransferRelation
Returns an abstract representation of a reference valueobject
.- Overrides:
getAbstractReferenceValue
in classJvmTransferRelation<ValueAbstractState>
-
processCall
protected void processCall(JvmAbstractState<ValueAbstractState> state, Call call)
Description copied from class:JvmTransferRelation
Pops the arguments from the operand stack and passes them toinvokeMethod
.- Overrides:
processCall
in classJvmTransferRelation<ValueAbstractState>
-
invokeMethod
public void invokeMethod(JvmAbstractState<ValueAbstractState> state, Call call, java.util.List<ValueAbstractState> operands)
Description copied from class:JvmTransferRelation
The default implementation computes join over its arguments.- Overrides:
invokeMethod
in classJvmTransferRelation<ValueAbstractState>
-
handleCheckCast
protected ValueAbstractState handleCheckCast(ValueAbstractState state, java.lang.String internalName)
Description copied from class:JvmTransferRelation
Returns an abstract state representing the result of thecheckcast
operation.- Overrides:
handleCheckCast
in classJvmTransferRelation<ValueAbstractState>
-
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
.
-
-