From ebcf3991b79024ef35512e5aa2be5bd731acf9e0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D0=B5=D1=80=D0=B3=D0=B5=D0=B9=20=D0=A6=D1=8B=D0=BF?= =?UTF-8?q?=D0=B0=D0=BD=D0=BE=D0=B2?= Date: Fri, 14 May 2021 12:29:23 +0000 Subject: [PATCH] 8266622: Optimize Class.descriptorString() and Class.getCanonicalName0() Reviewed-by: redestad --- .../share/classes/java/lang/Class.java | 23 +++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/src/java.base/share/classes/java/lang/Class.java b/src/java.base/share/classes/java/lang/Class.java index 1463d905526..5f80fc6ead3 100644 --- a/src/java.base/share/classes/java/lang/Class.java +++ b/src/java.base/share/classes/java/lang/Class.java @@ -1722,7 +1722,12 @@ public final class Class implements java.io.Serializable, String enclosingName = enclosingClass.getCanonicalName(); if (enclosingName == null) return ReflectionData.NULL_SENTINEL; - return enclosingName + "." + getSimpleName(); + String simpleName = getSimpleName(); + return new StringBuilder(enclosingName.length() + simpleName.length() + 1) + .append(enclosingName) + .append('.') + .append(simpleName) + .toString(); } } @@ -4365,10 +4370,20 @@ public final class Class implements java.io.Serializable, } else if (isHidden()) { String name = getName(); int index = name.indexOf('/'); - return "L" + name.substring(0, index).replace('.', '/') - + "." + name.substring(index+1) + ";"; + return new StringBuilder(name.length() + 2) + .append('L') + .append(name.substring(0, index).replace('.', '/')) + .append('.') + .append(name, index + 1, name.length()) + .append(';') + .toString(); } else { - return "L" + getName().replace('.', '/') + ";"; + String name = getName().replace('.', '/'); + return new StringBuilder(name.length() + 2) + .append('L') + .append(name) + .append(';') + .toString(); } }