> Let's do an ASM thought experiment.
>
> The descriptors live in (a) {method,field}_info metadata, and (b)
> C_{Field,Method}Ref constants referred to by invoke/field access instructions.
>
> The stars, though, live somewhere completely different: the Preload
> attribute, which is not on the ins
Let's do an ASM thought experiment.
The descriptors live in (a) {method,field}_info metadata, and (b)
C_{Field,Method}Ref constants referred to by invoke/field access
instructions.
The stars, though, live somewhere completely different: the Preload
attribute, which is not on the instruction,
> Which makes me ask ... if it really is a side channel, does it really go
> *in* the ClassDesc?
If it's not in the ClassDesc, then how do we communicate the side
channel to users - e.g. class file generators?
I recently rewatched your JVMLS talk from 2018 [1] where javac
converted the jl.constan
If the preload() bit is tied to the ClassDesc, do we need to worry
about a bit mask in MethodTypeDesc? Isn't the MethodTypeDesc composed
of ClassDesc returnType and ClassDesc[] of parameters? I feel like
I'm missing some complexity here...
That's how the implementation happens to work, but
>
> This reminds me of an earlier version of the jl.constant API, where we tried
> to track the varargs bit. In the end, we dropped this, because it washed off
> too easily in the API. We could have a preload() bit that travels with the
> ClassDesc, which would then have to be propagated into
This reminds me of an earlier version of the jl.constant API, where we
tried to track the varargs bit. In the end, we dropped this, because it
washed off too easily in the API. We could have a preload() bit that
travels with the ClassDesc, which would then have to be propagated into
a bit mas
The updated api looks pretty good for handling both L and Q descriptors.
There's one case that isn't handled here though - L* descriptors.
WIth the bucket 2 & 3 design, we really have 3 kinds of descriptors:
L, Q, and L*. Over the years, we've spent a lot of time as an EG
talking about stars on d
The jl.constant API will have to be updated somewhat for Valhalla.
Since it was already on the drawing board when we designed jl.constant,
shouldn't be too bad, but there are a few subtleties. Now that the
descriptors are largely settling down, we can take a stab at this.
ClassDesc (the base