Hello Chen,

Looking at the implementation of java.lang.Class.getName(), which then triggers the hotspot code to initialize this "name" field, I suspect there will be a (harmless) race in the hotspot implementation where more than one thread could end up writing the "name" field (with the same value of course) https://github.com/openjdk/jdk/blob/master/src/hotspot/share/classfile/javaClasses.cpp#L1237. I don't know how the JVM would then react if such a field is marked @Stable (the javadoc of @Stable states that the behaviour is such cases is undefined).

-Jaikiran

On 16/12/23 8:37 pm, - wrote:
Hello,
I just noticed the Class.name field is mutable but not @Stable, meaning `Class.getName()` calls are not eligible for constant folding.

The last update to this field is in 2019 in JDK-8216302 when the field initialization was done directly by a write from hotspot code (for the class name is interned anyways, though interning limits scalability of hidden classes)

Would it be a good idea to submit a patch to mark this field @Stable? Given class names may be frequently used to quickly identify a class, to create descriptors.

Chen Liang

Reply via email to