RFR[16]: 8247681: Improve bootstrapping of unary concatenations

Paul Sandoz paul.sandoz at oracle.com
Tue Jun 16 16:06:54 UTC 2020


Looks good.

It’s tempting to do something like this to de-dup the code with less potential for mistakes:

String s = null;
// Select the singular non-null value, if any
If (s0 != null && s1 == null) s = s0;
else if (s0 == null && s1 != null) s = s1;
If (s != null) {
    if (s.isEmpty()) {
        …
    } else if (…) { … }
}

Paul.

> On Jun 16, 2020, at 6:00 AM, Claes Redestad <claes.redestad at oracle.com> wrote:
> 
> Hi,
> 
> this patch specializes bootstrapping of unary concatenation expressions.
> 
> Such expressions can be reduced to the canonical String.valueOf
> "stringifier" for any primitive argument, but needs a special
> stringifier for reference arguments since we need to produce a new
> String to be compliant with JLS.
> 
> Bug:    https://bugs.openjdk.java.net/browse/JDK-8247681
> Webrev: http://cr.openjdk.java.net/~redestad/8247681/open.00/
> 
> This ensures we get a similar speed-up as JDK-8247605 for
> "" + fooString (and fooString + "").
> 
> Also speeds up bootstrapping for all such simple unary concatenation
> expressions.
> 
> Testing: tier1+2
> 
> Before:
> 
> Benchmark                            (intValue)  Mode  Cnt   Score Error  Units
> StringConcat.concatEmptyConstInt           4711  avgt    5  15.539 ± 0.831  ns/op
> StringConcat.concatEmptyConstString        4711  avgt    5  17.046 ± 1.047  ns/op
> StringConcat.concatEmptyLeft               4711  avgt    5   7.506 ± 0.588  ns/op
> StringConcat.concatEmptyRight              4711  avgt    5   7.890 ± 0.314  ns/op
> 
> After:
> Benchmark                            (intValue)  Mode  Cnt   Score Error  Units
> StringConcat.concatEmptyConstInt           4711  avgt    5  15.410 ± 0.944  ns/op
> StringConcat.concatEmptyConstString        4711  avgt    5   7.397 ± 0.384  ns/op
> StringConcat.concatEmptyLeft               4711  avgt    5   7.465 ± 0.328  ns/op
> StringConcat.concatEmptyRight              4711  avgt    5   7.857 ± 0.355  ns/op
> 
> Thanks!
> 
> /Claes



More information about the core-libs-dev mailing list