public class JSSSAPropagationCallGraphBuilder
extends com.ibm.wala.cast.ipa.callgraph.AstSSAPropagationCallGraphBuilder
GlobalObjectKey stored in
globalObject. AstGlobalRead and AstGlobalWrite
instructions are treated as accessing properties of the global object; see
JSSSAPropagationCallGraphBuilder.JSConstraintVisitor.visitAstGlobalRead(AstGlobalRead),
JSSSAPropagationCallGraphBuilder.JSConstraintVisitor.visitAstGlobalWrite(AstGlobalWrite), and
JSSSAPropagationCallGraphBuilder.JSPointerAnalysisImpl.JSImplicitPointsToSetVisitor.visitAstGlobalRead(AstGlobalRead).
Finally, we need to represent direct flow of the global object to handle
receiver argument semantics (see
org.mozilla.javascript.RhinoToAstTranslator). To do so, we create a
reference to a global named GLOBAL_OBJ_VAR_NAME, which is handled
specially in JSSSAPropagationCallGraphBuilder.JSConstraintVisitor.visitAstGlobalRead(AstGlobalRead).| Modifier and Type | Class and Description |
|---|---|
static class |
JSSSAPropagationCallGraphBuilder.JSConstraintVisitor |
static class |
JSSSAPropagationCallGraphBuilder.JSInterestingVisitor |
static class |
JSSSAPropagationCallGraphBuilder.JSPointerAnalysisImpl |
com.ibm.wala.cast.ipa.callgraph.AstSSAPropagationCallGraphBuilder.AstConstraintVisitor, com.ibm.wala.cast.ipa.callgraph.AstSSAPropagationCallGraphBuilder.AstInterestingVisitor, com.ibm.wala.cast.ipa.callgraph.AstSSAPropagationCallGraphBuilder.AstPointerAnalysisImplcom.ibm.wala.ipa.callgraph.propagation.SSAPropagationCallGraphBuilder.ConstraintVisitor, com.ibm.wala.ipa.callgraph.propagation.SSAPropagationCallGraphBuilder.InterestingVisitorcom.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| Modifier and Type | Field and Description |
|---|---|
static boolean |
DEBUG_LEXICAL |
static boolean |
DEBUG_TYPE_INFERENCE |
static String |
GLOBAL_OBJ_VAR_NAME
name to be used internally to pass around the global object
|
DEBUG_PROPERTIES| Modifier | Constructor and Description |
|---|---|
protected |
JSSSAPropagationCallGraphBuilder(com.ibm.wala.ipa.cha.IClassHierarchy cha,
com.ibm.wala.ipa.callgraph.AnalysisOptions options,
com.ibm.wala.ipa.callgraph.IAnalysisCacheView cache,
com.ibm.wala.ipa.callgraph.propagation.PointerKeyFactory pointerKeyFactory) |
| Modifier and Type | Method and Description |
|---|---|
protected void |
addAssignmentsForCatchPointerKey(com.ibm.wala.ipa.callgraph.propagation.PointerKey exceptionVar,
Set catchClasses,
com.ibm.wala.ipa.callgraph.propagation.PointerKey e) |
protected com.ibm.wala.ipa.callgraph.impl.ExplicitCallGraph |
createEmptyCallGraph(com.ibm.wala.ipa.cha.IClassHierarchy cha,
com.ibm.wala.ipa.callgraph.AnalysisOptions options) |
protected com.ibm.wala.ipa.callgraph.propagation.AbstractFieldPointerKey |
fieldKeyForUnknownWrites(com.ibm.wala.ipa.callgraph.propagation.AbstractFieldPointerKey fieldKey) |
URL |
getBaseURL() |
com.ibm.wala.cast.ipa.callgraph.GlobalObjectKey |
getGlobalObject(com.ibm.wala.util.strings.Atom language) |
com.ibm.wala.ipa.callgraph.propagation.PointerKey |
getPointerKeyForGlobalVar(String varName) |
static com.ibm.wala.cast.tree.CAstSourcePositionMap.Position |
getSomePositionForMethod(com.ibm.wala.ssa.IR ir,
com.ibm.wala.cast.loader.AstMethod method) |
protected boolean |
isConstantRef(com.ibm.wala.ssa.SymbolTable symbolTable,
int valueNumber) |
protected boolean |
isUncataloguedField(com.ibm.wala.classLoader.IClass type,
String fieldName) |
protected com.ibm.wala.ipa.callgraph.propagation.SSAPropagationCallGraphBuilder.InterestingVisitor |
makeInterestingVisitor(com.ibm.wala.ipa.callgraph.CGNode node,
int vn) |
protected com.ibm.wala.ipa.callgraph.propagation.PropagationSystem |
makeSystem(com.ibm.wala.ipa.callgraph.AnalysisOptions options) |
protected com.ibm.wala.analysis.typeInference.TypeInference |
makeTypeInference(com.ibm.wala.ssa.IR ir,
com.ibm.wala.ipa.cha.IClassHierarchy cha) |
JSSSAPropagationCallGraphBuilder.JSConstraintVisitor |
makeVisitor(com.ibm.wala.ipa.callgraph.CGNode node) |
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) |
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) |
protected boolean |
sameMethod(com.ibm.wala.ipa.callgraph.CGNode opNode,
String definingMethod) |
void |
setBaseURL(URL url) |
protected boolean |
useObjectCatalog() |
hasNoInterestingUses, makeDefaultContextInterpretersaddBlockInstructionConstraints, addConstraintsFromNode, addNodeInstructionConstraints, addNodePassthruExceptionConstraints, addNodeValueConstraints, contentsAreInvariant, contentsAreInvariant, getCaughtExceptionTypes, getCFAContextInterpreter, getIncomingPEIs, getInstanceKeyForPEI, getInstanceKeyForPEI, getInvariantContents, getInvariantContents, getTargetPointerKey, getTargetsForCall, getUniqueCatchKey, hasUniqueCatchBlock, iterateCrossProduct, iteratePointerKeys, makeSolver, unconditionallyAddConstraintsFromNodeaddConstraintsFromChangedNode, 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, waitgetInstanceKeyForAllocation, getInstanceKeyForConstant, getInstanceKeyForMetadataObject, getInstanceKeyForMultiNewArraygetFilteredPointerKeyForLocal, getPointerKeyForArrayContents, getPointerKeyForExceptionalReturnValue, getPointerKeyForInstanceField, getPointerKeyForLocal, getPointerKeyForReturnValue, getPointerKeyForStaticFieldpublic static final boolean DEBUG_LEXICAL
public static final boolean DEBUG_TYPE_INFERENCE
public static final String GLOBAL_OBJ_VAR_NAME
protected JSSSAPropagationCallGraphBuilder(com.ibm.wala.ipa.cha.IClassHierarchy cha,
com.ibm.wala.ipa.callgraph.AnalysisOptions options,
com.ibm.wala.ipa.callgraph.IAnalysisCacheView cache,
com.ibm.wala.ipa.callgraph.propagation.PointerKeyFactory pointerKeyFactory)
public com.ibm.wala.cast.ipa.callgraph.GlobalObjectKey getGlobalObject(com.ibm.wala.util.strings.Atom language)
getGlobalObject in class com.ibm.wala.cast.ipa.callgraph.AstSSAPropagationCallGraphBuilderpublic URL getBaseURL()
public void setBaseURL(URL url)
protected boolean isConstantRef(com.ibm.wala.ssa.SymbolTable symbolTable,
int valueNumber)
isConstantRef in class com.ibm.wala.ipa.callgraph.propagation.SSAPropagationCallGraphBuilderprotected boolean useObjectCatalog()
useObjectCatalog in class com.ibm.wala.cast.ipa.callgraph.AstSSAPropagationCallGraphBuilderprotected boolean isUncataloguedField(com.ibm.wala.classLoader.IClass type,
String fieldName)
isUncataloguedField in class com.ibm.wala.cast.ipa.callgraph.AstSSAPropagationCallGraphBuilderprotected com.ibm.wala.ipa.callgraph.propagation.AbstractFieldPointerKey fieldKeyForUnknownWrites(com.ibm.wala.ipa.callgraph.propagation.AbstractFieldPointerKey fieldKey)
fieldKeyForUnknownWrites in class com.ibm.wala.cast.ipa.callgraph.AstSSAPropagationCallGraphBuilderpublic com.ibm.wala.ipa.callgraph.propagation.PointerKey getPointerKeyForGlobalVar(String varName)
protected com.ibm.wala.ipa.callgraph.impl.ExplicitCallGraph createEmptyCallGraph(com.ibm.wala.ipa.cha.IClassHierarchy cha,
com.ibm.wala.ipa.callgraph.AnalysisOptions options)
createEmptyCallGraph in class com.ibm.wala.cast.ipa.callgraph.AstSSAPropagationCallGraphBuilderprotected com.ibm.wala.analysis.typeInference.TypeInference makeTypeInference(com.ibm.wala.ssa.IR ir,
com.ibm.wala.ipa.cha.IClassHierarchy cha)
protected void addAssignmentsForCatchPointerKey(com.ibm.wala.ipa.callgraph.propagation.PointerKey exceptionVar,
Set catchClasses,
com.ibm.wala.ipa.callgraph.propagation.PointerKey e)
addAssignmentsForCatchPointerKey in class com.ibm.wala.ipa.callgraph.propagation.PropagationCallGraphBuilderprotected com.ibm.wala.ipa.callgraph.propagation.SSAPropagationCallGraphBuilder.InterestingVisitor makeInterestingVisitor(com.ibm.wala.ipa.callgraph.CGNode node,
int vn)
makeInterestingVisitor in class com.ibm.wala.cast.ipa.callgraph.AstSSAPropagationCallGraphBuilderprotected com.ibm.wala.ipa.callgraph.propagation.PropagationSystem makeSystem(com.ibm.wala.ipa.callgraph.AnalysisOptions options)
makeSystem in class com.ibm.wala.cast.ipa.callgraph.AstSSAPropagationCallGraphBuilderpublic JSSSAPropagationCallGraphBuilder.JSConstraintVisitor makeVisitor(com.ibm.wala.ipa.callgraph.CGNode node)
makeVisitor in class com.ibm.wala.cast.ipa.callgraph.AstSSAPropagationCallGraphBuilderpublic static com.ibm.wala.cast.tree.CAstSourcePositionMap.Position getSomePositionForMethod(com.ibm.wala.ssa.IR ir,
com.ibm.wala.cast.loader.AstMethod method)
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)
processCallingConstraints in class com.ibm.wala.ipa.callgraph.propagation.SSAPropagationCallGraphBuilderpublic 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)
protected boolean sameMethod(com.ibm.wala.ipa.callgraph.CGNode opNode,
String definingMethod)
sameMethod in class com.ibm.wala.cast.ipa.callgraph.AstSSAPropagationCallGraphBuilderCopyright © 2017. All rights reserved.