Hidden classes + class data
maurizio.cimadamore at oracle.com
Thu Dec 5 17:02:26 UTC 2019
On 02/12/2019 19:55, Mandy Chung wrote:
> On 12/2/19 7:50 AM, Maurizio Cimadamore wrote:
>> 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.
> Yes I remember that. I agree and we should avoid solving the same
> problem twice. There was a plan to include the bytecode API in the
> JDK. Any update/news on that?
We're still hacking on that...
More information about the valhalla-dev