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) |
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, wasChanged
protected 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, MonitorUtil.IProgressMonitor monitor)
addConstraintsFromNode
in class PropagationCallGraphBuilder
protected void processClassInitializer(IClass klass)
public void visitInvoke(CGNode node, CallSiteReference site)
IllegalArgumentException
- if site is nullprotected abstract 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 PropagationCallGraphBuilder
public Set<IClass> getAllocatedTypes()
protected IPointsToSolver makeSolver()
makeSolver
in class PropagationCallGraphBuilder
protected ContextSelector makeContextSelector(ContextSelector appContextSelector)
protected SSAContextInterpreter makeContextInterpreter(SSAContextInterpreter appContextInterpreter)
protected boolean unconditionallyAddConstraintsFromNode(CGNode node, MonitorUtil.IProgressMonitor monitor)
unconditionallyAddConstraintsFromNode
in class PropagationCallGraphBuilder
protected ExplicitCallGraph createEmptyCallGraph(IClassHierarchy cha, AnalysisOptions options)
createEmptyCallGraph
in class PropagationCallGraphBuilder
protected PropagationSystem makeSystem(AnalysisOptions options)
makeSystem
in class PropagationCallGraphBuilder
public PointerAnalysis<InstanceKey> getPointerAnalysis()
getPointerAnalysis
in interface CallGraphBuilder
getPointerAnalysis
in class PropagationCallGraphBuilder