Hi,

by packing the coder and length values into a long, and combining the length and coder mixers, we can reduce the number of MHs generated to set up String concatenations.

Theoretically we reduce the number of MHs created by up to a third, and real time improvements in startup tests exercising ISC typically hover around 10%. This optimization reverts JDK-8212597[1], so expressions that benefited from that of course sees a smaller or no added benefit.

http://cr.openjdk.java.net/~redestad/8213035/jdk.00/
https://bugs.openjdk.java.net/browse/JDK-8213035

I've attached a simple microbenchmark and performance results from running on x64 in the bug: - Significant reduction in work needed to bootstrap a slew of concatenations, both on the initial bootstrap and when repeating similar concatenation shapes. - For C2 the peak performance is more or less the same, with very small differences due slight differences in the generated code (both tiny improvements and tiny regressions).
- For C1 we see some regressions on some micros, at worst 1.2x
- For interpreter we see improvements around 1.1x on several micros

Testing: tier1-2 jdk and hs tests, sanity tested overflow conditions

Thanks!

/Claes

[1] https://bugs.openjdk.java.net/browse/JDK-8212597

Reply via email to