RFR: 8349860: Make Class.isArray(), Class.isInterface() and Class.isPrimitive() non-native
Chen Liang
liach at openjdk.org
Wed Feb 19 16:21:57 UTC 2025
On Wed, 19 Feb 2025 03:30:04 GMT, Dean Long <dlong 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.
>
> src/java.base/share/classes/java/lang/Class.java line 1287:
>
>> 1285: */
>> 1286: public Class<?> getComponentType() {
>> 1287: // Only return for array types. Storage may be reused for Class for instance types.
>
> I don't see any changes to componentType related to reuse. So was this comment and the code below already obsolete?
It was. Before the componentType field was reused for the class initialization monitor int array, and it caused problems with core reflection if a program reflectively accesses this field after a few hundred times. See [JDK-8337622](https://bugs.openjdk.org/browse/JDK-8337622).
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/23572#discussion_r1961989175
More information about the core-libs-dev
mailing list