On Mon, 30 Aug 2021 11:49:49 GMT, Claes Redestad <redes...@openjdk.org> wrote:

>> Refactor to improve inlining, which helps some microbenchmarks exer 
>> StringBuilder.append(String)
>
> Claes Redestad has updated the pull request incrementally with one additional 
> commit since the last revision:
> 
>   Simplify and call getBytes(String, int, byte) when possible

src/java.base/share/classes/java/lang/AbstractStringBuilder.java line 1714:

> 1712: 
> 1713:     private void inflateIfNeededFor(String input) {
> 1714:         if (COMPACT_STRINGS && (coder != input.coder())) {

I'm not completely sure whether it's a good idea in terms of maintability, but 
I think this can be simplified a bit more. Currently in both `String` and `ASB` 
we have implementation of `coder()` very much alike:

// ASB
final byte getCoder() {
    return COMPACT_STRINGS ? coder : UTF16;
}

//String
byte getCoder() {
    return COMPACT_STRINGS ? coder : UTF16;
}

Here we have this condition

if (COMPACT_STRINGS && (coder != input.getCoder())) {}

where the right operand of `&&` is evaluated only when `COMPACT_STRINGS` is 
`true` and hence it always returns the value of `coder` field. This means we 
can reference it directly as

if (COMPACT_STRINGS && (coder != input.coder)) {}

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

PR: https://git.openjdk.java.net/jdk/pull/5291

Reply via email to