> On Dec 2, 2020, at 3:53 AM, Remi Forax <fo...@univ-mlv.fr> wrote:
> 
> Using a condy that returns a String instead of a method descriptor in the 
> bytecode ?
> I'm currently trying to remove the uses of Unsafe.defineAnonymousClass to use 
> Lookup.defineHiddenClass instead.
> There is one case where i dynamically patch a method descriptor so I can 
> select how many arguments will be sent to a closure,
> i.e. in the bytecode i put all arguments on the stack but because i've 
> patched the callee descriptor, only some of them will be used.
> 
> I see defineAnonymousClass has a way to push data to a template class file 
> and defineHiddenClass has a way to pull the data from the template class file.
> But i can not currently pull data that will be used by a NameAndType info 
> because the descriptor_index has to be a Constant_Utf8 index and can not be a 
> condy with a String as descriptor.

The trouble I see with changing NameAndType is that verification needs a static 
string. At that stage, it's too early to be resolving condys.

> This is related to Lazy static final field [1] and also to class templating 
> in general because it equivalent to seeing all the template holes as condy 
> even if it"s less efficient because you need to duplicate the whole constant 
> pool.

Lazy static fields, if I understand the proposal correctly, use a condy to 
determine the _value_ of the field, but not its _type_. Linkage behavior is 
unchanged.

Similarly, our preferred story for templating right now is to use normal Utf8 
strings for descriptors, and give each species different side-channel type 
information, computed via condy. This side information is needed fairly early, 
but verification is entirely descriptor-string-based.

Reply via email to