Hidden classes + class data

Mandy Chung mandy.chung at oracle.com
Mon Dec 2 19:55:59 UTC 2019



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?

Mandy


More information about the valhalla-dev mailing list