value type hygiene
John Rose
john.r.rose at oracle.com
Fri May 11 17:58:49 UTC 2018
On May 11, 2018, at 10:07 AM, Brian Goetz <brian.goetz at oracle.com> wrote:
>
>>
>> More on ValueRef:
>>
>> @ForValueTypesOnly
>> interface ValueRef<T extends ValueRef<T>> {
>> @CanBeFreebieDownCast
>> @SuppressWarnings("unchecked")
>> default T byValue() { return (T) this; }
>> }
>>
>> Ignore the annotations for a moment.
>
> ... and the magic-ness of it.
>
> IMO, I think one of the biases that has driven us into this corner is the distaste for boxes. I think we've tried too hard to say "there are no boxes". I think we should admit there are boxes, maybe ValueRef is spelled "Box<V>" or V.BOX (where reference types box to themselves). And then it has all the behavior of a heavy box, for better or worse.
>
I suspect you don't yet realize how *little* magic there is in this
particular spelling of V.BOX. It requires no VM changes, using
only existing descriptors available today. It can hand you
nullable types as *as a source code convention* above both
the language and the VM. With a little magic (very little) it
can serve as as a translation strategy totally above the VM
for V and V.BOX.
More information about the valhalla-spec-observers
mailing list