From 257cb0d5d5a0d31d71a6d63bf89f1f8c92202781 Mon Sep 17 00:00:00 2001 From: sjfink Date: Sun, 29 Jun 2008 22:51:39 +0000 Subject: [PATCH] more work generalizing work list git-svn-id: https://wala.svn.sourceforge.net/svnroot/wala/trunk@2930 f5eafffb-2e1d-0410-98e4-8ec43c5233c4 --- .../com/ibm/wala/dataflow/IFDS/TabulationSolver.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/com.ibm.wala.core/src/com/ibm/wala/dataflow/IFDS/TabulationSolver.java b/com.ibm.wala.core/src/com/ibm/wala/dataflow/IFDS/TabulationSolver.java index 2b751b7da..65cce3cae 100644 --- a/com.ibm.wala.core/src/com/ibm/wala/dataflow/IFDS/TabulationSolver.java +++ b/com.ibm.wala.core/src/com/ibm/wala/dataflow/IFDS/TabulationSolver.java @@ -142,7 +142,7 @@ public class TabulationSolver { /** * The worklist */ - final private ITabulationWorklist worklist = makeWorklist(); + private ITabulationWorklist worklist; /** * A progress monitor. can be null. @@ -224,6 +224,9 @@ public class TabulationSolver { * @throws CancelException */ private void forwardTabulateSLRPs() throws CancelException { + if (worklist == null) { + worklist = makeWorklist(); + } while (worklist.size() > 0) { MonitorUtil.throwExceptionIfCanceled(progressMonitor); if (verbose) { @@ -752,11 +755,13 @@ public class TabulationSolver { } protected PathEdge popFromWorkList() { + assert worklist != null; return worklist.take(); } private PathEdge peekFromWorkList() { // horrible. don't use in performance-critical + assert worklist != null; PathEdge result = worklist.take(); worklist.insert(result); return result; @@ -835,6 +840,9 @@ public class TabulationSolver { } protected void addToWorkList(T s_p, int i, T n, int j) { + if (worklist == null) { + worklist = makeWorklist(); + } worklist.insert(PathEdge.createPathEdge(s_p, i, n, j)); if (DEBUG_LEVEL >= 3) { System.err.println("WORKLIST: " + worklist);