RFR: 8166840: Synthetic bridge constructor in ArrayList$Itr blocks inlining
Claes Redestad
claes.redestad at oracle.com
Wed Sep 28 11:48:37 UTC 2016
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