RFR: 8330465: Stable Values and Collections (Internal)

Dan Heidinga heidinga at openjdk.org
Tue May 14 14:14:24 UTC 2024


On Tue, 23 Apr 2024 12:22:25 GMT, Per Minborg <pminborg at openjdk.org> wrote:

>> src/java.base/share/classes/java/lang/reflect/AccessibleObject.java line 193:
>> 
>>> 191:      * <li>final fields declared in a {@linkplain Class#isHidden() hidden class}</li>
>>> 192:      * <li>final fields declared in a {@linkplain Class#isRecord() record}</li>
>>> 193:      * <li>final fields of type {@linkplain StableValue StableValue}</li>
>> 
>> In Valhalla, we've been looking at adding "strict" final fields to support value classes (which must be strongly immutable) which are fields that are unmodifiable.  Most of the existing unmodifiable field cases can be covered by "strict" fields.  This one can't though so I'm a little saddened to see this list grow.
>
> Maybe we could introduce a special marker interface (e.g. `TrustedFieldType`) that signals this behavior. This might only take effect if loaded via the boot loader.

Thinking on this more, hidden classes & records & value classes can all be dealt with by the introduction of strict fields.  Adding a new type - TrustedFieldType - when we'll eventually only have 1 type here - StableValue - seems like an unnecessary tradeoff.

If we ever have to add a second type here, then it's probably worth revisiting this idea.

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

PR Review Comment: https://git.openjdk.org/jdk/pull/18794#discussion_r1584921294


More information about the compiler-dev mailing list