Package qilin.core
Class CorePTA
java.lang.Object
qilin.core.PTA
qilin.core.CorePTA
- All Implemented Interfaces:
Parameterizer,PointsToAnalysis
- Direct Known Subclasses:
BasePTA
-
Field Summary
Fields inherited from interface qilin.core.PointsToAnalysis
EXCEPTION_NODE, MAIN_THREAD_GROUP_NODE_LOCAL, STRING_NODE -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptioncreateCalleeContext(ContextMethod caller, AllocNode receiverNode, CallSite callSite, SootMethod target) abstract Propagatorprotected final voidinitComponents(ContextConstructor contextConstructor, ContextSelector contextSelector, HeapAbstractor heapAbstractor) Wires up the three context-sensitivity policies this analysis needs, atomically.parameterize(AllocNode node, Context context) parameterize(FieldRefNode frn, Context context) parameterize(FieldValNode fvn, Context context) parameterize(GlobalVarNode gvn, Context context) Global variables are never context-sensitive, so they always parameterize to the empty context.parameterize(LocalVarNode vn, Context context) parameterize(PagNode n, Context context) Dispatches to the matchingparameterizeoverload via double dispatch onn's runtime type (seePagNode.parameterize(Parameterizer, Context)), instead of aninstanceofcascade that a newPagNodesubtype could silently fall through.parameterize(SootMethod method, Context context) Finds or creates the ContextMethod for method and context.voidsetContextSelector(ContextSelector contextSelector) Methods inherited from class qilin.core.PTA
createCallGraphBuilder, createPAG, getCallGraph, getCgb, getConfig, getExceptionHandler, getNakedReachableMethods, getPag, getReachableMethods, getScene, getView, isMayAlias, pureRun, reachingObjects, reachingObjects, reachingObjects, reachingObjects, reachingObjects, reachingObjects, reachingObjects, reachingObjectsInternal, reachingObjectsInternal, reachingObjectsOfArrayElement, run
-
Constructor Details
-
CorePTA
-
-
Method Details
-
initComponents
protected final void initComponents(ContextConstructor contextConstructor, ContextSelector contextSelector, HeapAbstractor heapAbstractor) Wires up the three context-sensitivity policies this analysis needs, atomically. Must be called exactly once, from the concrete subclass's constructor, right aftersuper(scene)returns. Grouping all three into a single call -- instead of three independentprotectedfield assignments a subclass constructor could partially forget -- turns a missing policy into an immediate, descriptive failure here instead of aNullPointerExceptionsurfacing later, deep inside the solver. -
contextSelector
- Specified by:
contextSelectorin classPTA
-
setContextSelector
-
contextConstructor
- Specified by:
contextConstructorin classPTA
-
heapAbstractor
- Specified by:
heapAbstractorin classPTA
-
getPropagator
- Specified by:
getPropagatorin classPTA
-
createCalleeContext
public Context createCalleeContext(ContextMethod caller, AllocNode receiverNode, CallSite callSite, SootMethod target) - Specified by:
createCalleeContextin classPTA
-
emptyContext
- Specified by:
emptyContextin classPTA
-
parameterize
Dispatches to the matchingparameterizeoverload via double dispatch onn's runtime type (seePagNode.parameterize(Parameterizer, Context)), instead of aninstanceofcascade that a newPagNodesubtype could silently fall through.- Specified by:
parameterizein classPTA
-
parameterize
- Specified by:
parameterizein interfaceParameterizer
-
parameterize
- Specified by:
parameterizein interfaceParameterizer
-
parameterize
- Specified by:
parameterizein interfaceParameterizer
-
parameterize
- Specified by:
parameterizein interfaceParameterizer
-
parameterize
Global variables are never context-sensitive, so they always parameterize to the empty context.- Specified by:
parameterizein interfaceParameterizer
-
parameterize
Finds or creates the ContextMethod for method and context.- Specified by:
parameterizein classPTA
-
getRootNode
- Specified by:
getRootNodein classPTA
-