RFR 8157310: jdk.dynalink.linker.support.Lookup should have more checks before adding module read link
Attila Szegedi
szegedia at gmail.com
Fri May 20 07:41:31 UTC 2016
Seconded, this is indeed better. +1
> On 20 May 2016, at 10:38, Hannes Wallnoefer <hannes.wallnoefer at oracle.com> wrote:
>
> Hi Sundar,
>
> I agree methods feel more in their place now.
>
> Hannes
>
> Am 2016-05-20 um 09:12 schrieb Sundararajan Athijegannathan:
>> Hi,
>>
>> Thanks for the review. But, I adjusted the change slightly -- moved
>> addModuleRead and caller-sensitive fallback attempt to
>> CallerSensitiveDynamicMethod itself - leaving Lookup as general
>> exception translating version of j.l.invoke.MethodHandle.Lookup.
>>
>> I think this is better caller sensitivity handling moved to specific
>> place and Lookup remains a generic API.
>>
>> http://cr.openjdk.java.net/~sundar/8157310/webrev.01/
>>
>> Thanks,
>>
>> -Sundar
>>
>>
>> On 5/20/2016 12:22 PM, Attila Szegedi wrote:
>>> +1. Nice work!
>>>
>>>> On 19 May 2016, at 15:28, Sundararajan Athijegannathan <sundararajan.athijegannathan at oracle.com> wrote:
>>>>
>>>> Please review http://cr.openjdk.java.net/~sundar/8157310/ for
>>>> https://bugs.openjdk.java.net/browse/JDK-8157310
>>>>
>>>> What is this fix?
>>>>
>>>> * When unreflecting caller sensitive methods, dynalink uses specific
>>>> Lookup of actual caller (instead of publicLookup) - in nashorn's case
>>>> it's be the Lookup of script class.
>>>>
>>>> * Script class may not have read link to the module of the class (of
>>>> caller sensitive member). If there is any IllegalAccessError, dynalink
>>>> adds the read link and tries to
>>>>
>>>> unreflect again. We don't want unnecessary module link read in such
>>>> cases. Check has been added whether the package is exported from
>>>> declaring module. Note that there is no security issue here. Even
>>>> before the fix, module read edge does not give any capability. unreflect
>>>> call after adding unnecessary read line would still fail for
>>>> non-exported package case. There were unnecessary module read links
>>>> created - which is being avoided now.
>>>>
>>>> * Additional "API" in Lookup.java slipped from jigsaw code into
>>>> jdk9-dev. Those unreflectCallerSensitive and
>>>> unreflectConstructorCallerSensitive were meant to be 'interim' somehow
>>>> slipped. Now, only unreflect and unreflectConstructor in Lookup. Caller
>>>> sensitiveness is hidden in the implementation. These methods were never
>>>> APIs when dynalink API was created.
>>>>
>>>> Thanks,
>>>>
>>>> -Sundar
>>>>
>>>>
>
More information about the nashorn-dev
mailing list