From 8976ebf0ec42b5fdca69e223cab0b713f1464eae Mon Sep 17 00:00:00 2001 From: Erik Gahlin Date: Thu, 22 Jun 2023 10:09:15 +0000 Subject: [PATCH] 8310561: JFR: Unify decodeDescriptors(String, String) Reviewed-by: mgronlun --- .../jdk/jfr/internal/tool/PrettyWriter.java | 55 +------------------ .../jdk/jfr/internal/util/ValueFormatter.java | 2 +- 2 files changed, 4 insertions(+), 53 deletions(-) diff --git a/src/jdk.jfr/share/classes/jdk/jfr/internal/tool/PrettyWriter.java b/src/jdk.jfr/share/classes/jdk/jfr/internal/tool/PrettyWriter.java index 89a8faba686..aec1f18546c 100644 --- a/src/jdk.jfr/share/classes/jdk/jfr/internal/tool/PrettyWriter.java +++ b/src/jdk.jfr/share/classes/jdk/jfr/internal/tool/PrettyWriter.java @@ -418,7 +418,7 @@ public final class PrettyWriter extends EventPrintWriter { if (clazz != null) { String className = clazz.getName(); if (className!= null && className.startsWith("[")) { - className = decodeDescriptors(className, arraySize > 0 ? Long.toString(arraySize) : "").getFirst(); + className = ValueFormatter.decodeDescriptors(className, arraySize > 0 ? Long.toString(arraySize) : "").getFirst(); } print(className); String description = object.getString("description"); @@ -463,7 +463,7 @@ public final class PrettyWriter extends EventPrintWriter { StringJoiner sj = new StringJoiner(", "); String md = m.getDescriptor().replace("/", "."); String parameter = md.substring(1, md.lastIndexOf(")")); - for (String qualifiedName : decodeDescriptors(parameter, "")) { + for (String qualifiedName : ValueFormatter.decodeDescriptors(parameter, "")) { String typeName = qualifiedName.substring(qualifiedName.lastIndexOf('.') + 1); sj.add(typeName); } @@ -484,60 +484,11 @@ public final class PrettyWriter extends EventPrintWriter { } String className = clazz.getName(); if (className.startsWith("[")) { - className = decodeDescriptors(className, "").getFirst(); + className = ValueFormatter.decodeDescriptors(className, "").getFirst(); } println(className + " (classLoader = " + classLoaderName + ")" + postFix); } - List decodeDescriptors(String descriptor, String arraySize) { - List descriptors = new ArrayList<>(); - for (int index = 0; index < descriptor.length(); index++) { - String arrayBrackets = ""; - while (descriptor.charAt(index) == '[') { - arrayBrackets = arrayBrackets + "[" + arraySize + "]" ; - arraySize = ""; - index++; - } - char c = descriptor.charAt(index); - String type; - switch (c) { - case 'L': - int endIndex = descriptor.indexOf(';', index); - type = descriptor.substring(index + 1, endIndex); - index = endIndex; - break; - case 'I': - type = "int"; - break; - case 'J': - type = "long"; - break; - case 'Z': - type = "boolean"; - break; - case 'D': - type = "double"; - break; - case 'F': - type = "float"; - break; - case 'S': - type = "short"; - break; - case 'C': - type = "char"; - break; - case 'B': - type = "byte"; - break; - default: - type = ""; - } - descriptors.add(type + arrayBrackets); - } - return descriptors; - } - private void printThread(RecordedThread thread, String postFix) { long javaThreadId = thread.getJavaThreadId(); if (javaThreadId > 0) { diff --git a/src/jdk.jfr/share/classes/jdk/jfr/internal/util/ValueFormatter.java b/src/jdk.jfr/share/classes/jdk/jfr/internal/util/ValueFormatter.java index c97187f7e8a..9a8aa05d996 100644 --- a/src/jdk.jfr/share/classes/jdk/jfr/internal/util/ValueFormatter.java +++ b/src/jdk.jfr/share/classes/jdk/jfr/internal/util/ValueFormatter.java @@ -281,7 +281,7 @@ public final class ValueFormatter { return sb.toString(); } - private static List decodeDescriptors(String descriptor, String arraySize) { + public static List decodeDescriptors(String descriptor, String arraySize) { List descriptors = new ArrayList<>(); for (int index = 0; index < descriptor.length(); index++) { String arrayBrackets = "";