Class JSSSAPropagationCallGraphBuilder
- java.lang.Object
-
- com.ibm.wala.ipa.callgraph.propagation.PropagationCallGraphBuilder
-
- com.ibm.wala.ipa.callgraph.propagation.SSAPropagationCallGraphBuilder
-
- com.ibm.wala.cast.ipa.callgraph.AstSSAPropagationCallGraphBuilder
-
- com.ibm.wala.cast.js.ipa.callgraph.JSSSAPropagationCallGraphBuilder
-
- All Implemented Interfaces:
com.ibm.wala.ipa.callgraph.CallGraphBuilder<com.ibm.wala.ipa.callgraph.propagation.InstanceKey>,com.ibm.wala.ipa.callgraph.propagation.HeapModel,com.ibm.wala.ipa.callgraph.propagation.InstanceKeyFactory,com.ibm.wala.ipa.callgraph.propagation.PointerKeyFactory
- Direct Known Subclasses:
JSCFABuilder
public class JSSSAPropagationCallGraphBuilder extends com.ibm.wala.cast.ipa.callgraph.AstSSAPropagationCallGraphBuilderSpecialized pointer analysis constraint generation for JavaScript.Global object handling
The global object is represented by aGlobalObjectKeystored inglobalObject.AstGlobalReadandAstGlobalWriteinstructions are treated as accessing properties of the global object; seeJSSSAPropagationCallGraphBuilder.JSConstraintVisitor.visitAstGlobalRead(AstGlobalRead),JSSSAPropagationCallGraphBuilder.JSConstraintVisitor.visitAstGlobalWrite(AstGlobalWrite), andJSSSAPropagationCallGraphBuilder.JSPointerAnalysisImpl.JSImplicitPointsToSetVisitor.visitAstGlobalRead(AstGlobalRead). Finally, we need to represent direct flow of the global object to handle receiver argument semantics (seeRhinoToAstTranslator). To do so, we create a reference to a global namedGLOBAL_OBJ_VAR_NAME, which is handled specially inJSSSAPropagationCallGraphBuilder.JSConstraintVisitor.visitAstGlobalRead(AstGlobalRead).
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classJSSSAPropagationCallGraphBuilder.JSConstraintVisitorstatic classJSSSAPropagationCallGraphBuilder.JSInterestingVisitorstatic classJSSSAPropagationCallGraphBuilder.JSPointerAnalysisImpl-
Nested classes/interfaces inherited from class com.ibm.wala.cast.ipa.callgraph.AstSSAPropagationCallGraphBuilder
com.ibm.wala.cast.ipa.callgraph.AstSSAPropagationCallGraphBuilder.AstConstraintVisitor, com.ibm.wala.cast.ipa.callgraph.AstSSAPropagationCallGraphBuilder.AstInterestingVisitor, com.ibm.wala.cast.ipa.callgraph.AstSSAPropagationCallGraphBuilder.AstPointerAnalysisImpl
-
Nested classes/interfaces inherited from class com.ibm.wala.ipa.callgraph.propagation.SSAPropagationCallGraphBuilder
com.ibm.wala.ipa.callgraph.propagation.SSAPropagationCallGraphBuilder.ConstraintVisitor, com.ibm.wala.ipa.callgraph.propagation.SSAPropagationCallGraphBuilder.InterestingVisitor
-
Nested classes/interfaces inherited from class com.ibm.wala.ipa.callgraph.propagation.PropagationCallGraphBuilder
com.ibm.wala.ipa.callgraph.propagation.PropagationCallGraphBuilder.ArrayLoadOperator, com.ibm.wala.ipa.callgraph.propagation.PropagationCallGraphBuilder.ArrayStoreOperator, com.ibm.wala.ipa.callgraph.propagation.PropagationCallGraphBuilder.FilterOperator, com.ibm.wala.ipa.callgraph.propagation.PropagationCallGraphBuilder.GetFieldOperator, com.ibm.wala.ipa.callgraph.propagation.PropagationCallGraphBuilder.InstanceArrayStoreOperator, com.ibm.wala.ipa.callgraph.propagation.PropagationCallGraphBuilder.InstancePutFieldOperator, com.ibm.wala.ipa.callgraph.propagation.PropagationCallGraphBuilder.InverseFilterOperator, com.ibm.wala.ipa.callgraph.propagation.PropagationCallGraphBuilder.MutableBoolean, com.ibm.wala.ipa.callgraph.propagation.PropagationCallGraphBuilder.PutFieldOperator, com.ibm.wala.ipa.callgraph.propagation.PropagationCallGraphBuilder.TypedPointerKey
-
-
Field Summary
Fields Modifier and Type Field Description static booleanDEBUG_LEXICALstatic booleanDEBUG_TYPE_INFERENCEstatic java.lang.StringGLOBAL_OBJ_VAR_NAMEname to be used internally to pass around the global object-
Fields inherited from class com.ibm.wala.cast.ipa.callgraph.AstSSAPropagationCallGraphBuilder
DEBUG_PROPERTIES
-
-
Constructor Summary
Constructors Modifier Constructor Description protectedJSSSAPropagationCallGraphBuilder(com.ibm.wala.ipa.callgraph.impl.AbstractRootMethod abstractRootMethod, com.ibm.wala.ipa.callgraph.AnalysisOptions options, com.ibm.wala.ipa.callgraph.IAnalysisCacheView cache, com.ibm.wala.ipa.callgraph.propagation.PointerKeyFactory pointerKeyFactory)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description protected voidaddAssignmentsForCatchPointerKey(com.ibm.wala.ipa.callgraph.propagation.PointerKey exceptionVar, java.util.Set<com.ibm.wala.classLoader.IClass> catchClasses, com.ibm.wala.ipa.callgraph.propagation.PointerKey e)protected com.ibm.wala.ipa.callgraph.impl.ExplicitCallGraphcreateEmptyCallGraph(com.ibm.wala.classLoader.IMethod fakeRootClass, com.ibm.wala.ipa.callgraph.AnalysisOptions options)protected com.ibm.wala.ipa.callgraph.propagation.AbstractFieldPointerKeyfieldKeyForUnknownWrites(com.ibm.wala.ipa.callgraph.propagation.AbstractFieldPointerKey fieldKey)java.net.URLgetBaseURL()com.ibm.wala.cast.ipa.callgraph.GlobalObjectKeygetGlobalObject(com.ibm.wala.core.util.strings.Atom language)com.ibm.wala.ipa.callgraph.propagation.PointerKeygetPointerKeyForGlobalVar(java.lang.String varName)static com.ibm.wala.cast.tree.CAstSourcePositionMap.PositiongetSomePositionForMethod(com.ibm.wala.ssa.IR ir, com.ibm.wala.cast.loader.AstMethod method)protected booleanisConstantRef(com.ibm.wala.ssa.SymbolTable symbolTable, int valueNumber)protected booleanisUncataloguedField(com.ibm.wala.classLoader.IClass type, java.lang.String fieldName)protected com.ibm.wala.ipa.callgraph.propagation.SSAPropagationCallGraphBuilder.InterestingVisitormakeInterestingVisitor(com.ibm.wala.ipa.callgraph.CGNode node, int vn)protected com.ibm.wala.ipa.callgraph.propagation.PropagationSystemmakeSystem(com.ibm.wala.ipa.callgraph.AnalysisOptions options)protected com.ibm.wala.analysis.typeInference.TypeInferencemakeTypeInference(com.ibm.wala.ssa.IR ir, com.ibm.wala.ipa.cha.IClassHierarchy cha)JSSSAPropagationCallGraphBuilder.JSConstraintVisitormakeVisitor(com.ibm.wala.ipa.callgraph.CGNode node)protected voidprocessCallingConstraints(com.ibm.wala.ipa.callgraph.CGNode caller, com.ibm.wala.ssa.SSAAbstractInvokeInstruction instruction, com.ibm.wala.ipa.callgraph.CGNode target, com.ibm.wala.ipa.callgraph.propagation.InstanceKey[][] constParams, com.ibm.wala.ipa.callgraph.propagation.PointerKey uniqueCatchKey)static voidprocessCallingConstraintsInternal(com.ibm.wala.cast.ipa.callgraph.AstSSAPropagationCallGraphBuilder builder, com.ibm.wala.ipa.callgraph.CGNode caller, com.ibm.wala.ssa.SSAAbstractInvokeInstruction instruction, com.ibm.wala.ipa.callgraph.CGNode target, com.ibm.wala.ipa.callgraph.propagation.InstanceKey[][] constParams, com.ibm.wala.ipa.callgraph.propagation.PointerKey uniqueCatchKey)protected booleansameMethod(com.ibm.wala.ipa.callgraph.CGNode opNode, java.lang.String definingMethod)voidsetBaseURL(java.net.URL url)protected booleanuseObjectCatalog()-
Methods inherited from class com.ibm.wala.cast.ipa.callgraph.AstSSAPropagationCallGraphBuilder
hasNoInterestingUses, makeDefaultContextInterpreters
-
Methods inherited from class com.ibm.wala.ipa.callgraph.propagation.SSAPropagationCallGraphBuilder
addBlockInstructionConstraints, addConstraintsFromNode, addNodeInstructionConstraints, addNodePassthruExceptionConstraints, addNodeValueConstraints, contentsAreInvariant, contentsAreInvariant, getCaughtExceptionTypes, getCFAContextInterpreter, getIncomingPEIs, getInstanceKeyForPEI, getInstanceKeyForPEI, getInvariantContents, getInvariantContents, getTargetPointerKey, getTargetsForCall, getUniqueCatchKey, hasUniqueCatchBlock, iterateCrossProduct, iteratePointerKeys, makeSolver, unconditionallyAddConstraintsFromNode
-
Methods inherited from class com.ibm.wala.ipa.callgraph.propagation.PropagationCallGraphBuilder
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
-
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.InstanceKeyFactory
getInstanceKeyForAllocation, getInstanceKeyForConstant, getInstanceKeyForMetadataObject, getInstanceKeyForMultiNewArray
-
Methods inherited from interface com.ibm.wala.ipa.callgraph.propagation.PointerKeyFactory
getFilteredPointerKeyForLocal, getPointerKeyForArrayContents, getPointerKeyForExceptionalReturnValue, getPointerKeyForInstanceField, getPointerKeyForLocal, getPointerKeyForReturnValue, getPointerKeyForStaticField
-
-
-
-
Field Detail
-
DEBUG_LEXICAL
public static final boolean DEBUG_LEXICAL
- See Also:
- Constant Field Values
-
DEBUG_TYPE_INFERENCE
public static final boolean DEBUG_TYPE_INFERENCE
- See Also:
- Constant Field Values
-
GLOBAL_OBJ_VAR_NAME
public static final java.lang.String GLOBAL_OBJ_VAR_NAME
name to be used internally to pass around the global object- See Also:
- Constant Field Values
-
-
Constructor Detail
-
JSSSAPropagationCallGraphBuilder
protected JSSSAPropagationCallGraphBuilder(com.ibm.wala.ipa.callgraph.impl.AbstractRootMethod abstractRootMethod, com.ibm.wala.ipa.callgraph.AnalysisOptions options, com.ibm.wala.ipa.callgraph.IAnalysisCacheView cache, com.ibm.wala.ipa.callgraph.propagation.PointerKeyFactory pointerKeyFactory)
-
-
Method Detail
-
getGlobalObject
public com.ibm.wala.cast.ipa.callgraph.GlobalObjectKey getGlobalObject(com.ibm.wala.core.util.strings.Atom language)
- Specified by:
getGlobalObjectin classcom.ibm.wala.cast.ipa.callgraph.AstSSAPropagationCallGraphBuilder
-
getBaseURL
public java.net.URL getBaseURL()
-
setBaseURL
public void setBaseURL(java.net.URL url)
-
isConstantRef
protected boolean isConstantRef(com.ibm.wala.ssa.SymbolTable symbolTable, int valueNumber)- Overrides:
isConstantRefin classcom.ibm.wala.ipa.callgraph.propagation.SSAPropagationCallGraphBuilder
-
useObjectCatalog
protected boolean useObjectCatalog()
- Specified by:
useObjectCatalogin classcom.ibm.wala.cast.ipa.callgraph.AstSSAPropagationCallGraphBuilder
-
isUncataloguedField
protected boolean isUncataloguedField(com.ibm.wala.classLoader.IClass type, java.lang.String fieldName)- Overrides:
isUncataloguedFieldin classcom.ibm.wala.cast.ipa.callgraph.AstSSAPropagationCallGraphBuilder
-
fieldKeyForUnknownWrites
protected com.ibm.wala.ipa.callgraph.propagation.AbstractFieldPointerKey fieldKeyForUnknownWrites(com.ibm.wala.ipa.callgraph.propagation.AbstractFieldPointerKey fieldKey)
- Specified by:
fieldKeyForUnknownWritesin classcom.ibm.wala.cast.ipa.callgraph.AstSSAPropagationCallGraphBuilder
-
getPointerKeyForGlobalVar
public com.ibm.wala.ipa.callgraph.propagation.PointerKey getPointerKeyForGlobalVar(java.lang.String varName)
-
createEmptyCallGraph
protected com.ibm.wala.ipa.callgraph.impl.ExplicitCallGraph createEmptyCallGraph(com.ibm.wala.classLoader.IMethod fakeRootClass, com.ibm.wala.ipa.callgraph.AnalysisOptions options)- Overrides:
createEmptyCallGraphin classcom.ibm.wala.cast.ipa.callgraph.AstSSAPropagationCallGraphBuilder
-
makeTypeInference
protected com.ibm.wala.analysis.typeInference.TypeInference makeTypeInference(com.ibm.wala.ssa.IR ir, com.ibm.wala.ipa.cha.IClassHierarchy cha)
-
addAssignmentsForCatchPointerKey
protected void addAssignmentsForCatchPointerKey(com.ibm.wala.ipa.callgraph.propagation.PointerKey exceptionVar, java.util.Set<com.ibm.wala.classLoader.IClass> catchClasses, com.ibm.wala.ipa.callgraph.propagation.PointerKey e)- Overrides:
addAssignmentsForCatchPointerKeyin classcom.ibm.wala.ipa.callgraph.propagation.PropagationCallGraphBuilder
-
makeInterestingVisitor
protected com.ibm.wala.ipa.callgraph.propagation.SSAPropagationCallGraphBuilder.InterestingVisitor makeInterestingVisitor(com.ibm.wala.ipa.callgraph.CGNode node, int vn)- Overrides:
makeInterestingVisitorin classcom.ibm.wala.cast.ipa.callgraph.AstSSAPropagationCallGraphBuilder
-
makeSystem
protected com.ibm.wala.ipa.callgraph.propagation.PropagationSystem makeSystem(com.ibm.wala.ipa.callgraph.AnalysisOptions options)
- Overrides:
makeSystemin classcom.ibm.wala.cast.ipa.callgraph.AstSSAPropagationCallGraphBuilder
-
makeVisitor
public JSSSAPropagationCallGraphBuilder.JSConstraintVisitor makeVisitor(com.ibm.wala.ipa.callgraph.CGNode node)
- Overrides:
makeVisitorin classcom.ibm.wala.cast.ipa.callgraph.AstSSAPropagationCallGraphBuilder
-
getSomePositionForMethod
public static com.ibm.wala.cast.tree.CAstSourcePositionMap.Position getSomePositionForMethod(com.ibm.wala.ssa.IR ir, com.ibm.wala.cast.loader.AstMethod method)
-
processCallingConstraints
protected void processCallingConstraints(com.ibm.wala.ipa.callgraph.CGNode caller, com.ibm.wala.ssa.SSAAbstractInvokeInstruction instruction, com.ibm.wala.ipa.callgraph.CGNode target, com.ibm.wala.ipa.callgraph.propagation.InstanceKey[][] constParams, com.ibm.wala.ipa.callgraph.propagation.PointerKey uniqueCatchKey)- Overrides:
processCallingConstraintsin classcom.ibm.wala.ipa.callgraph.propagation.SSAPropagationCallGraphBuilder
-
processCallingConstraintsInternal
public static void processCallingConstraintsInternal(com.ibm.wala.cast.ipa.callgraph.AstSSAPropagationCallGraphBuilder builder, com.ibm.wala.ipa.callgraph.CGNode caller, com.ibm.wala.ssa.SSAAbstractInvokeInstruction instruction, com.ibm.wala.ipa.callgraph.CGNode target, com.ibm.wala.ipa.callgraph.propagation.InstanceKey[][] constParams, com.ibm.wala.ipa.callgraph.propagation.PointerKey uniqueCatchKey)
-
sameMethod
protected boolean sameMethod(com.ibm.wala.ipa.callgraph.CGNode opNode, java.lang.String definingMethod)- Specified by:
sameMethodin classcom.ibm.wala.cast.ipa.callgraph.AstSSAPropagationCallGraphBuilder
-
-