public abstract class AstSSAPropagationCallGraphBuilder extends SSAPropagationCallGraphBuilder
Modifier and Type | Class and Description |
---|---|
protected static class |
AstSSAPropagationCallGraphBuilder.AstConstraintVisitor |
static class |
AstSSAPropagationCallGraphBuilder.AstInterestingVisitor |
static class |
AstSSAPropagationCallGraphBuilder.AstPointerAnalysisImpl |
SSAPropagationCallGraphBuilder.ConstraintVisitor, SSAPropagationCallGraphBuilder.InterestingVisitor
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 |
---|---|
static boolean |
DEBUG_PROPERTIES |
static boolean |
DEBUG_TYPE_INFERENCE |
monitor, PERIODIC_WIPE_SOFT_CACHES, SHORT_CIRCUIT_SINGLE_USES, WIPE_SOFT_CACHE_INTERVAL
assignOperator, callGraph, cha, contextSelector, DEBUG_GENERAL, entrypointCallSites, filterOperator, instanceKeyFactory, inverseFilterOperator, options, pointerKeyFactory, system
Modifier | Constructor and Description |
---|---|
protected |
AstSSAPropagationCallGraphBuilder(IClassHierarchy cha,
AnalysisOptions options,
AnalysisCache cache,
PointerKeyFactory pointerKeyFactory) |
Modifier and Type | Method and Description |
---|---|
protected ExplicitCallGraph |
createEmptyCallGraph(IClassHierarchy cha,
AnalysisOptions options) |
protected abstract AbstractFieldPointerKey |
fieldKeyForUnknownWrites(AbstractFieldPointerKey fieldKey)
If the given fieldKey represents a concrete field, return the corresponding field key that
represents all writes to unknown fields that could potentially alias fieldKey
|
abstract GlobalObjectKey |
getGlobalObject(Atom language) |
boolean |
hasNoInterestingUses(CGNode node,
int vn,
DefUse du) |
protected boolean |
isUncataloguedField(IClass type,
String fieldName)
each language can specify whether a particular field name should be stored
in object catalogs or not.
|
SSAContextInterpreter |
makeDefaultContextInterpreters(SSAContextInterpreter appContextInterpreter,
AnalysisOptions options,
IClassHierarchy cha) |
protected SSAPropagationCallGraphBuilder.InterestingVisitor |
makeInterestingVisitor(CGNode node,
int vn) |
protected PropagationSystem |
makeSystem(AnalysisOptions options) |
SSAPropagationCallGraphBuilder.ConstraintVisitor |
makeVisitor(CGNode node) |
protected abstract boolean |
sameMethod(CGNode opNode,
String definingMethod)
Is definingMethod the same as the method represented by opNode? We need this since the names for
methods in some languages don't map in the straightforward way to the CGNode
|
protected abstract boolean |
useObjectCatalog()
should we maintain an object catalog for each instance key, storing the
names of all known properties of the instance key? required to handle
EachElementGetInstruction s. |
addBlockInstructionConstraints, addConstraintsFromNode, addNodeInstructionConstraints, addNodePassthruExceptionConstraints, contentsAreInvariant, contentsAreInvariant, getCaughtExceptionTypes, getCFAContextInterpreter, getIncomingPEIs, getInstanceKeyForPEI, getInstanceKeyForPEI, getInvariantContents, getInvariantContents, getTargetPointerKey, getTargetsForCall, getUniqueCatchKey, hasUniqueCatchBlock, isConstantRef, iterateCrossProduct, iteratePointerKeys, makeSolver, processCallingConstraints, unconditionallyAddConstraintsFromNode
addAssignmentsForCatchPointerKey, addConstraintsFromChangedNode, addConstraintsFromNewNodes, assignInstanceToCatch, catches, customInit, filterForClass, getAnalysisCache, getCallGraph, getClassHierarchy, getContextInterpreter, getContextSelector, getFilteredPointerKeyForLocal, getFilteredPointerKeyForLocal, getFilteredPointerKeyForLocal, getInstanceKeyForAllocation, getInstanceKeyForConstant, getInstanceKeyForMetadataObject, getInstanceKeyForMultiNewArray, getInstanceKeys, getInstanceKeysForClass, getJavaLangObject, getMutableInstanceKeysForClass, getOptions, getPointerAnalysis, getPointerKeyFactory, getPointerKeyForArrayContents, getPointerKeyForExceptionalReturnValue, getPointerKeyForInstanceField, getPointerKeyForLocal, getPointerKeyForReturnValue, getPointerKeyForStaticField, getPropagationSystem, getSolver, getSystem, getTargetForCall, haveAlreadyVisited, isJavaLangObject, makeCallGraph, makeCallGraph, markAlreadyVisited, markChanged, markDiscovered, representsNullType, setContextInterpreter, setContextSelector, setInstanceKeys, setPointerKeyFactory, wasChanged
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
getClassHierarchy
getInstanceKeyForAllocation, getInstanceKeyForConstant, getInstanceKeyForMetadataObject, getInstanceKeyForMultiNewArray
getFilteredPointerKeyForLocal, getPointerKeyForArrayContents, getPointerKeyForExceptionalReturnValue, getPointerKeyForInstanceField, getPointerKeyForLocal, getPointerKeyForReturnValue, getPointerKeyForStaticField
public static final boolean DEBUG_TYPE_INFERENCE
public static final boolean DEBUG_PROPERTIES
protected AstSSAPropagationCallGraphBuilder(IClassHierarchy cha, AnalysisOptions options, AnalysisCache cache, PointerKeyFactory pointerKeyFactory)
protected abstract boolean useObjectCatalog()
EachElementGetInstruction
s.protected boolean isUncataloguedField(IClass type, String fieldName)
public abstract GlobalObjectKey getGlobalObject(Atom language)
public SSAContextInterpreter makeDefaultContextInterpreters(SSAContextInterpreter appContextInterpreter, AnalysisOptions options, IClassHierarchy cha)
protected PropagationSystem makeSystem(AnalysisOptions options)
makeSystem
in class PropagationCallGraphBuilder
protected ExplicitCallGraph createEmptyCallGraph(IClassHierarchy cha, AnalysisOptions options)
createEmptyCallGraph
in class PropagationCallGraphBuilder
protected SSAPropagationCallGraphBuilder.InterestingVisitor makeInterestingVisitor(CGNode node, int vn)
makeInterestingVisitor
in class SSAPropagationCallGraphBuilder
public boolean hasNoInterestingUses(CGNode node, int vn, DefUse du)
hasNoInterestingUses
in class SSAPropagationCallGraphBuilder
public SSAPropagationCallGraphBuilder.ConstraintVisitor makeVisitor(CGNode node)
makeVisitor
in class SSAPropagationCallGraphBuilder
protected abstract AbstractFieldPointerKey fieldKeyForUnknownWrites(AbstractFieldPointerKey fieldKey)