----- Mail original -----
> De: "John Rose" <john.r.r...@oracle.com>
> À: "Rémi Forax" <fo...@univ-mlv.fr>
> Cc: valhalla-spec-experts@openjdk.java.net
> Envoyé: Samedi 1 Avril 2017 01:06:07
> Objet: Re: Value Type on stack in the interpreter

> On Mar 31, 2017, at 8:57 AM, Remi Forax <fo...@univ-mlv.fr> wrote:
>> 
>> I've some trouble to see how value types are laid on stack (conceptually, not
>> necessary the real implementation).
>> 
>> First, i may be wrong but it seems that vload do not reference the 
>> corresponding
>> Q-type, so i wonder how the verifier knows that it can then access to 
>> component
>> of the value type.
>> Then, it seems that value type use one slot on stack, so the components (and 
>> the
>> boxed reference if it exists) has to be stored somewhere but there is no
>> corresponding max value type buffer size.
> 
> In the interpreter value types all share a common _carrier type_ which 
> includes
> metadata about the size and type of the value being stored, plus a pointer to
> the actual storage.  The actual storage may be on the heap, or maybe not.
> We are prototyping with thread-local arenas for the non-heap case.
> There are also ways to store value payloads in the stack frame, but
> in that case there is a special handshake when you want to return a
> value from a method call.

Ok,
why the type of the value is stored in the _carrier_type_ and not in the 
vload/vstore instruction.

> 
> From the verifier's point of view, there isn't much difference between
> the various Q-types.  We will probably track classes of Q-types, mainly
> to simplify vgetfield operations.

pre-compute the offset of a component ?

> 
> — John

Rémi

Reply via email to