From 11ff511d61bb748f994b4204735ff62414946e59 Mon Sep 17 00:00:00 2001 From: Manu Sridharan Date: Wed, 24 May 2017 14:38:30 -0700 Subject: [PATCH] Add API for passing an IProgressMonitor into the slicer --- .../src/com/ibm/wala/ipa/slicer/Slicer.java | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/com.ibm.wala.core/src/com/ibm/wala/ipa/slicer/Slicer.java b/com.ibm.wala.core/src/com/ibm/wala/ipa/slicer/Slicer.java index eaa5e87f3..706a14256 100644 --- a/com.ibm.wala.core/src/com/ibm/wala/ipa/slicer/Slicer.java +++ b/com.ibm.wala.core/src/com/ibm/wala/ipa/slicer/Slicer.java @@ -28,6 +28,7 @@ import com.ibm.wala.ipa.callgraph.propagation.InstanceKey; import com.ibm.wala.ipa.callgraph.propagation.PointerAnalysis; import com.ibm.wala.ipa.modref.ModRef; import com.ibm.wala.util.CancelException; +import com.ibm.wala.util.MonitorUtil.IProgressMonitor; import com.ibm.wala.util.collections.HashSetFactory; /** @@ -195,6 +196,21 @@ public class Slicer { * @throws CancelException */ public Collection slice(SDG sdg, Collection roots, boolean backward) throws CancelException { + return slice(sdg, roots, backward, null); + } + + /** + * Main driver logic. + * + * @param sdg governing system dependence graph + * @param roots set of roots to slice from + * @param backward do a backwards slice? + * @param monitor to cancel analysis if needed + * @return the {@link Statement}s found by the slicer + * @throws CancelException + */ + public Collection slice(SDG sdg, Collection roots, boolean backward, IProgressMonitor monitor) + throws CancelException { if (sdg == null) { throw new IllegalArgumentException("sdg cannot be null"); } @@ -202,7 +218,7 @@ public class Slicer { SliceProblem p = makeSliceProblem(roots, sdg, backward); PartiallyBalancedTabulationSolver, Object> solver = PartiallyBalancedTabulationSolver - .createPartiallyBalancedTabulationSolver(p, null); + .createPartiallyBalancedTabulationSolver(p, monitor); TabulationResult, Object> tr = solver.solve(); Collection slice = tr.getSupergraphNodesReached();