Re: [External] : Re: Consolidating the user model

2021-11-04 Thread Remi Forax
> From: "John Rose" > To: "daniel smith" > Cc: "Kevin Bourrillion" , "Brian Goetz" > , "valhalla-spec-experts" > > Sent: Jeudi 4 Novembre 2021 02:34:52 > Subject: Re: [External] : Re: Consolidating the user model > On Nov 3, 2021, at 4:05 PM, Dan Smith < [ mailto:daniel.sm...@oracle.com | >

Re: identityless objects and the type hierarchy

2021-11-04 Thread Remi Forax
> From: "Kevin Bourrillion" > To: "Brian Goetz" > Cc: "valhalla-spec-experts" > Sent: Jeudi 4 Novembre 2021 22:34:54 > Subject: Re: identityless objects and the type hierarchy > On Wed, Nov 3, 2021 at 12:43 PM Brian Goetz < [ mailto:brian.go...@oracle.com > | > brian.go...@oracle.com ] >

Re: identityless objects and the type hierarchy

2021-11-04 Thread Kevin Bourrillion
On Wed, Nov 3, 2021 at 12:43 PM Brian Goetz wrote: > > On 11/3/2021 3:00 PM, Kevin Bourrillion wrote: > > Okay, let's stick a pin in proper-value-types (i.e. try to leave them out > of this discussion) for a moment... > > One question is whether the existing design for the bifurcated type >

Re: [External] : Re: Consolidating the user model

2021-11-04 Thread Brian Goetz
An implication of universal generics is that there needs to be some common protocol that works on both vals and refs. In the val/ref model, that protocol is objects: both vals and refs are objects with members that can be accessed via '.'. In the value/object model, I'm not

Re: [External] : Re: Consolidating the user model

2021-11-04 Thread Kevin Bourrillion
On Thu, Nov 4, 2021 at 9:28 AM Dan Smith wrote: > On Nov 3, 2021, at 6:19 PM, Kevin Bourrillion wrote: > > I think my intuitions about boxes tie heavily to 'getClass' behavior (or >> some analogous reflective operation). "What are you?" should give me >> different answers for a bare value and a

Re: [External] : Re: Consolidating the user model

2021-11-04 Thread Dan Smith
On Nov 4, 2021, at 10:08 AM, Kevin Bourrillion mailto:kev...@google.com>> wrote: Your model is likely enough the best, and I'm simply "resisting" it, but in that case I'm channeling some of the resistance other users will feel, and we can hash out how to head it off. But also, occasionally I

Re: [External] : Re: Consolidating the user model

2021-11-04 Thread Dan Smith
On Nov 3, 2021, at 7:34 PM, John Rose mailto:john.r.r...@oracle.com>> wrote: There’s a bigger hiccup when you compare all that with good old int: int iv = 42; // “class int” is NOT a thing, but “class Integer” is assert iv.getClass() != int.class; // because int is not a class assert

Re: [External] : Re: Consolidating the user model

2021-11-04 Thread Dan Smith
On Nov 3, 2021, at 6:19 PM, Kevin Bourrillion mailto:kev...@google.com>> wrote: I think my intuitions about boxes tie heavily to 'getClass' behavior (or some analogous reflective operation). "What are you?" should give me different answers for a bare value and a box. A duck in a box is not the

Re: [External] : Re: Consolidating the user model

2021-11-04 Thread Kevin Bourrillion
On Thu, Nov 4, 2021 at 7:56 AM Brian Goetz wrote: On 11/4/2021 2:54 AM, Kevin Bourrillion wrote: > > Point.ref pr = pv; // same object… now it’s on the heap, though, with a >> real live heap header >> assert pr.getClass() == Point.class; // same class, but... >> > > Why would we even want

Re: [External] : Re: Consolidating the user model

2021-11-04 Thread Brian Goetz
I would summarize what you've been on about as "Hey, developers are used to primitives and boxes, is there mileage in working within that framework, rather than tossing it out the window because boxes seem dirty?"  And I think there is something to that. One way to frame this is that there's

Re: [External] : Re: Consolidating the user model

2021-11-04 Thread Brian Goetz
To close the loop, in the initial "Eclair" discussion (which grew out of a conversation at the last JVMLS), a primitive was a pair of classes, where the companion class was actually an interface.  We haven't revisited "what is Point.ref" since then, but one possible way to do this is to say

Re: [External] : Re: Consolidating the user model

2021-11-04 Thread Brian Goetz
On 11/4/2021 2:54 AM, Kevin Bourrillion wrote: Point.ref pr = pv;  // same object… now it’s on the heap, though, with a real live heap header assert pr.getClass() == Point.class;  // same class, but... Why would we even want this? It would be very surprising/puzzling to me.

Re: [External] : Re: Consolidating the user model

2021-11-04 Thread Kevin Bourrillion
On Wed, Nov 3, 2021 at 6:35 PM John Rose wrote: Let’s see what happens if we say that (a) bare values have headers > and (b) Object::getClass allows the user to observe part of the header > contents. > I'm asking specific questions below as best I can, but I must confess that I don't really