/* * Copyright (c) 2016 Chris Newland. * Licensed under https://github.com/AdoptOpenJDK/jitwatch/blob/master/LICENSE-BSD * Instructions: https://github.com/AdoptOpenJDK/jitwatch/wiki */ package org.adoptopenjdk.jitwatch.toplist; import java.util.HashMap; import java.util.Map; import org.adoptopenjdk.jitwatch.compilation.CompilationUtil; import org.adoptopenjdk.jitwatch.model.Compilation; import org.adoptopenjdk.jitwatch.model.IMetaMember; import org.adoptopenjdk.jitwatch.model.IReadOnlyJITDataModel; import org.adoptopenjdk.jitwatch.model.Task; public class StaleTaskToplistVisitable extends AbstractTopListVisitable { private final Map<IMetaMember, Integer> staleCompilationCountMap; public StaleTaskToplistVisitable(IReadOnlyJITDataModel model, boolean sortHighToLow) { super(model, sortHighToLow); staleCompilationCountMap = new HashMap<>(); } @Override public void visit(IMetaMember metaMember) { if (metaMember != null && metaMember.isCompiled()) { for (Compilation compilation : metaMember.getCompilations()) { Task taskTag = compilation.getTagTask(); if (taskTag != null && CompilationUtil.isStaleTask(taskTag)) { if (staleCompilationCountMap.containsKey(metaMember)) { int count = staleCompilationCountMap.get(metaMember); staleCompilationCountMap.put(metaMember, count + 1); } else { staleCompilationCountMap.put(metaMember, 1); } } } } } @Override public void postProcess() { for (Map.Entry<IMetaMember, Integer> entry : staleCompilationCountMap.entrySet()) { topList.add(new MemberScore(entry.getKey(), entry.getValue().longValue())); } } }