<html><body><div style="font-family: arial, helvetica, sans-serif; font-size: 12pt; color: #000000"><div><br></div><div><br></div><hr id="zwchr" data-marker="__DIVIDER__"><div data-marker="__HEADERS__"><blockquote style="border-left:2px solid #1010FF;margin-left:5px;padding-left:5px;color:#000;font-weight:normal;font-style:normal;text-decoration:none;font-family:Helvetica,Arial,sans-serif;font-size:12pt;"><b>From: </b>"Brian Goetz" <brian.goetz@oracle.com><br><b>To: </b>"Dan Heidinga" <heidinga@redhat.com><br><b>Cc: </b>"leyden-dev" <leyden-dev@openjdk.java.net><br><b>Sent: </b>Thursday, August 4, 2022 6:36:27 PM<br><b>Subject: </b>Re: Bytecode transformation investigation<br></blockquote></div><div data-marker="__QUOTED_TEXT__"><blockquote style="border-left:2px solid #1010FF;margin-left:5px;padding-left:5px;color:#000;font-weight:normal;font-style:normal;text-decoration:none;font-family:Helvetica,Arial,sans-serif;font-size:12pt;"><font size="4"><font face="monospace">Yes, sorry for the delay, I've
been trying to organize my thoughts on this. <br><br>
Overall I am very happy to see this investigation. It is
obviously relevant to a number of points across the Leyden
spectrum. I had done a related thought experiment at one point
about behavioral differences, and came up with a similar list
with respect to LambdaMetafactory:<br></font></font><br>
<font size="4"><font face="monospace"><font size="4"><font face="monospace"> - proxy class goes from hidden to
non-hidden;<br>
- perturbs the set of nestmates of both the proxy class and
capturing class;<br>
- potentially perturbs the timing of loading the proxy
class (though this can be controlled);<br>
- freezing of bootstrap behavior -- if the bootstrap
behavior were to change between build time and runtime
(e.g., different JDK), any changes wouldn't be reflected in
the execution. <br><br>
Your "stack traces" observation wasn't on my list, so that's
a good catch. </font></font></font></font></blockquote><div><br></div><div>also, you can not change the fields of the classes by reflection and the field access are constant folded, the last one is vicious because it means that the performance are not the same.<br data-mce-bogus="1"></div><div><br data-mce-bogus="1"></div><div>Rémi<br data-mce-bogus="1"></div><div><br></div></div></div></body></html>