[External] : Re: MemorySegment.ofAddress(...).reinterpret(...)
Brian S O'Neill
bronee at gmail.com
Fri Jul 7 16:11:32 UTC 2023
When I obtain a MethodHandle, a module access check is performed. When I
invoke it, no check is performed, and a static final reference to a it
gets fully optimized.
It seems to me that if I were to obtain access to the copy method (and
the get/set methods) via a MethodHandle, then the restricted method
check only needs to be performed once.
Granted, this approach is a little bit ugly from an API perspective, but
MethodHandles are already a key component of the ffm API. A MethodHandle
transformation could also be performed automatically by the compiler (at
some level), but that's probably going too far.
On 2023-07-07 08:55 AM, Jorn Vernee wrote:
> Well, the implementation of a restricted method doesn't know whether the
> caller's module has already been checked :) That is tracked on a
> per-module basis, but either way we have to walk the stack to get the
> caller's module.
>
> Jorn
>
> On 07/07/2023 17:51, Brian S O'Neill wrote:
>> Is the restricted method check performed every single time? Why? The
>> restriction applies to the module, so it only really needs to be
>> checked once.
>>
>> On 2023-07-07 08:32 AM, Jorn Vernee wrote:
>>
>>> We can't just drop an array bounds check, even if we were to make the
>>> method restricted. (Besides, a restricted method needs to check if
>>> the caller has native access, which adds its own overhead)
>>>
More information about the panama-dev
mailing list