/*
* Copyright (c) 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.parser.j9;
import static org.adoptopenjdk.jitwatch.core.JITWatchConstants.C_DOT;
import static org.adoptopenjdk.jitwatch.core.JITWatchConstants.C_SPACE;
public class J9Util
{
public static J9Line parseLine(String line)
{
J9Line result = new J9Line();
int closeParentheses = line.indexOf(')');
if (closeParentheses != -1)
{
int openParentheses = line.indexOf('(');
if (openParentheses != -1 && openParentheses < closeParentheses)
{
String temperature = line.substring(openParentheses + 1, closeParentheses);
result.setTemperature(temperature);
line = line.substring(closeParentheses + 1).trim();
}
}
String[] parts = line.split(" ");
int pos = 0;
String signature = parts[pos++];
pos++; // @ sign
String range = parts[pos++];
result.setSignature(signature);
result.setRange(range);
for (int i = pos; i < parts.length; i++)
{
if (parts[i].contains("="))
{
String[] kvParts = parts[i].split("=");
if (kvParts.length == 2)
{
result.addAttribute(kvParts[0], kvParts[1]);
}
}
else
{
result.addFeatures(parts[i]);
}
}
return result;
}
public static String convertJ9SigToLogCompilationSignature(String j9Signature)
{
return j9Signature.replace(C_DOT, C_SPACE).replace("(", " (");
}
}