in that case, direct class ? Rémi
> De: "Brian Goetz" <brian.go...@oracle.com> > À: "Kevin Bourrillion" <kev...@google.com> > Cc: "valhalla-spec-experts" <valhalla-spec-experts@openjdk.java.net> > Envoyé: Lundi 8 Avril 2019 22:45:46 > Objet: Re: generic specialization design discussion > And the opposite of “inline” is “indirect”. ref, interface, and null-adjoined > types are _indirect_. Indirect classes are passed by pointer, do not get > flattened, get erased, are nullable. >> On Apr 8, 2019, at 4:20 PM, Brian Goetz < [ mailto:brian.go...@oracle.com | >> brian.go...@oracle.com ] > wrote: >> Refining this: >> - inline classes are inlinable (duh) >> - reference classes, interfaces, and nullable-projections of zero-default >> inline >> classes are not inlinable >> (We later use these to say: Instantiation of generics with non-inlinable >> types >> are erased.) >> That seems not terrible, except for the “nullable projection of zero-default >> inline classes” part, which is both a mouthful and has “inline” in it. >> Perhaps >> calling these something like “null-adjoined types” (to reflect the fact that >> we’re cramming a null into a type whose value set doesn’t naturally contain >> null) makes that slightly better. So: >> - inline classes are inlinable >> - reference classes, interfaces, and null-adjoined types are not inlinable >>> On Apr 8, 2019, at 3:06 PM, Brian Goetz < [ mailto:brian.go...@oracle.com | >>> brian.go...@oracle.com ] > wrote: >>> A related issue is that we want a word for describing which types are >>> routinely >>> flattened in layouts, and specialized in generics (the criteria are the >>> same). >>> Currently: >>> - References and nullable projections of values (V?) are erased and not >>> flattened >>> - Values (zero-default and null-default) are specializable and flattenable >>> (This thread is for terminology; if you have questions about the above >>> claims, >>> make a new thread, or better, wait for the more detailed writeup explaining >>> why >>> this is.) >>> We need words for these two things too. >>>> On Apr 8, 2019, at 2:58 PM, Brian Goetz < [ mailto:brian.go...@oracle.com | >>>> brian.go...@oracle.com ] > wrote: >>>> Yes, that’s a promising direction. And this is surely the motivation why >>>> the C# >>>> folks picked “struct”; they wanted to carry the connotation that this is a >>>> structure that is inlined. Problem is, the word “struct” is already so >>>> heavily >>>> polluted by what it means in C. So perhaps something like: >>>> inline class V { … } >>>> This says than a V can be inlined into things that contain a V — other >>>> classes >>>> and arrays. It also kind of suggests that this thing has no intrinsic >>>> identity. >>>> A possible downside of this choice is that one might mistake it for >>>> meaning “its >>>> methods are inlined”. Which is actually a little true, in that the methods >>>> are >>>> implicitly static and therefore more amenable to dynamic inlining. So that >>>> might actually be OK. >>>> Others? >>>>> On Apr 8, 2019, at 2:25 PM, Kevin Bourrillion < [ >>>>> mailto:kev...@google.com | >>>>> kev...@google.com ] > wrote: >>>>> I'd suggest the name should in some way allude to the inline/compact/flat >>>>> memory >>>>> layout, because that is the distinguishing feature of these new things >>>>> compared >>>>> to anything else you can do in Java. And it is what people should be >>>>> thinking >>>>> about as they decide whether a new class should use this. >>>>> On Mon, Apr 8, 2019 at 10:02 AM Brian Goetz < [ >>>>> mailto:brian.go...@oracle.com | >>>>> brian.go...@oracle.com ] > wrote: >>>>>> The slide deck contains a list of terminology. I’d like to posit that >>>>>> the most >>>>>> confusion-reducing thing we could do is come up with another word for >>>>>> value >>>>>> types/classes/instances, since the word “value” is already used to >>>>>> describe >>>>>> primitives and references themselves. This is a good time to see if >>>>>> there are >>>>>> better names available. >>>>>> So for this thread only, we’re turning on the syntax light to discuss >>>>>> what might >>>>>> be a better name for the abstraction currently known as “value classes”. >>>>>>> On Mar 29, 2019, at 12:08 PM, John Rose < [ >>>>>>> mailto:john.r.r...@oracle.com | >>>>>> > john.r.r...@oracle.com ] > wrote: >>>>>> > This week I gave some presentations of my current thinking >>>>>> > about specializations to people (from Oracle and IBM) gathered >>>>>> > in Burlington. Here it is FTR. If you read it you will find lots >>>>>> > of questions, as well as requirements and tentative answers. >>>>>>> [ http://cr.openjdk.java.net/~jrose/pres/201903-TemplateDesign.pdf | >>>>>> > http://cr.openjdk.java.net/~jrose/pres/201903-TemplateDesign.pdf ] >>>>>> > This is a checkpoint. I have more tentative answers on the >>>>>> > drawing board that didn't fit into the slide deck. Stay tuned. >>>>>> > — John >>>>> -- >>>>> Kevin Bourrillion | Java Librarian | Google, Inc. | [ >>>>> mailto:kev...@google.com | >>>>> kev...@google.com ]