/*
* Copyright (c) 2013-2017 Chris Newland.
* Licensed under https://github.com/AdoptOpenJDK/jitwatch/blob/master/LICENSE-BSD
* Instructions: https://github.com/AdoptOpenJDK/jitwatch/wiki
*/
package org.adoptopenjdk.jitwatch.util;
import static org.adoptopenjdk.jitwatch.core.JITWatchConstants.ATTR_BYTES;
import static org.adoptopenjdk.jitwatch.core.JITWatchConstants.ATTR_COUNT;
import static org.adoptopenjdk.jitwatch.core.JITWatchConstants.ATTR_HOLDER;
import static org.adoptopenjdk.jitwatch.core.JITWatchConstants.ATTR_IICOUNT;
import static org.adoptopenjdk.jitwatch.core.JITWatchConstants.ATTR_NAME;
import static org.adoptopenjdk.jitwatch.core.JITWatchConstants.ATTR_PROF_FACTOR;
import static org.adoptopenjdk.jitwatch.core.JITWatchConstants.S_NEWLINE;
import java.util.Map;
import org.adoptopenjdk.jitwatch.model.IParseDictionary;
public final class TooltipUtil
{
private TooltipUtil()
{
}
public static String buildInlineAnnotationText(boolean inlined, String reason, Map<String, String> callAttrs,
Map<String, String> methodAttrs, IParseDictionary parseDictionary)
{
StringBuilder builder = new StringBuilder();
String holder = methodAttrs.get(ATTR_HOLDER);
String methodName = methodAttrs.get(ATTR_NAME);
builder.append("Class: ").append(ParseUtil.lookupType(holder, parseDictionary)).append(S_NEWLINE);
builder.append("Method: ").append(StringUtil.replaceXMLEntities(methodName)).append(S_NEWLINE);
builder.append("Inlined: ");
if (inlined)
{
builder.append("Yes, ");
}
else
{
builder.append("No, ");
}
builder.append(reason);
if (callAttrs.containsKey(ATTR_COUNT))
{
builder.append("\nCount: ").append(callAttrs.get(ATTR_COUNT));
}
if (methodAttrs.containsKey(ATTR_IICOUNT))
{
builder.append("\niicount: ").append(methodAttrs.get(ATTR_IICOUNT));
}
if (methodAttrs.containsKey(ATTR_BYTES))
{
builder.append("\nBytes: ").append(methodAttrs.get(ATTR_BYTES));
}
if (callAttrs.containsKey(ATTR_PROF_FACTOR))
{
builder.append("\nProf factor: ").append(callAttrs.get(ATTR_PROF_FACTOR));
}
return builder.toString();
}
}