public class ObservableDynamicICFG extends Object implements ObservableICFG<Statement,Method>
CalleeListener and CallerListener. Used for demand-driven call graph generation.
Starts with an graph only containing intraprocedual edges and uses a precomputed call graph to derive callers.
| Constructor and Description |
|---|
ObservableDynamicICFG(ObservableControlFlowGraph cfg,
ICallerCalleeResolutionStrategy resolutionStrategy) |
| Modifier and Type | Method and Description |
|---|---|
void |
addCalleeListener(CalleeListener<Statement,Method> listener)
Registers a listener that will be notified whenever a callee is added
|
void |
addCallerListener(CallerListener<Statement,Method> listener)
Registers a listener that will be notified whenever a caller is added.
|
protected boolean |
addCallIfNotInGraph(Statement caller,
Method callee)
Returns true if the call was added to the call graph, false if it was already present and the
call graph did not change
|
void |
addEdges(CallGraph.Edge e) |
void |
computeFallback() |
Collection<Statement> |
getEndPointsOf(Method m) |
int |
getNumberOfEdgesTakenFromPrecomputedGraph() |
Collection<Statement> |
getStartPointsOf(Method m) |
boolean |
isCallStmt(Statement unit)
Returns
true if the given statement is a call site. |
boolean |
isExitStmt(Statement unit)
Returns
true if the given statement leads to a method return (exceptional or not). |
boolean |
isStartPoint(Statement unit)
Returns true is this is a method's start statement.
|
protected void |
notifyNoCalleeFound(Statement s) |
void |
resetCallGraph()
Resets the call graph.
|
public ObservableDynamicICFG(ObservableControlFlowGraph cfg, ICallerCalleeResolutionStrategy resolutionStrategy)
public void addCalleeListener(CalleeListener<Statement,Method> listener)
ObservableICFGaddCalleeListener in interface ObservableICFG<Statement,Method>public void addCallerListener(CallerListener<Statement,Method> listener)
ObservableICFGaddCallerListener in interface ObservableICFG<Statement,Method>protected boolean addCallIfNotInGraph(Statement caller, Method callee)
protected void notifyNoCalleeFound(Statement s)
public boolean isCallStmt(Statement unit)
ObservableICFGtrue if the given statement is a call site.isCallStmt in interface ObservableICFG<Statement,Method>public boolean isExitStmt(Statement unit)
ObservableICFGtrue if the given statement leads to a method return (exceptional or not).
For backward analyses may also be start statements.isExitStmt in interface ObservableICFG<Statement,Method>public boolean isStartPoint(Statement unit)
ObservableICFGisStartPoint in interface ObservableICFG<Statement,Method>public Collection<Statement> getStartPointsOf(Method m)
getStartPointsOf in interface ObservableICFG<Statement,Method>public Collection<Statement> getEndPointsOf(Method m)
getEndPointsOf in interface ObservableICFG<Statement,Method>public int getNumberOfEdgesTakenFromPrecomputedGraph()
getNumberOfEdgesTakenFromPrecomputedGraph in interface ObservableICFG<Statement,Method>public void resetCallGraph()
ObservableICFGresetCallGraph in interface ObservableICFG<Statement,Method>public void computeFallback()
computeFallback in interface ObservableICFG<Statement,Method>public void addEdges(CallGraph.Edge e)
addEdges in interface ObservableICFG<Statement,Method>Copyright © 2024. All rights reserved.