|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object soot.FastHierarchy
public class FastHierarchy
Represents the class hierarchy. It is closely linked to a Scene, and must be recreated if the Scene changes. This version supercedes the old soot.Hierarchy class.
Nested Class Summary | |
---|---|
protected class |
FastHierarchy.Interval
|
Field Summary | |
---|---|
protected Map<SootClass,FastHierarchy.Interval> |
classToInterval
For each class (NOT interface), this map contains a Interval, which is a pair of numbers giving a preorder and postorder ordering of classes in the inheritance tree. |
protected Map<Object,List> |
classToSubclasses
This map holds all key,value pairs such that value.getSuperclass() == key. |
protected MultiMap |
interfaceToAllImplementers
This map gives, for an interface, all concrete classes that implement that interface and all its subinterfaces, but NOT their subclasses. |
protected MultiMap |
interfaceToAllSubinterfaces
This map is a transitive closure of interfaceToSubinterfaces, and each set contains its superinterface itself. |
protected MultiMap |
interfaceToImplementers
This map holds all key,value pairs such that value is a class (NOT an interface) and key is in value.getInterfaces(). |
protected MultiMap |
interfaceToSubinterfaces
This map holds all key,value pairs such that value is an interface and key is in value.getInterfaces(). |
protected Scene |
sc
These maps cache subtype queries, so they can be re-done quickly. |
Constructor Summary | |
---|---|
FastHierarchy()
Constructs a hierarchy from the current scene. |
Method Summary | |
---|---|
protected boolean |
canStoreClass(SootClass child,
SootClass parent)
Given an object of declared type child, returns true if the object can be stored in a variable of type parent. |
boolean |
canStoreType(Type child,
Type parent)
Given an object of declared type child, returns true if the object can be stored in a variable of type parent. |
protected int |
dfsVisit(int start,
SootClass c)
|
Set |
getAllImplementersOfInterface(SootClass parent)
For an interface parent (MUST be an interface), returns set of all implementers of it but NOT their subclasses. |
protected Set |
getAllSubinterfaces(SootClass parent)
For an interface parent (MUST be an interface), returns set of all subinterfaces. |
Collection |
getSubclassesOf(SootClass c)
|
boolean |
isSubclass(SootClass child,
SootClass parent)
Return true if class child is a subclass of class parent, neither of them being allowed to be interfaces. |
Set<SootMethod> |
resolveAbstractDispatch(SootClass abstractType,
SootMethod m)
Given an object of declared type C, returns the methods which could be called on an o.f() invocation. |
Collection<SootMethod> |
resolveConcreteDispatch(Collection concreteTypes,
SootMethod m,
RefType declaredTypeOfBase)
|
SootMethod |
resolveConcreteDispatch(SootClass concreteType,
SootMethod m)
Given an object of actual type C (o = new C()), returns the method which will be called on an o.f() invocation. |
Collection<SootMethod> |
resolveConcreteDispatchWithoutFailing(Collection concreteTypes,
SootMethod m,
RefType declaredTypeOfBase)
|
SootMethod |
resolveSpecialDispatch(SpecialInvokeExpr ie,
SootMethod container)
Returns the target for the given SpecialInvokeExpr. |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
protected Map<Object,List> classToSubclasses
protected MultiMap interfaceToSubinterfaces
protected MultiMap interfaceToImplementers
protected MultiMap interfaceToAllSubinterfaces
protected MultiMap interfaceToAllImplementers
protected Map<SootClass,FastHierarchy.Interval> classToInterval
protected Scene sc
Constructor Detail |
---|
public FastHierarchy()
Method Detail |
---|
protected int dfsVisit(int start, SootClass c)
public boolean isSubclass(SootClass child, SootClass parent)
public Set getAllImplementersOfInterface(SootClass parent)
protected Set getAllSubinterfaces(SootClass parent)
public boolean canStoreType(Type child, Type parent)
protected boolean canStoreClass(SootClass child, SootClass parent)
public Collection<SootMethod> resolveConcreteDispatchWithoutFailing(Collection concreteTypes, SootMethod m, RefType declaredTypeOfBase)
public Collection<SootMethod> resolveConcreteDispatch(Collection concreteTypes, SootMethod m, RefType declaredTypeOfBase)
public Set<SootMethod> resolveAbstractDispatch(SootClass abstractType, SootMethod m)
public SootMethod resolveConcreteDispatch(SootClass concreteType, SootMethod m)
public SootMethod resolveSpecialDispatch(SpecialInvokeExpr ie, SootMethod container)
public Collection getSubclassesOf(SootClass c)
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |