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