<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">On Jul 5, 2017, at 10:59 AM, Paul Sandoz <<a href="mailto:paul.sandoz@oracle.com" class="">paul.sandoz@oracle.com</a>> wrote:<br class=""><div><blockquote type="cite" class=""><br class="Apple-interchange-newline"><div class=""><span style="font-family: Helvetica; font-size: 16px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">I strongly suspect we can specify a safe version of Unsafe.defineAnonymousClass (minus constant pool patching) independent of nest mates. I believe that is desirable on it’s own as part of the replace unsafe functionality and if that can help MVT then even better!</span><br style="font-family: Helvetica; font-size: 16px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""></div></blockquote></div><br class=""><div class="">We have an API point already for this, with a pre-planned "hole" for the functionality you want.</div><div class=""><br class=""></div><div class="">If the VCC says "L=MethodHandles.lookup().in(DVT.class)" the Lookup should retain the PRIVATE access mode.</div><div class=""><br class=""></div><div class="">Then, L.defineClass(...) is specified to throw an exception when it sees the PRIVATE access mode, but what is supposed to happen in the future is that the newly defined class is inserted into the nest of the Lookup.lookupClass.</div><div class=""><br class=""></div><div class="">In the very specific case of a DVT, it would be reasonable to allow the injection you want, Paul, without throwing the required exception.  After all, the DVT's are going away, so there's no compatibility risk for future changes to the API.</div><div class=""><br class=""></div><div class="">The challenge to provide this for general use is to specify what happens when the Lookup has PRIVATE access mode.  The best way to spec. this (IMO) is as a forcible injection into the nest of the Lookup.lookupClass.  That requires nestmates to be specified *first*, and *then* we can specify what it means to inject a new (dynamically defined) nestmate.</div><div class=""><br class=""></div><div class="">— John</div></body></html>