Skip to content

Commit 76cad4b

Browse files
committed
8263321: Regression 8% in javadoc-steady in 17-b11
Reviewed-by: prappo, vromero
1 parent e36136f commit 76cad4b

7 files changed

Lines changed: 22 additions & 20 deletions

File tree

src/jdk.compiler/share/classes/com/sun/tools/javac/code/Type.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -468,7 +468,7 @@ public String toString() {
468468
if (tsym == null || tsym.name == null) {
469469
sb.append("<none>");
470470
} else {
471-
sb.append(tsym.name);
471+
sb.append(tsym.name.toString());
472472
}
473473
if (moreInfo && hasTag(TYPEVAR)) {
474474
sb.append(hashCode());

src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/HtmlDocletWriter.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1432,7 +1432,7 @@ private boolean inAnAtag() {
14321432

14331433
@Override
14341434
public Boolean visitAttribute(AttributeTree node, Content c) {
1435-
StringBuilder sb = new StringBuilder(SPACER).append(node.getName());
1435+
StringBuilder sb = new StringBuilder(SPACER).append(node.getName().toString());
14361436
if (node.getValueKind() == ValueKind.EMPTY) {
14371437
result.add(sb);
14381438
return false;
@@ -2050,18 +2050,18 @@ static String getDescription(String prefix, Element elem) {
20502050
}
20512051
StringBuilder sb = new StringBuilder();
20522052
for (Element e: chain) {
2053-
CharSequence name;
2053+
String name;
20542054
switch (e.getKind()) {
20552055
case MODULE:
20562056
case PACKAGE:
2057-
name = ((QualifiedNameable) e).getQualifiedName();
2057+
name = ((QualifiedNameable) e).getQualifiedName().toString();
20582058
if (name.length() == 0) {
20592059
name = "<unnamed>";
20602060
}
20612061
break;
20622062

20632063
default:
2064-
name = e.getSimpleName();
2064+
name = e.getSimpleName().toString();
20652065
break;
20662066
}
20672067

src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/HtmlIds.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -216,7 +216,7 @@ HtmlId forMember(TypeElement typeElement, VariableElement member) {
216216
* @return the 1.4.x style anchor for the executable element
217217
*/
218218
protected HtmlId forErasure(ExecutableElement executableElement) {
219-
final StringBuilder buf = new StringBuilder(executableElement.getSimpleName());
219+
final StringBuilder buf = new StringBuilder(executableElement.getSimpleName().toString());
220220
buf.append("(");
221221
List<? extends VariableElement> parameters = executableElement.getParameters();
222222
boolean foundTypeVariable = false;
@@ -237,7 +237,7 @@ public Boolean visitArray(ArrayType t, Void p) {
237237

238238
@Override
239239
public Boolean visitTypeVariable(TypeVariable t, Void p) {
240-
buf.append(utils.asTypeElement(t).getQualifiedName());
240+
buf.append(utils.asTypeElement(t).getQualifiedName().toString());
241241
foundTypeVariable = true;
242242
return foundTypeVariable;
243243
}

src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/Entity.java

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (c) 2019, Oracle and/or its affiliates. All rights reserved.
2+
* Copyright (c) 2019, 2021, Oracle and/or its affiliates. All rights reserved.
33
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
44
*
55
* This code is free software; you can redistribute it and/or modify it
@@ -70,17 +70,19 @@ public int charCount() {
7070
* @return the string with all of the HTML characters escaped
7171
*/
7272
static String escapeHtmlChars(CharSequence s) {
73-
for (int i = 0; i < s.length(); i++) {
74-
char ch = s.charAt(i);
73+
// Convert to string as CharSequence implementations can be slow - see JDK-8263321
74+
String str = s.toString();
75+
for (int i = 0; i < str.length(); i++) {
76+
char ch = str.charAt(i);
7577
switch (ch) {
7678
// only start building a new string if we need to
7779
case '<': case '>': case '&':
78-
StringBuilder sb = new StringBuilder(s.subSequence(0, i));
79-
escapeHtmlChars(s, i, sb);
80+
StringBuilder sb = new StringBuilder(str.substring(0, i));
81+
escapeHtmlChars(str, i, sb);
8082
return sb.toString();
8183
}
8284
}
83-
return s.toString();
85+
return str;
8486
}
8587

8688
/**
@@ -91,10 +93,10 @@ static String escapeHtmlChars(CharSequence s) {
9193
* @param sb the string builder
9294
*/
9395
static void escapeHtmlChars(CharSequence s, StringBuilder sb) {
94-
escapeHtmlChars(s, 0, sb);
96+
escapeHtmlChars(s.toString(), 0, sb);
9597
}
9698

97-
private static void escapeHtmlChars(CharSequence s, int start, StringBuilder sb) {
99+
private static void escapeHtmlChars(String s, int start, StringBuilder sb) {
98100
for (int i = start ; i < s.length(); i++) {
99101
char ch = s.charAt(i);
100102
switch (ch) {

src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/Text.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ public static Text of(CharSequence content) {
5555
}
5656

5757
/**
58-
* Constructor to construct FixedStringContent object.
58+
* Constructs an immutable text object.
5959
*
6060
* @param content content for the object
6161
*/

src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/util/CommentHelper.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -225,7 +225,7 @@ private StringBuilder getText0(DocTree dt) {
225225
new SimpleDocTreeVisitor<Void, Void>() {
226226
@Override
227227
public Void visitAttribute(AttributeTree node, Void p) {
228-
sb.append(SPACER).append(node.getName());
228+
sb.append(SPACER).append(node.getName().toString());
229229
if (node.getValueKind() == ValueKind.EMPTY) {
230230
return null;
231231
}
@@ -252,7 +252,7 @@ public Void visitAttribute(AttributeTree node, Void p) {
252252
@Override
253253
public Void visitEndElement(EndElementTree node, Void p) {
254254
sb.append("</")
255-
.append(node.getName())
255+
.append(node.getName().toString())
256256
.append(">");
257257
return null;
258258
}
@@ -307,7 +307,7 @@ public Void visitSerial(SerialTree node, Void p) {
307307
@Override
308308
public Void visitStartElement(StartElementTree node, Void p) {
309309
sb.append("<");
310-
sb.append(node.getName());
310+
sb.append(node.getName().toString());
311311
node.getAttributes().forEach(dt -> dt.accept(this, null));
312312
sb.append(node.isSelfClosing() ? "/>" : ">");
313313
return null;

src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/util/Utils.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2158,7 +2158,7 @@ public String visitModule(ModuleElement e, Void p) {
21582158

21592159
@Override
21602160
public String visitType(TypeElement e, Void p) {
2161-
StringBuilder sb = new StringBuilder(e.getSimpleName());
2161+
StringBuilder sb = new StringBuilder(e.getSimpleName().toString());
21622162
Element enclosed = e.getEnclosingElement();
21632163
while (enclosed != null
21642164
&& (enclosed.getKind().isClass() || enclosed.getKind().isInterface())) {

0 commit comments

Comments
 (0)