Status of Anno Class loader with constant patches?

Rémi Forax forax at univ-mlv.fr
Thu Jan 6 10:18:08 PST 2011


On 01/06/2011 05:42 PM, Mark Roos wrote:
> Thanks to all for the suggestions on providing live constants to a 
> method.
>
> I must admit that I was impressed with how the constant patch approach 
> worked.
> As my constants are defined using an utf8 string it was easy to use 
> some unused
> constant type tags to mark my constants.  The loader then searched for 
> them,
> created a patch from the string and then converted the tag to the utf8 
> tag.
> Load the class and done.  Very nice.
>
> But I was worried that this was not mainstream.  So Remi's inputs were 
> good.
> My first attempt was ugly.  Ugly in that the constant pool went wild. 
>  For each
> constant ( and a method could have a hundred or so ) I needed an 
> invokeDynamic,
> a bootstrap table entry and my constant string.  After thinking a bit 
> ( always a
> good thing to try) I realized that the name part of the invoke dynamic 
> could
> carry the constant.  So now I have a shared bootstrap, and a per 
> constant invokeDynamic,
> nameAndType and constant.
>
> Not as pretty as the pool patching but good enough.  My only concern 
> will be how well
> it gets optimized and that I will leave to the experts.
>
> Now on to airity and the unfortunate issue that my stack order is 
> opposite that of Java
> ('this' is at the end not the beginning)

For the stack order, your bytecode generator should just generate arguments
in reverse order or if you're lazy, you can use 
MethodHandles.permuteArguments().

>
> regards
> mark

Rémi

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.openjdk.java.net/pipermail/mlvm-dev/attachments/20110106/abc65732/attachment.html 


More information about the mlvm-dev mailing list