/*
* 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.core;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashSet;
import java.util.Set;
import java.util.regex.Pattern;
public final class JITWatchConstants
{
private JITWatchConstants()
{
}
// Enable debugging for specific functionality
// DEBUG level logging requires editing src/main/resources/logback.xml
public static final boolean DEBUG_LOGGING = false;
public static final boolean DEBUG_LOGGING_BYTECODE = false;
public static final boolean DEBUG_LOGGING_CLASSPATH = false;
public static final boolean DEBUG_LOGGING_ASSEMBLY = false;
public static final boolean DEBUG_LOGGING_SIG_MATCH = false;
public static final boolean DEBUG_LOGGING_METHOD_ID_MATCH = false;
public static final boolean DEBUG_LOGGING_OVC = false;
public static final boolean DEBUG_LOGGING_PARSE_DICTIONARY = false;
public static final boolean DEBUG_LOGGING_TRIVIEW = false;
public static final boolean DEBUG_LOGGING_TAGPROCESSOR = false;
public static final char HEADLESS_SEPARATOR = '|';
public static final boolean DEBUG_MEMBER_CREATION = false;
public static final int DEFAULT_FREQ_INLINE_SIZE = 35;
public static final int DEFAULT_MAX_INLINE_SIZE = 325;
public static final int DEFAULT_COMPILER_THRESHOLD = 10000;
public static final String TAG_XML = "<?xml";
public static final String TAG_TTY = "<tty>";
public static final String TAG_TTY_CLOSE = "</tty>";
public static final String TAG_COMPILATION_LOG = "<compilation_log";
public static final String TAG_COMPILATION_LOG_CLOSE = "</compilation_log>";
public static final String TAG_HOTSPOT_LOG = "<hotspot_log ";
public static final String TAG_HOTSPOT_LOG_CLOSE = "</hotspot_log>";
public static final String S_FRAGMENT = "fragment";
public static final String TAG_OPEN_FRAGMENT = "<fragment>";
public static final String TAG_CLOSE_FRAGMENT = "</fragment>";
public static final String TAG_OPEN_CDATA = "<![CDATA[";
public static final String TAG_CLOSE_CDATA = "]]>";
public static final String TAG_OPEN_CLOSE_CDATA = TAG_CLOSE_CDATA + TAG_OPEN_CDATA;
public static final Set<String> SKIP_HEADER_TAGS = new HashSet<>(Arrays.asList(new String[] { TAG_XML, TAG_HOTSPOT_LOG }));
public static final Set<String> SKIP_BODY_TAGS = new HashSet<>(Arrays.asList(new String[] { TAG_TTY_CLOSE, TAG_COMPILATION_LOG,
TAG_COMPILATION_LOG_CLOSE, TAG_HOTSPOT_LOG_CLOSE }));
public static final String NATIVE_CODE_START = "Decoding compiled method";
public static final String NATIVE_CODE_ENTRY_POINT = "[Entry Point]";
public static final String NATIVE_CODE_METHOD_MARK = "# {method}";
public static final String LOADED = "[Loaded ";
public static final String METHOD = "method";
public static final String S_PARSE = "parse";
public static final String S_TYPE = "type";
public static final String S_PARSE_HIR = "parse_hir";
public static final String S_CODE_COLON = "Code:";
public static final String S_ASSEMBLY_CONSTANTS = "[Constants]";
public static final String DEFAULT_PACKAGE_NAME = "(default package)";
public static final String TREE_PACKAGE_ROOT = "Packages";
public static final String TAG_VM_VERSION = "vm_version";
public static final String TAG_RELEASE = "release";
public static final String TAG_SWEEPER = "sweeper";
public static final String TAG_CODE_CACHE_FULL = "code_cache_full";
public static final String TAG_HOTSPOT_LOG_DONE = "hotspot_log_done";
public static final String TAG_TASK_QUEUED = "task_queued";
public static final String TAG_NMETHOD = "nmethod";
public static final String TAG_TASK = "task";
public static final String TAG_BC = "bc";
public static final String TAG_CALL = "call";
public static final String TAG_CODE_CACHE = "code_cache";
public static final String TAG_TASK_DONE = "task_done";
public static final String TAG_START_COMPILE_THREAD = "start_compile_thread";
public static final String TAG_PARSE = S_PARSE;
public static final String TAG_PHASE = "phase";
public static final String TAG_KLASS = "klass";
public static final String TAG_TYPE = S_TYPE;
public static final String TAG_METHOD = METHOD;
public static final String TAG_INTRINSIC = "intrinsic";
public static final String TAG_INLINE_FAIL = "inline_fail";
public static final String TAG_INLINE_SUCCESS = "inline_success";
public static final String TAG_BRANCH = "branch";
public static final String TAG_WRITER = "writer";
public static final String TAG_VM_ARGUMENTS = "vm_arguments";
public static final String TAG_ELIMINATE_ALLOCATION = "eliminate_allocation";
public static final String TAG_ELIMINATE_LOCK = "eliminate_lock";
public static final String TAG_JVMS = "jvms";
public static final String TAG_UNCOMMON_TRAP = "uncommon_trap";
public static final String TAG_PARSE_DONE = "parse_done";
public static final String TAG_PHASE_DONE = "phase_done";
public static final String TAG_HOT_THROW = "hot_throw";
public static final String TAG_CAST_UP = "cast_up";
public static final String TAG_INLINE_LEVEL_DISCOUNT = "inline_level_discount";
public static final String TAG_COMMENT= "comment";
public static final String TAG_PREDICTED_CALL = "predicted_call";
public static final String TAG_DIRECT_CALL = "direct_call";
public static final String TAG_VIRTUAL_CALL = "virtual_call";
public static final String TAG_DEPENDENCY = "dependency";
public static final String TAG_OBSERVE = "observe";
public static final String TAG_ASSERT_NULL = "assert_null";
public static final String TAG_FAILURE = "failure";
public static final String TAG_LATE_INLINE = "late_inline";
public static final String TAG_COMMAND = "command";
public static final String OSR = "osr";
public static final String C2N = "c2n";
public static final String C1 = "C1";
public static final String C2 = "C2";
public static final String J9 = "J9";
public static final String ATTR_METHOD = METHOD;
public static final String ATTR_KLASS = "klass";
public static final String ATTR_COMPILE_ID = "compile_id";
public static final String ATTR_COMPILE_KIND = "compile_kind";
public static final String ATTR_STAMP = "stamp";
public static final String ATTR_STAMP_COMPLETED = "stamp_completed";
public static final String ATTR_NAME = "name";
public static final String ATTR_BCI = "bci";
public static final String ATTR_CODE = "code";
public static final String ATTR_COMPILER = "compiler";
public static final String ATTR_LEVEL = "level";
public static final String ATTR_FREE_CODE_CACHE = "free_code_cache";
public static final String ATTR_SIZE = "size";
public static final String ATTR_NMSIZE = "nmsize";
public static final String ATTR_BYTES = "bytes";
public static final String ATTR_IICOUNT = "iicount";
public static final String ATTR_DECOMPILES = "decompiles";
public static final String ATTR_PARSE = S_PARSE;
public static final String ATTR_TYPE = S_TYPE;
public static final String ATTR_BUILDIR = "buildIR";
public static final String ATTR_ID = "id";
public static final String ATTR_HOLDER = "holder";
public static final String ATTR_RETURN = "return";
public static final String ATTR_REASON = "reason";
public static final String ATTR_ARGUMENTS = "arguments";
public static final String ATTR_BRANCH_COUNT = "cnt";
public static final String ATTR_BRANCH_TAKEN = "taken";
public static final String ATTR_BRANCH_NOT_TAKEN = "not_taken";
public static final String ATTR_BRANCH_PROB = "prob";
public static final String ATTR_UNLOADED = "unloaded";
public static final String ATTR_COUNT = "count";
public static final String ATTR_PROF_FACTOR = "prof_factor";
public static final String ATTR_ACTION = "action";
public static final String ATTR_COMMENT = "comment";
public static final String ATTR_ADDRESS = "address";
public static final String ATTR_PREALLOCATED = "preallocated";
public static final String ATTR_KIND = "kind";
public static final String BRANCH_TAKEN_ALWAYS = "always";
public static final String BRANCH_TAKEN_NEVER = "never";
public static final String BRANCH_TAKEN_MIN = "min";
public static final String BRANCH_TAKEN_MAX = "max";
public static final String S_ENTITY_APOS = "'";
public static final String S_ENTITY_LT = "<";
public static final String S_ENTITY_GT = ">";
public static final String S_PACKAGE = "package";
public static final String S_CLASS = "class";
public static final String S_PROFILE_DEFAULT = "Default";
public static final String S_PROFILE_SANDBOX = "Sandbox";
public static final String S_CLASS_PREFIX_INVOKE = "java.lang.invoke.";
public static final String S_CLASS_PREFIX_COM_SUN_PROXY = "com.sun.proxy.$Proxy";
public static final String S_CLASS_PREFIX_STREAM_COLLECTORS = "java.util.stream.Collectors$";
public static final String S_CLASS_PREFIX_SUN_REFLECT_GENERATED = "sun.reflect.Generated";
private static final Set<String> SET_AUTOGENERATED_PREFIXES = new HashSet<>();
static
{
SET_AUTOGENERATED_PREFIXES.add(S_CLASS_PREFIX_INVOKE);
SET_AUTOGENERATED_PREFIXES.add(S_CLASS_PREFIX_STREAM_COLLECTORS);
SET_AUTOGENERATED_PREFIXES.add(S_CLASS_PREFIX_SUN_REFLECT_GENERATED);
SET_AUTOGENERATED_PREFIXES.add(S_CLASS_PREFIX_COM_SUN_PROXY);
}
public static final Set<String> getAutoGeneratedClassPrefixes()
{
return Collections.unmodifiableSet(SET_AUTOGENERATED_PREFIXES);
}
public static final String S_CLASS_AUTOGENERATED_LAMBDA = "$$Lambda";
public static final String REGEX_GROUP_ANY = "(.*)";
public static final String REGEX_ZERO_OR_MORE_SPACES = "( )*";
public static final String REGEX_ONE_OR_MORE_SPACES = "( )+";
public static final String REGEX_UNICODE_PARAM_NAME = "([0-9\\p{L}_]+)";
public static final String REGEX_UNICODE_PACKAGE_NAME = "([0-9\\p{L}_\\.]*)";
public static final String S_OPEN_PARENTHESES = "(";
public static final String S_CLOSE_PARENTHESES = ")";
public static final String S_ESCAPED_OPEN_PARENTHESES = "\\(";
public static final String S_ESCAPED_CLOSE_PARENTHESES = "\\)";
public static final String S_OPEN_ANGLE = "<";
public static final String S_CLOSE_ANGLE = ">";
public static final String S_OPEN_SQUARE_BRACKET = "[";
public static final String S_CLOSE_SQUARE_BRACKET = "]";
public static final String S_ARRAY_BRACKET_PAIR = "[]";
public static final String S_ESCAPED_OPEN_SQUARE = "\\[";
public static final String S_ESCAPED_CLOSE_SQUARE = "\\]";
public static final String S_ESCAPED_DOT = "\\.";
public static final String S_OPEN_BRACE = "{";
public static final String S_CLOSE_BRACE = "}";
public static final String S_AT = "@";
public static final String S_PERCENT = "%";
public static final String S_DOLLAR = "$";
public static final String S_HASH = "#";
public static final String S_SPACE = " ";
public static final String S_NEWLINE = "\n";
public static final String S_NEWLINE_CR = "\r";
public static final String S_TAB = "\t";
public static final String S_DOUBLE_SPACE = " ";
public static final String S_EMPTY = "";
public static final String S_COLON = ":";
public static final String S_SEMICOLON = ";";
public static final String S_VARARGS_DOTS = "...";
public static final String S_APOSTROPHE = "'";
public static final String S_OBJECT_ARRAY_DEF = "[L";
public static final String S_DOT = ".";
public static final String S_ASTERISK = "*";
public static final String S_COMMA = ",";
public static final String S_HYPEN = "-";
public static final String S_SLASH = "/";
public static final String S_DOUBLE_SLASH = "//";
public static final String S_QUOTE = "'";
public static final String S_DOUBLE_QUOTE = "\"";
public static final String S_REGEX_WHITESPACE = "\\s+";
public static final String S_BACKSLASH = "\\";
public static final String S_XML_COMMENT_START = "<!--";
public static final String S_XML_COMMENT_END = "-->";
public static final String S_XML_DOC_START = "<?xml";
public static final String S_XML_DOCTYPE_START = "<!DOCTYPE";
public static final String S_BYTECODE_METHOD_COMMENT = "// Method";
public static final String S_BYTECODE_INTERFACEMETHOD_COMMENT = "// InterfaceMethod";
public static final String S_BYTECODE_INVOKEDYNAMIC_COMMENT = "// InvokeDynamic";
public static final String S_DEFAULT = "default";
public static final String S_FILE_COLON = "file:";
public static final String S_DOT_CLASS = ".class";
public static final String S_GENERICS_WILDCARD = "<?>";
public static final String S_OPTIMIZER = "optimizer";
public static final String S_SAFEPOINT_POLL = "{poll}";
public static final String S_SAFEPOINT_POLL_RETURN = "{poll_return}";
public static final String S_REASON_STALE_TASK="stale task";
public static final String S_TYPE_NAME_SHORT = "short";
public static final String S_TYPE_NAME_CHARACTER = "char";
public static final String S_TYPE_NAME_BYTE = "byte";
public static final String S_TYPE_NAME_LONG = "long";
public static final String S_TYPE_NAME_DOUBLE = "double";
public static final String S_TYPE_NAME_BOOLEAN = "boolean";
public static final String S_TYPE_NAME_INTEGER = "int";
public static final String S_TYPE_NAME_FLOAT = "float";
public static final String S_TYPE_NAME_VOID = "void";
public static final String S_OPTIMIZED_VIRTUAL_CALL = "{optimized virtual_call}";
public static final char C_SLASH = '/';
public static final char C_OPEN_ANGLE = '<';
public static final char C_CLOSE_ANGLE = '>';
public static final char C_OPEN_PARENTHESES = '(';
public static final char C_CLOSE_PARENTHESES = ')';
public static final char C_OPEN_BRACE = '{';
public static final char C_CLOSE_BRACE = '}';
public static final char C_SPACE = ' ';
public static final char C_HASH = '#';
public static final char C_COMMA = ',';
public static final char C_AT = '@';
public static final char C_COLON = ':';
public static final char C_EQUALS = '=';
public static final char C_QUOTE = '\'';
public static final char C_DOUBLE_QUOTE = '"';
public static final char C_NEWLINE = '\n';
public static final char C_DOT = '.';
public static final char C_OBJECT_REF = 'L';
public static final char C_SEMICOLON = ';';
public static final char C_OPEN_SQUARE_BRACKET = '[';
public static final char C_CLOSE_SQUARE_BRACKET = ']';
public static final char C_QUESTION = '?';
public static final char C_BACKSLASH = '\\';
public static final char C_HAT = '^';
public static final char C_DOLLAR = '$';
public static final String S_HEX_PREFIX = "0x";
public static final String S_HEX_POSTFIX = "h";
public static final String S_BYTECODE_MINOR_VERSION = "minor version:";
public static final String S_BYTECODE_MAJOR_VERSION = "major version:";
public static final String S_BYTECODE_SIGNATURE = "Signature:";
public static final String S_BYTECODE_SOURCE_FILE= "SourceFile:";
public static final String S_POLYMORPHIC_SIGNATURE = "PolymorphicSignature";
public static final String S_BYTECODE_CONSTANT_POOL = "Constant pool:";
public static final String S_BYTECODE_CODE = "Code:";
public static final String S_BYTECODE_EXCEPTION_TABLE = "Exception table:";
public static final String S_BYTECODE_RUNTIMEVISIBLEANNOTATIONS = "RuntimeVisibleAnnotations:";
public static final String S_BYTECODE_LINENUMBERTABLE = "LineNumberTable:";
public static final String S_BYTECODE_LOCALVARIABLETABLE = "LocalVariableTable:";
public static final String S_BYTECODE_STACKMAPTABLE = "StackMapTable:";
public static final String S_BYTECODE_INNERCLASSES = "InnerClasses:";
public static final String S_CONSTRUCTOR_INIT = "<init>";
public static final String S_STATIC_INIT = "<clinit>";
public static final String S_BYTECODE_STATIC_INITIALISER_SIGNATURE = "static {}";
public static final String PUBLIC = "public";
public static final String PRIVATE = "private";
public static final String PROTECTED = "protected";
public static final String STATIC = "static";
public static final String FINAL = "final";
public static final String SYNCHRONIZED = "synchronized";
public static final String STRICTFP = "strictfp";
public static final String NATIVE = "native";
public static final String ABSTRACT = "abstract";
public static final String[] MODIFIERS = new String[] { PUBLIC, PRIVATE, PROTECTED, STATIC, FINAL, SYNCHRONIZED, STRICTFP,
NATIVE, ABSTRACT };
public static final Pattern PATTERN_LOG_SIGNATURE = Pattern
.compile("^([0-9]+):\\s([0-9a-z_]+)\\s?([#0-9a-z,\\- ]+)?\\s?\\{?\\s?(//.*)?");
public static final String VM_LANGUAGE_JAVA = "Java";
public static final String VM_LANGUAGE_SCALA = "Scala";
public static final String VM_LANGUAGE_JRUBY = "JRuby";
public static final String VM_LANGUAGE_GROOVY = "Groovy";
public static final String VM_LANGUAGE_KOTLIN = "Kotlin";
public static final String VM_LANGUAGE_JAVASCRIPT = "JavaScript";
public static final String VM_LANGUAGE_CLOJURE = "Clojure";
}