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, 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, MonitorUtil.IProgressMonitor monitor)
addConstraintsFromNode in class PropagationCallGraphBuilderprotected 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 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, 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 PropagationCallGraphBuilder