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