/* * 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 java.util.Set; import org.adoptopenjdk.jitwatch.hotthrow.HotThrowFinder; import org.adoptopenjdk.jitwatch.hotthrow.HotThrowResult; import org.adoptopenjdk.jitwatch.model.IMetaMember; import org.adoptopenjdk.jitwatch.model.IReadOnlyJITDataModel; public class HotThrowTopListVisitable extends AbstractTopListVisitable { private final Map<String, Integer> hotThrowMap; public HotThrowTopListVisitable(IReadOnlyJITDataModel model, boolean sortHighToLow) { super(model, sortHighToLow); hotThrowMap = new HashMap<>(); } @Override public void visit(IMetaMember metaMember) { if (metaMember.isCompiled()) { HotThrowFinder finder = new HotThrowFinder(model); Set<HotThrowResult> results = finder.findHotThrows(metaMember); for (HotThrowResult result : results) { String iMapping = result.getMember().toString() + " BCI:" + result.getBci() + " preallocated:" + result.isPreallocated() + " => " + result.getExceptionType(); int count = 0; if (hotThrowMap.containsKey(iMapping)) { count = hotThrowMap.get(iMapping); } hotThrowMap.put(iMapping, count + 1); } } } @Override public void postProcess() { for (Map.Entry<String, Integer> entry : hotThrowMap.entrySet()) { topList.add(new StringTopListScore(entry.getKey(), entry.getValue().longValue())); } } }