Looks good.
Please, add -Xverify:all to all tests on string concat.
Best regards,
Vladimir Ivanov
On 2/2/16 10:00 AM, Aleksey Shipilev wrote:
Anyone? This looks like a trivial fix.
-Aleksey
On 02/01/2016 10:47 PM, Aleksey Shipilev wrote:
Hi,
Please review the fix for a corner case in StringConcatFactory exactness
check, which produces invalid bytecode:
https://bugs.openjdk.java.net/browse/JDK-8148787
Note that this happens when all three things align:
a) BSM is called directly, as Java method -- javac would never produce
such a String concat shape;
b) BC_SB_SIZED_EXACT strategy is used, so exactness check can be applied;
c) -Djava.lang.invoke.stringConcat.debug=true is set, forcing
exactness check to run;
The issue is with exactness debug check using a temporary local variable
when the local variable table is small (like it is in non-arg case). The
code can be reformulated without using temporary variables, with a
creative use of "swap" instruction.
Ironically, the bug is within the debugging code, so we don't care about
its performance at all:
http://cr.openjdk.java.net/~shade/8148787/webrev.01/
Cheers,
-Aleksey