Hidden classes + class data

Mandy Chung mandy.chung at oracle.com
Fri Nov 22 16:56:24 UTC 2019



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?

> 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?  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.

Mandy



More information about the valhalla-dev mailing list