allow subclasses to override behavior for local summary edge insertion

git-svn-id: https://wala.svn.sourceforge.net/svnroot/wala/trunk@3020 f5eafffb-2e1d-0410-98e4-8ec43c5233c4
This commit is contained in:
msridhar1 2008-09-02 21:21:14 +00:00
parent ee8a38506e
commit 06476f982f
1 changed files with 13 additions and 6 deletions

View File

@ -364,12 +364,7 @@ public class TabulationSolver<T, P, F> {
return;
}
final LocalSummaryEdges summaries = findOrCreateLocalSummaryEdges(supergraph.getProcOf(edge.target));
int s_p_n = supergraph.getLocalBlockNumber(edge.entry);
int x = supergraph.getLocalBlockNumber(edge.target);
if (!summaries.contains(s_p_n, x, edge.d1, edge.d2)) {
summaries.insertSummaryEdge(s_p_n, x, edge.d1, edge.d2);
}
insertLocalSummaryEdge(edge);
final CallFlowEdges callFlow = findOrCreateCallFlowEdges(edge.entry);
@ -392,6 +387,18 @@ public class TabulationSolver<T, P, F> {
}
}
/**
* insert a path edge into the {@link LocalSummaryEdges} data structure for the enclosing procedure
*/
protected void insertLocalSummaryEdge(final PathEdge<T> edge) {
final LocalSummaryEdges summaries = findOrCreateLocalSummaryEdges(supergraph.getProcOf(edge.target));
int s_p_n = supergraph.getLocalBlockNumber(edge.entry);
int x = supergraph.getLocalBlockNumber(edge.target);
if (!summaries.contains(s_p_n, x, edge.d1, edge.d2)) {
summaries.insertSummaryEdge(s_p_n, x, edge.d1, edge.d2);
}
}
/**
* Propagate information for an "exit" edge to the appropriate return sites
*