Let me re-phrase my question because i've asked the wrong question. 

My question is not why do we need .ref in the language but why .ref can not be 
represented by a L-type in the bytecode instead of a full reified 
interface/abstract class. 

Asking for a .ref is something similar to a boxing, but using checkcast to 
convert from a QComplex; to a LComplex; 

One reason may be that this is not a subtyping relationship but a boxing 
relationship so it may not work when well we will have fully reified generics. 

Rémi 

> From: "Brian Goetz" <brian.go...@oracle.com>
> To: "Remi Forax" <fo...@univ-mlv.fr>, "valhalla-spec-experts"
> <valhalla-spec-experts@openjdk.java.net>
> Sent: Thursday, January 6, 2022 9:12:21 PM
> Subject: Re: Why do we need .ref class for primtive class ?

> Because the Q is what permits the tearing.

> On 1/6/2022 1:50 PM, Remi Forax wrote:

>> It just occurs to me that while ACC_VALUE is a bit that change the runtime
>> semantics,
>> something the VM should take care of, ACC_PRIMITIVE is not a bit that change 
>> the
>> runtime semantics, only the javac translation strategy,
>> javac emits Q-types instead of L-type + the Preload attribute.

>> If value classes and primitive classes are equivalent at runtime, why do we 
>> need
>> to generate the .ref interface/abstract class ?
>> We can use L-type instead.

>> Rémi

Reply via email to