Hidden classes + class data
maurizio.cimadamore at oracle.com
Mon Dec 2 15:50:27 UTC 2019
On 27/11/2019 01:30, Mandy Chung wrote:
> On 11/26/19 4:55 PM, John Rose wrote:
>> On Nov 26, 2019, at 3:03 PM, forax at univ-mlv.fr wrote:
>>> I wonder if defineHiddenClassWithClassData should not take another
>>> class as parameter instead of a byte array (using the byte array of
>>> that class) enabling more sharing of the bytecode and allowing to do
>>> the verification only once if defineHiddenClassWithClassData is
>>> called several times with the same Class.
>> Yes. I’d like to try this with templates, when we get them, since
>> templates are supposed to share metadata with their species.
>> E.g., for a lambda form of a predefined shape with 2 free variables
>> (a type and a MH), define it as a template with those parameters
>> and inject it as many times as you see distinct combinations of
>> those parameters.
> This produces a distinct Class mirror for each hidden class defined
> from the same metadata (class bytes) with a different class data.
> Perhaps we can experiment ClassDefiner builder-like API. I will
> explore this.
In the MVT Valhalla prototype we used to have a way to obtain a method
handle using a 'method builder' (from the bytecode API used there). I
think it should be possible to do the same, using a 'class builder' - so
that you can actually define the contents of the class w/o specifying a
byte array, down to the code attribute level. In other words, there is a
big overlap with what you call a 'ClassDefiner' builder and the builders
provided by the bytecode API under exploration, so I think it'd be best
to try and avoid to solve the same problem twice.
More information about the valhalla-dev