On Thu, 3 Sep 2026 09:21:11 GMT, Stefan Karlsson <[email protected]> wrote:

> JEP 401 delivered the preview feature of Value Objects.
> 
> During the lifetime of the Valhalla project there were many ideas and names, 
> and at one point the value types were called inline types. The HotSpot code 
> was changed to use the name "inline types" instead of "value types" (and 
> inline klass instead of value klass) 
> [JDK-8249257](https://bugs.openjdk.org/browse/JDK-8249257). 
> 
> Later the concept and name "inline type" were dropped, but HotSpot retained 
> the name. This causes confusion when working with the code. Some reasons:
> 
> 1) There's no obvious connection to what's described in JEP 401 or the Java 
> code.
> 
> 2) It is easy to incorrectly assume that these are types that have been 
> flattened (inlined) into other objects.
> 
> 3) The name clash with C++'s concept of inlining
> 
> My proposal is that we revert back to talking about "values" instead of 
> "inlines", and that we do this before JDK 28 ships, so that we don't have a 
> release where we use the "inline" terminology.
> 
> ---------
> - [x] I confirm that I make this contribution in accordance with the [OpenJDK 
> Interim AI Policy](https://openjdk.org/legal/ai).

FWIW, I asked around about doing this change before JEP 401 was delivered. At 
that point it was deemed to add risk to the delivery of the feature, so I 
delayed this suggestion until post-integration. From internal discussions among 
HotSpot devs, the suggestion for this rename seems to have broad support, but 
it is not entirely non-controversial.

Some of the controversial points that I know of:

1) Extra work and churn to do the rename.

2) Future Valhalla features could be restructuring the value class hierarchy, 
which could require yet another rename of the C++ classes in HotSpot.

3) We have the abstract value classes and concrete value classes. It is only 
the concrete value classes that get an `InlineKlass`. The abstract value 
classes get an `InstanceKlass`. If `InlineKlass` is renamed to `ValueKlass`, 
there is a risk of a misunderstanding that we have `ValueKlass` for abstract 
value classes.

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

PR Comment: https://git.openjdk.org/jdk/pull/32673#issuecomment-5523765878

Reply via email to