com.ibm.wala.cast.ipa.callgraph
Class AstSSAPropagationCallGraphBuilder

java.lang.Object
  extended by com.ibm.wala.ipa.callgraph.propagation.PropagationCallGraphBuilder
      extended by com.ibm.wala.ipa.callgraph.propagation.SSAPropagationCallGraphBuilder
          extended by com.ibm.wala.cast.ipa.callgraph.AstSSAPropagationCallGraphBuilder
All Implemented Interfaces:
CallGraphBuilder, HeapModel, InstanceKeyFactory, PointerKeyFactory
Direct Known Subclasses:
AstJavaSSAPropagationCallGraphBuilder, CrossLanguageSSAPropagationCallGraphBuilder, JSSSAPropagationCallGraphBuilder

public abstract class AstSSAPropagationCallGraphBuilder
extends SSAPropagationCallGraphBuilder


Nested Class Summary
protected static class AstSSAPropagationCallGraphBuilder.AstConstraintVisitor
           
static class AstSSAPropagationCallGraphBuilder.AstInterestingVisitor
           
static class AstSSAPropagationCallGraphBuilder.AstPointerAnalysisImpl
           
static class AstSSAPropagationCallGraphBuilder.AstPointerFlowGraph
           
 
Nested classes/interfaces inherited from class com.ibm.wala.ipa.callgraph.propagation.SSAPropagationCallGraphBuilder
SSAPropagationCallGraphBuilder.ConstraintVisitor, SSAPropagationCallGraphBuilder.InterestingVisitor
 
Nested classes/interfaces inherited from class com.ibm.wala.ipa.callgraph.propagation.PropagationCallGraphBuilder
PropagationCallGraphBuilder.ArrayLoadOperator, PropagationCallGraphBuilder.ArrayStoreOperator, PropagationCallGraphBuilder.FilterOperator, PropagationCallGraphBuilder.GetFieldOperator, PropagationCallGraphBuilder.InstanceArrayStoreOperator, PropagationCallGraphBuilder.InstancePutFieldOperator, PropagationCallGraphBuilder.InverseFilterOperator, PropagationCallGraphBuilder.MutableBoolean, PropagationCallGraphBuilder.PutFieldOperator, PropagationCallGraphBuilder.TypedPointerKey
 
Field Summary
static boolean DEBUG_PROPERTIES
           
static boolean DEBUG_TYPE_INFERENCE
           
 
Fields inherited from class com.ibm.wala.ipa.callgraph.propagation.SSAPropagationCallGraphBuilder
PERIODIC_WIPE_SOFT_CACHES, SHORT_CIRCUIT_SINGLE_USES, WIPE_SOFT_CACHE_INTERVAL
 
Fields inherited from class com.ibm.wala.ipa.callgraph.propagation.PropagationCallGraphBuilder
assignOperator, callGraph, cha, contextSelector, DEBUG_GENERAL, entrypointCallSites, filterOperator, instanceKeyFactory, inverseFilterOperator, options, pointerKeyFactory, system, THROWABLE_SET
 
Constructor Summary
protected AstSSAPropagationCallGraphBuilder(IClassHierarchy cha, AnalysisOptions options, AnalysisCache cache, PointerKeyFactory pointerKeyFactory)
           
 
Method Summary
protected  ExplicitCallGraph createEmptyCallGraph(IClassHierarchy cha, AnalysisOptions options)
           
 PointerFlowGraphFactory getPointerFlowGraphFactory()
           
 boolean hasNoInterestingUses(CGNode node, int vn, DefUse du)
           
 SSAContextInterpreter makeDefaultContextInterpreters(SSAContextInterpreter appContextInterpreter, AnalysisOptions options, IClassHierarchy cha, ReflectionSpecification reflect)
           
protected  SSAPropagationCallGraphBuilder.InterestingVisitor makeInterestingVisitor(CGNode node, int vn)
           
protected  SSAPropagationCallGraphBuilder.ConstraintVisitor makeVisitor(ExplicitCallGraph.ExplicitNode node)
           
protected abstract  boolean useObjectCatalog()
           
 
Methods inherited from class com.ibm.wala.ipa.callgraph.propagation.SSAPropagationCallGraphBuilder
addBlockInstructionConstraints, addConstraintsFromNode, addNodeInstructionConstraints, addNodePassthruExceptionConstraints, contentsAreInvariant, getCaughtExceptionTypes, getCFAContextInterpreter, getIncomingPEIs, getInstanceKeyForPEI, getInstanceKeyForPEI, getInvariantContents, getInvariantContents, getUniqueCatchKey, hasUniqueCatchBlock, isConstantRef, iteratePointerKeys, makeSolver, unconditionallyAddConstraintsFromNode
 
