This change fixes a performance regression caused by passing instances of 
`com.sun.tools.javac.util.Name` to a `html.markup.Text` object, where their 
content is accessed using`CharSequence` methods which are implemented very 
inefficiently. 

Since improving `javac.util.Name` will likely require a bit more work (see 
JDK-8268622), a safe short term solution for JDK 17 is to make sure instances 
of `Name` are converted to `String` before invoking said `CharSequence` 
methods. The main fix is to convert to `String` early in 
`Entity.escapeHtmlChars(CharSequence)` which is invoked by the `Text` 
constructor. There are a few more `.toString()` invocations added in places 
where a `Name` is appended to a `StringBuilder`, although these have less 
performance impact.

-------------

Commit messages:
 - JDK-8263321: Regression 8% in javadoc-steady in 17-b11

Changes: https://git.openjdk.java.net/jdk17/pull/42/files
 Webrev: https://webrevs.openjdk.java.net/?repo=jdk17&pr=42&range=00
  Issue: https://bugs.openjdk.java.net/browse/JDK-8263321
  Stats: 21 lines in 7 files changed: 2 ins; 0 del; 19 mod
  Patch: https://git.openjdk.java.net/jdk17/pull/42.diff
  Fetch: git fetch https://git.openjdk.java.net/jdk17 pull/42/head:pull/42

PR: https://git.openjdk.java.net/jdk17/pull/42

Reply via email to