public abstract class ScopeMappingInstanceKeys
extends java.lang.Object
implements com.ibm.wala.ipa.callgraph.propagation.InstanceKeyFactory
InstanceKeyFactory that returns ScopeMappingInstanceKeys.ScopeMappingInstanceKeys as necessary to
handle interprocedural lexical scoping (specifically, to handle closure creation when a function
escapes its allocating scope)| Modifier and Type | Class and Description |
|---|---|
class |
ScopeMappingInstanceKeys.ScopeMappingInstanceKey
An
InstanceKey carrying information about which CGNodes represent lexical
parents of the allocating CGNode. |
| Modifier and Type | Field and Description |
|---|---|
protected com.ibm.wala.ipa.callgraph.propagation.PropagationCallGraphBuilder |
builder |
| Constructor and Description |
|---|
ScopeMappingInstanceKeys(com.ibm.wala.ipa.callgraph.propagation.PropagationCallGraphBuilder builder,
com.ibm.wala.ipa.callgraph.propagation.InstanceKeyFactory basic) |
| Modifier and Type | Method and Description |
|---|---|
protected abstract java.util.Collection<com.ibm.wala.ipa.callgraph.CGNode> |
getConstructorCallers(ScopeMappingInstanceKeys.ScopeMappingInstanceKey smik,
com.ibm.wala.util.collections.Pair<java.lang.String,java.lang.String> name)
get the CGNodes corresponding to the method that invoked the constructor for smik
|
com.ibm.wala.ipa.callgraph.propagation.InstanceKey |
getInstanceKeyForAllocation(com.ibm.wala.ipa.callgraph.CGNode creatorNode,
com.ibm.wala.classLoader.NewSiteReference allocationSite) |
com.ibm.wala.ipa.callgraph.propagation.InstanceKey |
getInstanceKeyForConstant(com.ibm.wala.types.TypeReference type,
java.lang.Object S) |
com.ibm.wala.ipa.callgraph.propagation.InstanceKey |
getInstanceKeyForMetadataObject(java.lang.Object obj,
com.ibm.wala.types.TypeReference objType) |
com.ibm.wala.ipa.callgraph.propagation.InstanceKey |
getInstanceKeyForMultiNewArray(com.ibm.wala.ipa.callgraph.CGNode node,
com.ibm.wala.classLoader.NewSiteReference allocation,
int dim) |
com.ibm.wala.ipa.callgraph.propagation.InstanceKey |
getInstanceKeyForPEI(com.ibm.wala.ipa.callgraph.CGNode node,
com.ibm.wala.classLoader.ProgramCounter instr,
com.ibm.wala.types.TypeReference type) |
protected abstract boolean |
needsScopeMappingKey(com.ibm.wala.ipa.callgraph.propagation.InstanceKey base)
does base require a scope mapping key? Typically, true if base is allocated in a nested lexical
scope, to handle the case of base being a function that performs closure accesses
|
protected final com.ibm.wala.ipa.callgraph.propagation.PropagationCallGraphBuilder builder
public ScopeMappingInstanceKeys(com.ibm.wala.ipa.callgraph.propagation.PropagationCallGraphBuilder builder,
com.ibm.wala.ipa.callgraph.propagation.InstanceKeyFactory basic)
protected abstract boolean needsScopeMappingKey(com.ibm.wala.ipa.callgraph.propagation.InstanceKey base)
public com.ibm.wala.ipa.callgraph.propagation.InstanceKey getInstanceKeyForAllocation(com.ibm.wala.ipa.callgraph.CGNode creatorNode,
com.ibm.wala.classLoader.NewSiteReference allocationSite)
getInstanceKeyForAllocation in interface com.ibm.wala.ipa.callgraph.propagation.InstanceKeyFactoryprotected abstract java.util.Collection<com.ibm.wala.ipa.callgraph.CGNode> getConstructorCallers(ScopeMappingInstanceKeys.ScopeMappingInstanceKey smik, com.ibm.wala.util.collections.Pair<java.lang.String,java.lang.String> name)
public com.ibm.wala.ipa.callgraph.propagation.InstanceKey getInstanceKeyForMultiNewArray(com.ibm.wala.ipa.callgraph.CGNode node,
com.ibm.wala.classLoader.NewSiteReference allocation,
int dim)
getInstanceKeyForMultiNewArray in interface com.ibm.wala.ipa.callgraph.propagation.InstanceKeyFactorypublic com.ibm.wala.ipa.callgraph.propagation.InstanceKey getInstanceKeyForConstant(com.ibm.wala.types.TypeReference type,
java.lang.Object S)
getInstanceKeyForConstant in interface com.ibm.wala.ipa.callgraph.propagation.InstanceKeyFactorypublic com.ibm.wala.ipa.callgraph.propagation.InstanceKey getInstanceKeyForPEI(com.ibm.wala.ipa.callgraph.CGNode node,
com.ibm.wala.classLoader.ProgramCounter instr,
com.ibm.wala.types.TypeReference type)
getInstanceKeyForPEI in interface com.ibm.wala.ipa.callgraph.propagation.InstanceKeyFactorypublic com.ibm.wala.ipa.callgraph.propagation.InstanceKey getInstanceKeyForMetadataObject(java.lang.Object obj,
com.ibm.wala.types.TypeReference objType)
getInstanceKeyForMetadataObject in interface com.ibm.wala.ipa.callgraph.propagation.InstanceKeyFactory