[15] RFR(S): 8239142: C2's UseUniqueSubclasses optimization is broken for array accesses

Vladimir Ivanov vladimir.x.ivanov at oracle.com
Mon Feb 17 11:46:01 UTC 2020


> http://cr.openjdk.java.net/~thartmann/8239142/webrev.00/

Looks good.

Best regards,
Vladimir Ivanov

> 
> While investigating a performance issue that Sergey reported with Valhalla, I've noticed that C2's
> UseUniqueSubclasses optimization for array accesses is broken since JDK 11 b15. When accessing an
> array of an abstract klass type that has only one subtype, C2 registers a dependency and narrows the
> type of the array elements to that one subtype:
> http://hg.openjdk.java.net/jdk/jdk/file/690fc7e5a90f/src/hotspot/share/opto/parse2.cpp#l126
> 
> The fix for JDK-8202377 [1] added code that overwrites the elemtype and therefore disables this
> optimization: http://hg.openjdk.java.net/jdk/jdk/rev/ffa644980dff#l27.26
> 
> My fix simply removes the lines that overwrite the elemtype. I've manually verified that the
> generated code is now equal to before JDK 11 b15.
> 
> Thanks,
> Tobias
> 
> [1] https://bugs.openjdk.java.net/browse/JDK-8202377
> 


More information about the hotspot-compiler-dev mailing list