Methods inherited from class com.ibm.wala.ipa.callgraph.propagation.PropagationCallGraphBuilder
addAssignmentsForCatchPointerKey, addConstraintsFromChangedNode, addConstraintsFromNewNodes, assignInstanceToCatch, catches, customInit, filterForClass, getAnalysisCache, getCallGraph, getClassHierarchy, getContextInterpreter, getContextSelector, getFilteredPointerKeyForLocal, getFilteredPointerKeyForLocal, getFilteredPointerKeyForLocal, getInstanceKeyForAllocation, getInstanceKeyForClassObject, getInstanceKeyForConstant, getInstanceKeyForMultiNewArray, getInstanceKeys, getInstanceKeysForClass, getJavaLangObject, getJavaLangThrowable, getMutableInstanceKeysForClass, getOptions, getPointerAnalysis, getPointerKeyFactory, getPointerKeyForArrayContents, getPointerKeyForExceptionalReturnValue, getPointerKeyForInstanceField, getPointerKeyForLocal, getPointerKeyForReturnValue, getPointerKeyForStaticField, getPropagationSystem, getSolver, getTargetForCall, haveAlreadyVisited, isJavaLangObject, makeCallGraph, makeSystem, markAlreadyVisited, markChanged, markDiscovered, representsNullType, setContextInterpreter, setContextSelector, setInstanceKeys, wasChanged
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface com.ibm.wala.ipa.callgraph.propagation.HeapModel
getClassHierarchy
 
Methods inherited from interface com.ibm.wala.ipa.callgraph.propagation.InstanceKeyFactory
getInstanceKeyForAllocation, getInstanceKeyForClassObject, getInstanceKeyForConstant, getInstanceKeyForMultiNewArray
 
Methods inherited from interface com.ibm.wala.ipa.callgraph.propagation.PointerKeyFactory
getFilteredPointerKeyForLocal, getPointerKeyForArrayContents, getPointerKeyForExceptionalReturnValue, getPointerKeyForInstanceField, getPointerKeyForLocal, getPointerKeyForReturnValue, getPointerKeyForStaticField
 

Field Detail

DEBUG_TYPE_INFERENCE

public static final boolean DEBUG_TYPE_INFERENCE
See Also:
Constant Field Values

DEBUG_PROPERTIES

public static final boolean DEBUG_PROPERTIES
See Also:
Constant Field Values
Constructor Detail

AstSSAPropagationCallGraphBuilder

protected AstSSAPropagationCallGraphBuilder(IClassHierarchy cha,
                                            AnalysisOptions options,
                                            AnalysisCache cache,
                                            PointerKeyFactory pointerKeyFactory)
Method Detail

useObjectCatalog

protected abstract boolean useObjectCatalog()

makeDefaultContextInterpreters

public SSAContextInterpreter makeDefaultContextInterpreters(SSAContextInterpreter appContextInterpreter,
                                                            AnalysisOptions options,
                                                            IClassHierarchy cha,
                                                            ReflectionSpecification reflect)

getPointerFlowGraphFactory

public PointerFlowGraphFactory getPointerFlowGraphFactory()
Specified by:
getPointerFlowGraphFactory in interface CallGraphBuilder
Overrides:
getPointerFlowGraphFactory in class PropagationCallGraphBuilder

createEmptyCallGraph

protected ExplicitCallGraph createEmptyCallGraph(IClassHierarchy cha,
                                                 AnalysisOptions options)
Overrides:
createEmptyCallGraph in class PropagationCallGraphBuilder

makeInterestingVisitor

protected SSAPropagationCallGraphBuilder.InterestingVisitor makeInterestingVisitor(CGNode node,
                                                                                   int vn)
Overrides:
makeInterestingVisitor in class SSAPropagationCallGraphBuilder

hasNoInterestingUses

public boolean hasNoInterestingUses(CGNode node,
                                    int vn,
                                    DefUse du)
Overrides:
hasNoInterestingUses in class SSAPropagationCallGraphBuilder

makeVisitor

protected SSAPropagationCallGraphBuilder.ConstraintVisitor makeVisitor(ExplicitCallGraph.ExplicitNode node)
Overrides:
makeVisitor in class SSAPropagationCallGraphBuilder
Returns:
a visitor to examine instructions in the ir