Evolving CONSTANT_Class

Frederic Parain frederic.parain at oracle.com
Wed Jun 17 13:16:32 UTC 2020

This is probably a remain of the L/Q model, where a value class could be
referenced either as a L-type or a Q-type. L-Foo.x and Q-Foo.x pointed
to the same place in the layout, so there wasn’t a justification to make
a L/Q distinction here.

With LW3, L-Foo and Q-Foo are two different types, so FieldRef/MethodRef
should definitively accept types there (with an explicit Q-envelope or
an implicit L-envelope).


> On Jun 2, 2020, at 18:13, Dan Smith <daniel.smith at oracle.com> wrote:
> Fieldref/Methodref are an anomaly, where the current Valhalla design tries to maintain that it's a class/interface reference, not a type (e.g., we prohibit inline types here), even though array types can also be used. We might be happier embracing that the class_index of a Fieldref/Methodref is the type of the first argument and a type to search for members. (I'm on the fence about this.)

More information about the valhalla-spec-observers mailing list