public abstract class ScopeMappingInstanceKeys extends Object implements 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 PropagationCallGraphBuilder |
builder |
| Constructor and Description |
|---|
ScopeMappingInstanceKeys(PropagationCallGraphBuilder builder,
InstanceKeyFactory basic) |
| Modifier and Type | Method and Description |
|---|---|
protected abstract Collection<CGNode> |
getConstructorCallers(ScopeMappingInstanceKeys.ScopeMappingInstanceKey smik,
Pair<String,String> name)
get the CGNodes corresponding to the method that invoked the constructor for smik
|
InstanceKey |
getInstanceKeyForAllocation(CGNode creatorNode,
NewSiteReference allocationSite) |
InstanceKey |
getInstanceKeyForConstant(TypeReference type,
Object S) |
InstanceKey |
getInstanceKeyForMetadataObject(Object obj,
TypeReference objType) |
InstanceKey |
getInstanceKeyForMultiNewArray(CGNode node,
NewSiteReference allocation,
int dim) |
InstanceKey |
getInstanceKeyForPEI(CGNode node,
ProgramCounter instr,
TypeReference type) |
protected abstract boolean |
needsScopeMappingKey(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 PropagationCallGraphBuilder builder
public ScopeMappingInstanceKeys(PropagationCallGraphBuilder builder, InstanceKeyFactory basic)
protected abstract boolean needsScopeMappingKey(InstanceKey base)
public InstanceKey getInstanceKeyForAllocation(CGNode creatorNode, NewSiteReference allocationSite)
getInstanceKeyForAllocation in interface InstanceKeyFactoryprotected abstract Collection<CGNode> getConstructorCallers(ScopeMappingInstanceKeys.ScopeMappingInstanceKey smik, Pair<String,String> name)
public InstanceKey getInstanceKeyForMultiNewArray(CGNode node, NewSiteReference allocation, int dim)
getInstanceKeyForMultiNewArray in interface InstanceKeyFactorypublic InstanceKey getInstanceKeyForConstant(TypeReference type, Object S)
getInstanceKeyForConstant in interface InstanceKeyFactorypublic InstanceKey getInstanceKeyForPEI(CGNode node, ProgramCounter instr, TypeReference type)
getInstanceKeyForPEI in interface InstanceKeyFactorypublic InstanceKey getInstanceKeyForMetadataObject(Object obj, TypeReference objType)
getInstanceKeyForMetadataObject in interface InstanceKeyFactoryobjType - TODO