Hidden classes + class data
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?
More information about the valhalla-dev