public class TypeBasedHeapModel extends java.lang.Object implements HeapModel
Note that this heap model is based on ssa value numbers for locals, since we will build a pointer flow graph based on this heap model when resolving reflection.
This is an inefficient prototype.
| Constructor and Description |
|---|
TypeBasedHeapModel(AnalysisOptions options,
java.util.Collection<IClass> klasses,
CallGraph cg) |
public TypeBasedHeapModel(AnalysisOptions options, java.util.Collection<IClass> klasses, CallGraph cg)
klasses - Collection<IClass>java.lang.IllegalArgumentException - if cg is nullpublic java.util.Iterator<PointerKey> iteratePointerKeys()
iteratePointerKeys in interface HeapModelpublic IClassHierarchy getClassHierarchy()
getClassHierarchy in interface HeapModelpublic InstanceKey getInstanceKeyForAllocation(CGNode node, NewSiteReference allocation) throws com.ibm.wala.util.debug.UnimplementedError
getInstanceKeyForAllocation in interface InstanceKeyFactorycom.ibm.wala.util.debug.UnimplementedErrorpublic InstanceKey getInstanceKeyForMultiNewArray(CGNode node, NewSiteReference allocation, int dim) throws com.ibm.wala.util.debug.UnimplementedError
getInstanceKeyForMultiNewArray in interface InstanceKeyFactorycom.ibm.wala.util.debug.UnimplementedErrorpublic InstanceKey getInstanceKeyForConstant(TypeReference type, java.lang.Object S)
getInstanceKeyForConstant in interface InstanceKeyFactorypublic java.lang.String getStringConstantForInstanceKey()
throws com.ibm.wala.util.debug.UnimplementedError
com.ibm.wala.util.debug.UnimplementedErrorpublic InstanceKey getInstanceKeyForPEI(CGNode node, ProgramCounter instr, TypeReference type) throws com.ibm.wala.util.debug.UnimplementedError
getInstanceKeyForPEI in interface InstanceKeyFactorycom.ibm.wala.util.debug.UnimplementedErrorpublic InstanceKey getInstanceKeyForMetadataObject(java.lang.Object obj, TypeReference objType) throws com.ibm.wala.util.debug.UnimplementedError
getInstanceKeyForMetadataObject in interface InstanceKeyFactoryobjType - TODOcom.ibm.wala.util.debug.UnimplementedErrorpublic FilteredPointerKey getPointerKeyForLocal(CGNode node, int valueNumber)
FilteredPointerKey, since the TypeBasedPointerAnalysis relies on the type filter to compute points to sets.getPointerKeyForLocal in interface PointerKeyFactorypublic FilteredPointerKey getFilteredPointerKeyForLocal(CGNode node, int valueNumber, FilteredPointerKey.TypeFilter filter) throws com.ibm.wala.util.debug.UnimplementedError
getFilteredPointerKeyForLocal in interface PointerKeyFactorycom.ibm.wala.util.debug.UnimplementedErrorpublic PointerKey getPointerKeyForReturnValue(CGNode node)
getPointerKeyForReturnValue in interface PointerKeyFactorypublic PointerKey getPointerKeyForExceptionalReturnValue(CGNode node)
getPointerKeyForExceptionalReturnValue in interface PointerKeyFactorypublic PointerKey getPointerKeyForStaticField(IField f)
getPointerKeyForStaticField in interface PointerKeyFactorypublic PointerKey getPointerKeyForInstanceField(InstanceKey I, IField field)
getPointerKeyForInstanceField in interface PointerKeyFactorypublic PointerKey getPointerKeyForArrayContents(InstanceKey I)
PointerKeyFactorygetPointerKeyForArrayContents in interface PointerKeyFactoryI - an InstanceKey representing an abstract arrayprotected ClassBasedInstanceKeys getIKeyFactory()