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.InterestingVisitorPropagationCallGraphBuilder.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_INTERVALassignOperator, 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
EachElementGetInstructions. |
addBlockInstructionConstraints, addConstraintsFromNode, addNodeInstructionConstraints, addNodePassthruExceptionConstraints, contentsAreInvariant, contentsAreInvariant, getCaughtExceptionTypes, getCFAContextInterpreter, getIncomingPEIs, getInstanceKeyForPEI, getInstanceKeyForPEI, getInvariantContents, getInvariantContents, getTargetPointerKey, getTargetsForCall, getUniqueCatchKey, hasUniqueCatchBlock, isConstantRef, iterateCrossProduct, iteratePointerKeys, makeSolver, processCallingConstraints, unconditionallyAddConstraintsFromNodeaddAssignmentsForCatchPointerKey, 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, wasChangedclone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitgetClassHierarchygetInstanceKeyForAllocation, getInstanceKeyForConstant, getInstanceKeyForMetadataObject, getInstanceKeyForMultiNewArraygetFilteredPointerKeyForLocal, getPointerKeyForArrayContents, getPointerKeyForExceptionalReturnValue, getPointerKeyForInstanceField, getPointerKeyForLocal, getPointerKeyForReturnValue, getPointerKeyForStaticFieldpublic 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()
EachElementGetInstructions.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 PropagationCallGraphBuilderprotected ExplicitCallGraph createEmptyCallGraph(IClassHierarchy cha, AnalysisOptions options)
createEmptyCallGraph in class PropagationCallGraphBuilderprotected SSAPropagationCallGraphBuilder.InterestingVisitor makeInterestingVisitor(CGNode node, int vn)
makeInterestingVisitor in class SSAPropagationCallGraphBuilderpublic boolean hasNoInterestingUses(CGNode node, int vn, DefUse du)
hasNoInterestingUses in class SSAPropagationCallGraphBuilderpublic SSAPropagationCallGraphBuilder.ConstraintVisitor makeVisitor(CGNode node)
makeVisitor in class SSAPropagationCallGraphBuilderprotected abstract AbstractFieldPointerKey fieldKeyForUnknownWrites(AbstractFieldPointerKey fieldKey)