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

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
              extended by com.ibm.wala.cast.ipa.callgraph.CrossLanguageSSAPropagationCallGraphBuilder
All Implemented Interfaces:
CallGraphBuilder, HeapModel, InstanceKeyFactory, PointerKeyFactory

public abstract class CrossLanguageSSAPropagationCallGraphBuilder
extends AstSSAPropagationCallGraphBuilder


Nested Class Summary
protected static class CrossLanguageSSAPropagationCallGraphBuilder.CrossLanguagePointerAnalysisImpl
           
protected static class CrossLanguageSSAPropagationCallGraphBuilder.CrossLanguagePointerFlowGraph
           
static interface CrossLanguageSSAPropagationCallGraphBuilder.PointerVisitorFactory
           
 
Nested classes/interfaces inherited from class com.ibm.wala.cast.ipa.callgraph.AstSSAPropagationCallGraphBuilder
AstSSAPropagationCallGraphBuilder.AstConstraintVisitor, AstSSAPropagationCallGraphBuilder.AstInterestingVisitor, AstSSAPropagationCallGraphBuilder.AstPointerAnalysisImpl, 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
 
Fields inherited from class com.ibm.wala.cast.ipa.callgraph.AstSSAPropagationCallGraphBuilder
DEBUG_PROPERTIES, 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 CrossLanguageSSAPropagationCallGraphBuilder(IClassHierarchy cha, AnalysisOptions options, AnalysisCache cache, PointerKeyFactory pointerKeyFactory)
           
 
Method Summary
protected  ExplicitCallGraph createEmptyCallGraph(IClassHierarchy cha, AnalysisOptions options)
           
protected  void customInit()
           
protected static Atom getLanguage(CGNode node)
           
 PointerFlowGraphFactory getPointerFlowGraphFactory()
           
protected abstract  TargetLanguageSelector<AstSSAPropagationCallGraphBuilder.AstPointerAnalysisImpl.AstImplicitPointsToSetVisitor,LocalPointerKey> makeImplicitVisitorSelector(CrossLanguageSSAPropagationCallGraphBuilder.CrossLanguagePointerAnalysisImpl analysis)
           
protected  SSAPropagationCallGraphBuilder.InterestingVisitor makeInterestingVisitor(CGNode node, int vn)
           
protected abstract  TargetLanguageSelector<SSAPropagationCallGraphBuilder.InterestingVisitor,java.lang.Integer> makeInterestingVisitorSelector()
           
protected abstract  TargetLanguageSelector<SSAPropagationCallGraphBuilder.ConstraintVisitor,ExplicitCallGraph.ExplicitNode> makeMainVisitorSelector()
           
protected abstract  TargetLanguageSelector<CrossLanguageSSAPropagationCallGraphBuilder.PointerVisitorFactory,CGNode> makePointerVisitorSelector(CrossLanguageSSAPropagationCallGraphBuilder.CrossLanguagePointerFlowGraph analysis)
           
protected abstract  TargetLanguageSelector<AbstractRootMethod,CrossLanguageCallGraph> makeRootNodeSelector()
           
protected  PropagationSystem makeSystem(AnalysisOptions options)
           
protected  SSAPropagationCallGraphBuilder.ConstraintVisitor makeVisitor(ExplicitCallGraph.ExplicitNode node)
           
 
Methods inherited from class com.ibm.wala.cast.ipa.callgraph.AstSSAPropagationCallGraphBuilder
hasNoInterestingUses, makeDefaultContextInterpreters, 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, 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, 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
 

Constructor Detail

CrossLanguageSSAPropagationCallGraphBuilder

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

makeMainVisitorSelector

protected abstract TargetLanguageSelector<SSAPropagationCallGraphBuilder.ConstraintVisitor,ExplicitCallGraph.ExplicitNode> makeMainVisitorSelector()

makeInterestingVisitorSelector

protected abstract TargetLanguageSelector<SSAPropagationCallGraphBuilder.InterestingVisitor,java.lang.Integer> makeInterestingVisitorSelector()

makePointerVisitorSelector

protected abstract TargetLanguageSelector<CrossLanguageSSAPropagationCallGraphBuilder.PointerVisitorFactory,CGNode> makePointerVisitorSelector(CrossLanguageSSAPropagationCallGraphBuilder.CrossLanguagePointerFlowGraph analysis)

makeImplicitVisitorSelector

protected abstract TargetLanguageSelector<AstSSAPropagationCallGraphBuilder.AstPointerAnalysisImpl.AstImplicitPointsToSetVisitor,LocalPointerKey> makeImplicitVisitorSelector(CrossLanguageSSAPropagationCallGraphBuilder.CrossLanguagePointerAnalysisImpl analysis)

makeRootNodeSelector

protected abstract TargetLanguageSelector<AbstractRootMethod,CrossLanguageCallGraph> makeRootNodeSelector()

createEmptyCallGraph

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

getLanguage

protected static Atom getLanguage(CGNode node)

makeInterestingVisitor

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

makeVisitor

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

getPointerFlowGraphFactory

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

makeSystem

protected PropagationSystem makeSystem(AnalysisOptions options)
Overrides:
makeSystem in class PropagationCallGraphBuilder

customInit

protected void customInit()
Overrides:
customInit in class PropagationCallGraphBuilder