Interesting !
here is my current view of the problem.

Lets say we are in the R/Q/U world, we want U interface to abstract over a 
reference type or a value type, we want UObject because object is basically an 
interface, we also want U object like UOptional to be able to painlessly move a 
reference type to a value type and vice-versa (no bridge-o-matic).

But why we want Q type BTW, we want Q type because
  1/ you can not apply the same opcodes on Q types and R types (more or less, 
some ops are not defined on Q types)
  2/ we want the VM to flatten array and not box Q type.
  3/ the VM need a clean separation between Q type and R type

For 1/ we can extends the semantics of the opcodes that only works on R types 
to work on Q types, we need that anyway for U types and at worst a valid 
semantics is to throw an exception
For 2/ even if we sak for flatten array or no box, there are case where the VM 
will not flatten the array or the q type, so it's like a hint than a strict 
requirement.
For 3/ the current prototype has shown that the VM is able to box/buffer value 
types where needed, so no !

I think we do not need Q types, Q types are use site annotations, and here we 
want declaration site annotations (let say that this class is a value class, 
the ACC_VALUE).

If we have no Q type, it means that R types and U types are the same thing, 
everything is a U type. In term of migration, it means that L types need to 
have their semantics extended to work as U types.

Obviously, the devil is in the details, but i think from the VM POV, we should 
extends L types to behave like U types.
>From Java the language POV, we may want to not compile when a variable is 
>typed with value type is assigned to null, same with generics, you may want to 
>declare a type variable any but from the VM POV, this should be possible and 
>either throw an exception, return false, etc. 

Let's make the VM powerful and let's Java the language helps users to not have 
too many exceptions.
     
regards,
Rémi

----- Mail original -----
> De: "daniel smith" <daniel.sm...@oracle.com>
> À: "valhalla-spec-experts" <valhalla-spec-experts@openjdk.java.net>
> Envoyé: Mercredi 22 Novembre 2017 06:54:55
> Objet: Design notes for next values iteration

> Following up on John's mail, here are some detailed notes about the design
> choices for "U types", and the concrete proposal we settled on last week.
> 
> http://cr.openjdk.java.net/~dlsmith/values-notes.html
> 
> John may have raised additional points I didn't cover in this document. I'll 
> do
> another review of his mail and make any needed updates; or feel free to call
> them out. :-)
> 
> —Dan

Reply via email to