Class IDTransferFunctions<E extends ISSABasicBlock>
java.lang.Object
org.scandroid.flow.functions.IDTransferFunctions<E>
- All Implemented Interfaces:
IFlowFunctionMap<BasicBlockInContext<E>>
public class IDTransferFunctions<E extends ISSABasicBlock>
extends Object
implements IFlowFunctionMap<BasicBlockInContext<E>>
-
Field Summary
Fields -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptiongetCallFlowFunction(BasicBlockInContext<E> src, BasicBlockInContext<E> dest, BasicBlockInContext<E> ret) getCallToReturnFlowFunction(BasicBlockInContext<E> src, BasicBlockInContext<E> dest) getNormalFlowFunction(BasicBlockInContext<E> src, BasicBlockInContext<E> dest) getReturnFlowFunction(BasicBlockInContext<E> call, BasicBlockInContext<E> src, BasicBlockInContext<E> dest)
-
Field Details
-
EMPTY_SET
-
ZERO_SET
-
-
Constructor Details
-
IDTransferFunctions
public IDTransferFunctions()
-
-
Method Details
-
getNormalFlowFunction
public IUnaryFlowFunction getNormalFlowFunction(BasicBlockInContext<E> src, BasicBlockInContext<E> dest) - Specified by:
getNormalFlowFunctionin interfaceIFlowFunctionMap<E extends ISSABasicBlock>- Returns:
- the flow function for a "normal" edge in the supergraph from src -> dest
-
getCallFlowFunction
public IUnaryFlowFunction getCallFlowFunction(BasicBlockInContext<E> src, BasicBlockInContext<E> dest, BasicBlockInContext<E> ret) - Specified by:
getCallFlowFunctionin interfaceIFlowFunctionMap<E extends ISSABasicBlock>- Parameters:
src- the call blockdest- the entry of the calleeret- the block that will be returned to, in the caller. This can be null .. signifying that facts can flow into the callee but not return- Returns:
- the flow function for a "call" edge in the supergraph from src -> dest
-
getReturnFlowFunction
public IFlowFunction getReturnFlowFunction(BasicBlockInContext<E> call, BasicBlockInContext<E> src, BasicBlockInContext<E> dest) - Specified by:
getReturnFlowFunctionin interfaceIFlowFunctionMap<E extends ISSABasicBlock>- Parameters:
call- supergraph node of the call instruction for this return edge.- Returns:
- the flow function for a "return" edge in the supergraph from src -> dest
-
getCallToReturnFlowFunction
public IUnaryFlowFunction getCallToReturnFlowFunction(BasicBlockInContext<E> src, BasicBlockInContext<E> dest) - Specified by:
getCallToReturnFlowFunctionin interfaceIFlowFunctionMap<E extends ISSABasicBlock>- Returns:
- the flow function for a "call-to-return" edge in the supergraph from src -> dest
-
getCallNoneToReturnFlowFunction
public IUnaryFlowFunction getCallNoneToReturnFlowFunction(BasicBlockInContext<E> src, BasicBlockInContext<E> dest) - Specified by:
getCallNoneToReturnFlowFunctionin interfaceIFlowFunctionMap<E extends ISSABasicBlock>- Returns:
- the flow function for a "call-to-return" edge in the supergraph from src -> dest, when the supergraph does not contain any callees of src. This happens via, e.g., slicing.
-