RFR: 8349860: Make Class.isArray(), Class.isInterface() and Class.isPrimitive() non-native [v7]

Roger Riggs rriggs at openjdk.org
Mon Feb 24 19:10:02 UTC 2025


On Sat, 22 Feb 2025 14:49:38 GMT, Coleen Phillimore <coleenp at openjdk.org> wrote:

>> Class.isInterface() can check modifier flags, Class.isArray() can check whether component mirror is non-null and Class.isPrimitive() needs a new final transient boolean in java.lang.Class that the JVM code initializes.
>> Tested with tier1-4 and performance tests.
>
> Coleen Phillimore has updated the pull request incrementally with one additional commit since the last revision:
> 
>   Use modifiers field directly in isInterface.

A nice simplification.

src/java.base/share/classes/java/lang/Class.java line 241:

> 239:     private Class(ClassLoader loader, Class<?> arrayComponentType, char mods, ProtectionDomain pd, boolean isPrim) {
> 240:         // Initialize final field for classLoader.  The initialization value of non-null
> 241:         // prevents future JIT optimizations from assuming this final field is null.

To add a bit more depth to this comment, I'd add.

"The following assignments are done directly by the VM without calling this constructor."
Or something to that effect.

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

Marked as reviewed by rriggs (Reviewer).

PR Review: https://git.openjdk.org/jdk/pull/23572#pullrequestreview-2638174546
PR Review Comment: https://git.openjdk.org/jdk/pull/23572#discussion_r1968254793


More information about the core-libs-dev mailing list