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 <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 <brian.go...@oracle.com 
>> <mailto: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 <brian.go...@oracle.com 
>>> <mailto: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 <kev...@google.com 
>>>> <mailto: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 <brian.go...@oracle.com 
>>>> <mailto: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 <john.r.r...@oracle.com 
>>>> > <mailto: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. | kev...@google.com 
>>>> <mailto:kev...@google.com>
>> 
> 

Reply via email to