RFR: 8346567: Make Class.getModifiers() non-native [v2]

Vladimir Ivanov vlivanov at openjdk.org
Thu Feb 6 21:15:12 UTC 2025


On Thu, 6 Feb 2025 13:08:31 GMT, Coleen Phillimore <coleenp at openjdk.org> wrote:

>> Does `static final` help here?
>
> Yes.  Yes it does.

Cases when a class mirror is a compile-time constant are already well-optimized. Non constant cases are the ones where missing optimization opportunities arise. 

In this particular case, C2 doesn't benefit from the observation that `Clazz[]` is a leaf type at runtime (no subclasses). Hence, a value loaded from a field typed as `Clazz[]` has exactly the same type and `clazzArray.getClass()` can be constant folded to `Clazz[].class`.  Rather than a common case, it feels more like a corner case. So, worth addressing as a follow-up enhancement.

Another scenario is a meet of 2 primitive array types (ends up as `bottom[]` in C2 type system), but I believe it hasn't been optimized before.

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

PR Review Comment: https://git.openjdk.org/jdk/pull/22652#discussion_r1945451909


More information about the core-libs-dev mailing list