JVMS draft for L-world value types with support for nullability

Karen Kinnear karen.kinnear at oracle.com
Wed Feb 7 14:35:18 UTC 2018


Paul,

Just to make sure we are in sync for now:

I think we are all in agreement that current Enums can not migrate to be
value types:
1. enums have identity
2. enums have java.lang.Enum abstract class as super-class, not java.lang.Object
3. there is no clear default value
4. enums have mutable fields.

What I think you are wondering about is if there is a role for a new kind of type,
value-enums, that have value type characteristics. I totally agree with John
that the is a future exercise. And if you can figure out a migration story in
future, more power to you, but we are not designing value types around that
requirement.

A note - at least from the hotspot perspective, enums are not special-cased
and as you can imagine we are trying to minimize special cases since they
tend to be sources of bugs, so we would like to keep it that way.

thanks,
Karen

> On Feb 1, 2018, at 2:05 PM, John Rose <john.r.rose at oracle.com> wrote:
> 
> On Feb 1, 2018, at 5:24 PM, Paul Sandoz <paul.sandoz at oracle.com <mailto:paul.sandoz at oracle.com>> wrote:
>> 
>> an enum class to also explicitly be a value class
> 
> Yes, it's probably doable, but we would have to work out the
> migration story, and also figure out how to manage the Enum
> supertype.  Remember that one of the ongoing challenges
> of VT's is the role of Object.  For value-enums, I think we
> would reprise the role for Enum.  I'd rather have template
> classes under my belt before tackling that, so I could make
> Enum behave differently as an object vs. a value supertype.
> 



More information about the valhalla-spec-observers mailing list