On Tue, 15 Jun 2021 16:00:02 GMT, Hannes Wallnöfer <hann...@openjdk.org> wrote:

>> 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.
>
> Hannes Wallnöfer has updated the pull request incrementally with one 
> additional commit since the last revision:
> 
>   JDK-8268557: Update year in copyright header

This is OK as a short-term fix. I hope we can revert it when the underlying 
problem in `Name`is fixed.

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

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

Reply via email to