/* * Copyright (c) 2013-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.jarscan.allocationcount; import java.util.EnumMap; import java.util.Map; import org.adoptopenjdk.jitwatch.model.bytecode.Opcode; public class InstructionAllocCountMap { private Map<Opcode, AllocCountMap> opcodeMap = new EnumMap<>(Opcode.class); public void count(Opcode opcode, String allocatedType) { AllocCountMap typeCountMap = opcodeMap.get(opcode); if (typeCountMap == null) { typeCountMap = new AllocCountMap(); opcodeMap.put(opcode, typeCountMap); } typeCountMap.countAllocationOfType(allocatedType); } public String toString(int limitPerInvoke) { StringBuilder builder = new StringBuilder(); for (Map.Entry<Opcode, AllocCountMap> entry : opcodeMap.entrySet()) { Opcode opcode = entry.getKey(); AllocCountMap typeCountMap = entry.getValue(); builder.append(typeCountMap.toString(opcode, limitPerInvoke)); } return builder.toString(); } }