javap and nullable projection types.

John Rose john.r.rose at oracle.com
Thu May 9 20:23:11 UTC 2019


On May 9, 2019, at 6:05 AM, Maurizio Cimadamore <maurizio.cimadamore at oracle.com> wrote:
> 
> I was under the impression that descriptors other than 'L' were being considered?

Yes, we need them because we need a new contract.

But those are not the descriptors you are looking for.

The translation strategy will use classic L-descriptors
for the old contract and new descriptors for the new
contract.

If a class C is an indirect class, then only L-descriptors
"LC;" will be used.

If a class V is an inline class, then either "LV;" or "L*V;"
is in play (where L* is a new descriptor kind Q, G, etc.).

The tricky bit is that V natively translates to "L*V;" and
the projection V? translates to old-contract "LV;".

Thus, any given "LV;" in a classfile might either be some
classic C, or some V? for an inline V.

So there's a side bit required.

— John


More information about the valhalla-dev mailing list