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:
parent
ee8a38506e
commit
06476f982f
|
@ -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
|
||||
*
|
||||
|
|
Loading…
Reference in New Issue