RFR: 8282722: Regard mapping array in enum switches as stable for constant folding

Jatin Bhateja jbhateja at openjdk.java.net
Mon Mar 7 10:43:56 UTC 2022


On Mon, 7 Mar 2022 09:39:52 GMT, Joshua Zhu <jzhu at openjdk.org> wrote:

>>> Is there a jmh micro-ben to show the perf improvement? Or a jtreg test to show the inlining effect after this patch?
>>> 
>>> Copyright year in `fieldInfo.hpp` needs to be updated.
>>> 
>>> Thanks.
>> 
>> Thanks for your comments.
>> This change is an optimization workable for all enum switches.
>> Please check the example at http://cr.openjdk.java.net/~jzhu/8282722/
>> You can check the generated codes or IR graph of function "test2" for differences with/without this change.
>
>> Hi @JoshuaZhuwj , Can we also augment mentioned method [1] with a @forceinline attribute. Since SPECIES itself is static final it's constantness will propagate down to its fields and enable expression folding. But your fix looks generic one.
> 
> Jatin, this change is just like adding @Stable annotation to SwitchMap array (a translation table generated for enum switches in javac) to let c2's constant-folding take effect. I choose to implement this generic optimization so that class files in Java8 or Java11 could also benefit from this change.

> > Hi @JoshuaZhuwj , Can we also augment mentioned method [1] with a @forceinline attribute. Since SPECIES itself is static final it's constantness will propagate down to its fields and enable expression folding. But your fix looks generic one.
> 
> Jatin, this change is just like adding @stable annotation to SwitchMap array (a translation table generated for enum switches in javac) to let c2's constant-folding take effect. I choose to implement this generic optimization so that class files in Java8 or Java11 could also benefit from this change.

Thanks @JoshuaZhuwj, a generic solution will address other cases too.

-------------

PR: https://git.openjdk.java.net/jdk/pull/7721


More information about the hotspot-dev mailing list