Hidden classes + class data

forax at univ-mlv.fr forax at univ-mlv.fr
Fri Nov 22 21:03:24 UTC 2019


----- Mail original -----
> De: "mandy chung" <mandy.chung at oracle.com>
> À: "Remi Forax" <forax at univ-mlv.fr>
> Cc: "valhalla-dev" <valhalla-dev at openjdk.java.net>
> Envoyé: Vendredi 22 Novembre 2019 17:56:24
> Objet: Re: Hidden classes + class data

> On 11/22/19 6:57 AM, Remi Forax wrote:
>> Hi Mandy,
>> hi all
>>
>> I've played a little with the nestmates branch, trying to see how to
>> re-implement the reflection API based on the method handle API.
>>
>> https://gist.github.com/forax/d0f0034190bc479b86ce977fb94ca176
>>
>> A question, correct me if i'm wrong but every hidden classes has its own
>> bytecode array even when i call defineHiddenClassWithClassData several times
>> with the same byte array ?
> 
> Yes it does.  It clones the given byte array to avoid it might be
> modified after any kind of validation.  Lookup::defineClass does the
> clone too.   Perhaps we have to rethink about the security aspect vs the
> overhead of cloning ?
> 

Apart what Brian said about Array 2.0, i've no real solution.

>> Also, is it possible to have a Lookup.defineClass variation that takes a class
>> data as parameter but do not create a hidden class, something like
>>    Class<?> defineClassWithClassData(byte[] bytes, Object classData, boolean
>>    initialize)
>>
>> It would be very convenient in order to generate a something like a lambda body
>> (not the lambda adapter/proxy) where you want it to appear in th stacktrace
>> because it's a code produced by a user.
> 
> Does this also need access to its nestmate?  

no, it's a plain java class that needs a classData object.

> Our intent is to limit the dynamic nestmates to hidden classes as the current scope for this work.
> Separate the extension of dynamic nestmates to ordinary classes in the future.

again, correct me if i'm wrong, technically, it's not really dynamic nestmates, it's more nest host delegation ?
The hidden class being able to delegate all the security checks to another class.



> 
> Mandy

Rémi



More information about the valhalla-dev mailing list