public abstract class AbstractRTABuilder extends PropagationCallGraphBuilder
PropagationCallGraphBuilder.ArrayLoadOperator, PropagationCallGraphBuilder.ArrayStoreOperator, PropagationCallGraphBuilder.FilterOperator, PropagationCallGraphBuilder.GetFieldOperator, PropagationCallGraphBuilder.InstanceArrayStoreOperator, PropagationCallGraphBuilder.InstancePutFieldOperator, PropagationCallGraphBuilder.InverseFilterOperator, PropagationCallGraphBuilder.MutableBoolean, PropagationCallGraphBuilder.PutFieldOperator, PropagationCallGraphBuilder.TypedPointerKey| Modifier and Type | Field and Description |
|---|---|
protected HashSet<IClass> |
allocatedClasses
set of classes (IClass) discovered to be allocated
|
protected Set<IClass> |
clinitProcessed
set of classes whose clinit are processed
|
protected boolean |
clone2Assign
Should we change calls to clone() to assignments?
|
protected static boolean |
DEBUG |
protected static int |
DEBUG_LEVEL |
assignOperator, callGraph, cha, contextSelector, DEBUG_GENERAL, entrypointCallSites, filterOperator, instanceKeyFactory, inverseFilterOperator, options, pointerKeyFactory, system| Modifier | Constructor and Description |
|---|---|
protected |
AbstractRTABuilder(IClassHierarchy cha,
AnalysisOptions options,
AnalysisCache cache,
ContextSelector appContextSelector,
SSAContextInterpreter appContextInterpreter) |
| Modifier and Type | Method and Description |
|---|---|
protected boolean |
addConstraintsFromNode(CGNode node,
com.ibm.wala.util.MonitorUtil.IProgressMonitor monitor)
Visit all instructions in a node, and add dataflow constraints induced by each statement relevat to RTA
|
protected ExplicitCallGraph |
createEmptyCallGraph(IClassHierarchy cha,
AnalysisOptions options) |
protected void |
customInit() |
Set<IClass> |
getAllocatedTypes() |
protected abstract PointerKey |
getKeyForSite(CallSiteReference site) |
PointerAnalysis<InstanceKey> |
getPointerAnalysis() |
protected RTAContextInterpreter |
getRTAContextInterpreter() |
protected SSAContextInterpreter |
makeContextInterpreter(SSAContextInterpreter appContextInterpreter) |
protected ContextSelector |
makeContextSelector(ContextSelector appContextSelector) |
protected abstract com.ibm.wala.fixpoint.UnaryOperator<PointsToSetVariable> |
makeDispatchOperator(CallSiteReference site,
CGNode node) |
protected IPointsToSolver |
makeSolver() |
protected PropagationSystem |
makeSystem(AnalysisOptions options) |
protected void |
processClassInitializer(IClass klass) |
protected boolean |
unconditionallyAddConstraintsFromNode(CGNode node,
com.ibm.wala.util.MonitorUtil.IProgressMonitor monitor) |
protected abstract void |
updateSetsForNewClass(IClass klass,
InstanceKey iKey,
CGNode node,
NewSiteReference ns)
Perform needed bookkeeping when a new class is discovered.
|
void |
visitInvoke(CGNode node,
CallSiteReference site)
Add a constraint for a call instruction
|
void |
visitNew(CGNode node,
NewSiteReference newSite)
Add a constraint for an allocate
|
addAssignmentsForCatchPointerKey, addConstraintsFromChangedNode, addConstraintsFromNewNodes, assignInstanceToCatch, catches, filterForClass, getAnalysisCache, getCallGraph, getClassHierarchy, getContextInterpreter, getContextSelector, getFilteredPointerKeyForLocal, getFilteredPointerKeyForLocal, getFilteredPointerKeyForLocal, getInstanceKeyForAllocation, getInstanceKeyForConstant, getInstanceKeyForMetadataObject, getInstanceKeyForMultiNewArray, getInstanceKeys, getInstanceKeysForClass, getJavaLangObject, getMutableInstanceKeysForClass, getOptions, getPointerKeyFactory, getPointerKeyForArrayContents, getPointerKeyForExceptionalReturnValue, getPointerKeyForInstanceField, getPointerKeyForLocal, getPointerKeyForReturnValue, getPointerKeyForStaticField, getPropagationSystem, getSolver, getSystem, getTargetForCall, haveAlreadyVisited, isJavaLangObject, makeCallGraph, makeCallGraph, markAlreadyVisited, markChanged, markDiscovered, representsNullType, setContextInterpreter, setContextSelector, setInstanceKeys, setPointerKeyFactory, wasChangedprotected static final int DEBUG_LEVEL
protected static final boolean DEBUG
protected final boolean clone2Assign
protected final Set<IClass> clinitProcessed
protected AbstractRTABuilder(IClassHierarchy cha, AnalysisOptions options, AnalysisCache cache, ContextSelector appContextSelector, SSAContextInterpreter appContextInterpreter)
protected RTAContextInterpreter getRTAContextInterpreter()
protected boolean addConstraintsFromNode(CGNode node, com.ibm.wala.util.MonitorUtil.IProgressMonitor monitor)
addConstraintsFromNode in class PropagationCallGraphBuilderprotected void processClassInitializer(IClass klass)
public void visitInvoke(CGNode node, CallSiteReference site)
IllegalArgumentException - if site is nullprotected abstract com.ibm.wala.fixpoint.UnaryOperator<PointsToSetVariable> makeDispatchOperator(CallSiteReference site, CGNode node)
protected abstract PointerKey getKeyForSite(CallSiteReference site)
public void visitNew(CGNode node, NewSiteReference newSite)
IllegalArgumentException - if newSite is nullprotected abstract void updateSetsForNewClass(IClass klass, InstanceKey iKey, CGNode node, NewSiteReference ns)
klass - protected void customInit()
customInit in class PropagationCallGraphBuilderpublic Set<IClass> getAllocatedTypes()
protected IPointsToSolver makeSolver()
makeSolver in class PropagationCallGraphBuilderprotected ContextSelector makeContextSelector(ContextSelector appContextSelector)
protected SSAContextInterpreter makeContextInterpreter(SSAContextInterpreter appContextInterpreter)
protected boolean unconditionallyAddConstraintsFromNode(CGNode node, com.ibm.wala.util.MonitorUtil.IProgressMonitor monitor)
unconditionallyAddConstraintsFromNode in class PropagationCallGraphBuilderprotected ExplicitCallGraph createEmptyCallGraph(IClassHierarchy cha, AnalysisOptions options)
createEmptyCallGraph in class PropagationCallGraphBuilderprotected PropagationSystem makeSystem(AnalysisOptions options)
makeSystem in class PropagationCallGraphBuilderpublic PointerAnalysis<InstanceKey> getPointerAnalysis()
getPointerAnalysis in interface CallGraphBuildergetPointerAnalysis in class PropagationCallGraphBuilderCopyright © 2015. All rights reserved.