> Am 25.01.2017 um 17:39 schrieb Attila Szegedi <szege...@gmail.com>: > > Well, filterInternalObjects itself doesn’t change the method handle type. I > guess what happens is that the delegate BeansLinker.getGuardedInvocation > returned a handle that it already adapted to the call site type. But you’re > right that the filterInternalObjects here was both redundant and harmful; > BeanLinker calls it where necessary. >
Yes, I realised that after I sent the message. I added a note to the issue as well: https://bugs.openjdk.java.net/browse/JDK-8172006?focusedCommentId=14044057&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-14044057 Thanks a lot! Hannes > +1. > > Glad you got to the bottom of this, it felt really scary how the original > reproducer seemingly depended on the shape of not-yet-evaluated expressions > (I completely forgot about shared scope…) > > Attila. > >> On 25 Jan 2017, at 17:32, Hannes Wallnöfer <hannes.wallnoe...@oracle.com> >> wrote: >> >> The problem is that the first invocation of filtertInternalObjects (that >> happens closer to the target handle) changes the method handle’s parameter >> type from java.util.List to java.lang.Object, so the outer >> filtertInternalObjects invocation did not see the List target type. >> >> Hannes >> >>> Am 25.01.2017 um 17:21 schrieb Attila Szegedi <szege...@gmail.com>: >>> >>> Oh, great. I was just starting at this for a bit (after I saw you updated >>> the JIRA), and was definitely starting to suspect the filterInternalObjects >>> call in NashornBeansLinker. It still worries me that filtering would add a >>> script object mirror wrapper – the method handle’s parameter is typed as >>> List, isn’t it? DefaultInternalObjectFilter should only operate on >>> parameters declared as Object. >>> >>> Attila. >>> >>>> On 25 Jan 2017, at 17:05, Hannes Wallnöfer <hannes.wallnoe...@oracle.com> >>>> wrote: >>>> >>>> Please review: >>>> >>>> Bug: https://bugs.openjdk.java.net/browse/JDK-8172006 >>>> Webrev: http://cr.openjdk.java.net/~hannesw/8172006/webrev.00/ >>>> >>>> The final invocation of linkerServices.filterInternalObjects was >>>> redundant, and in fact caused the argument to be converted to >>>> ScripObjectMirror when the actual target type was java.util.List. As far >>>> as I can tell, linkerServices.filterInternalObjects is called elsewhere >>>> for all types of invocations. Existing tests pass, and I added a few more. >>>> >>>> Thanks, >>>> Hannes >>> >> >