public abstract class ScopeMappingInstanceKeys extends Object implements InstanceKeyFactory
InstanceKeyFactory
that returns ScopeMappingInstanceKeys.ScopeMappingInstanceKey
s
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 CGNode s
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 InstanceKeyFactory
protected abstract Collection<CGNode> getConstructorCallers(ScopeMappingInstanceKeys.ScopeMappingInstanceKey smik, Pair<String,String> name)
public InstanceKey getInstanceKeyForMultiNewArray(CGNode node, NewSiteReference allocation, int dim)
getInstanceKeyForMultiNewArray
in interface InstanceKeyFactory
public InstanceKey getInstanceKeyForConstant(TypeReference type, Object S)
getInstanceKeyForConstant
in interface InstanceKeyFactory
public InstanceKey getInstanceKeyForPEI(CGNode node, ProgramCounter instr, TypeReference type)
getInstanceKeyForPEI
in interface InstanceKeyFactory
public InstanceKey getInstanceKeyForMetadataObject(Object obj, TypeReference objType)
getInstanceKeyForMetadataObject
in interface InstanceKeyFactory
objType
- TODO