From d21209962bb402078b01481db075eec3411c320d Mon Sep 17 00:00:00 2001 From: =?utf8?q?Genevi=C3=A8ve=20Bastien?= Date: Fri, 13 May 2016 14:52:44 -0400 Subject: [PATCH] critical path: Clean up link list of content provider MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit The link cache was not used because it was written to one map, but read from another. So links were computed every time Change-Id: Id3533034be15e1e974160338d9d5e56bda84992e Signed-off-by: Geneviève Bastien Reviewed-on: https://git.eclipse.org/r/72761 Reviewed-by: Hudson CI Reviewed-by: Matthew Khouzam Tested-by: Matthew Khouzam --- .../criticalpath/view/CriticalPathView.java | 23 +++++++++++-------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/analysis/org.eclipse.tracecompass.analysis.graph.ui/src/org/eclipse/tracecompass/internal/analysis/graph/ui/criticalpath/view/CriticalPathView.java b/analysis/org.eclipse.tracecompass.analysis.graph.ui/src/org/eclipse/tracecompass/internal/analysis/graph/ui/criticalpath/view/CriticalPathView.java index dd649a5f10..ce4cff904a 100644 --- a/analysis/org.eclipse.tracecompass.analysis.graph.ui/src/org/eclipse/tracecompass/internal/analysis/graph/ui/criticalpath/view/CriticalPathView.java +++ b/analysis/org.eclipse.tracecompass.analysis.graph.ui/src/org/eclipse/tracecompass/internal/analysis/graph/ui/criticalpath/view/CriticalPathView.java @@ -235,7 +235,6 @@ public class CriticalPathView extends AbstractTimeGraphView { private final Lock fSyncLock = new ReentrantLock(); private final Map> workerMaps = new HashMap<>(); private final Map> workerEntries = new HashMap<>(); - private final Map> linkMap = new HashMap<>(); private @Nullable Object fCurrentObject; private @Nullable BuildThread fBuildThread = null; @@ -336,18 +335,19 @@ public class CriticalPathView extends AbstractTimeGraphView { if (current == null) { return null; } + final ITmfTrace trace = getTrace(); + if (trace == null) { + return null; + } /* * Critical path typically has relatively few links, so we calculate * and save them all, but just return those in range */ - List links = linkMap.get(current); + List links = fLinks.get(trace, current); if (links != null) { - return links; - } - final ITmfTrace trace = getTrace(); - if (trace == null) { - return null; + return getLinksInRange(links, startTime, endTime); } + CriticalPathModule module = Iterables.<@Nullable CriticalPathModule> getFirst( TmfTraceUtils.getAnalysisModulesOfClass(trace, CriticalPathModule.class), null); if (module == null) { @@ -369,11 +369,14 @@ public class CriticalPathView extends AbstractTimeGraphView { /* find vertical links */ graph.scanLineTraverse(vertex, new VerticalLinksVisitor(graph, graphLinks, entryMap)); - fLinks.put(trace, checkNotNull(fCurrentObject), graphLinks); - links = graphLinks; + fLinks.put(trace, current, graphLinks); + + return getLinksInRange(graphLinks, startTime, endTime); + } + private List getLinksInRange(List allLinks, long startTime, long endTime) { List linksInRange = new ArrayList<>(); - for (ILinkEvent link : links) { + for (ILinkEvent link : allLinks) { if (((link.getTime() >= startTime) && (link.getTime() <= endTime)) || ((link.getTime() + link.getDuration() >= startTime) && (link.getTime() + link.getDuration() <= endTime))) { linksInRange.add(link); -- 2.34.1