RFR: 8166840: Synthetic bridge constructor in ArrayList$Itr blocks inlining
Vladimir Ivanov
vladimir.x.ivanov at oracle.com
Wed Sep 28 14:46:17 UTC 2016
Looks good.
Best regards,
Vladimir Ivanov
On 9/28/16 2:48 PM, Claes Redestad wrote:
> Hi,
>
> as discussed recently on hotspot-compiler-dev[1], having a private class
> with no default constructor can lead to C2 failing to inline, due to the
> synthetic bridge constructor using a dummy argument of an uninitialized
> class. This is really a problem in C2, as well as something which could
> ultimately be resolved by nestmates...
>
> However, there is an easy workaround in adding an empty package-private
> constructor. In the most recently found case - a microbenchmark
> stressing MethodHandles.iteratedLoop - adding this to ArrayList$Itr lead
> to a 2.5-3x speedup.
>
> This is me asking nicely to do a quick-fix for this in
> java.util.ArrayList$Itr now:
>
> Bug: https://bugs.openjdk.java.net/browse/JDK-8166840
> Webrev: http://cr.openjdk.java.net/~redestad/8166840/webrev.01/
>
> Thanks!
>
> /Claes
>
> [1]
> http://mail.openjdk.java.net/pipermail/hotspot-compiler-dev/2016-September/024407.html
>
More information about the core-libs-dev
mailing list