[foreign-memaccess] RFR 8225515: Remove MemoryScope from public API
Maurizio Cimadamore
maurizio.cimadamore at oracle.com
Tue Jun 11 14:23:42 UTC 2019
Fixed remaining issues and pushed - thanks!
Maurizio
On 11/06/2019 14:24, Maurizio Cimadamore wrote:
> Thanks for the review
>
> I had prepared another version which addressed some of your comments,
> and some other issues too (e.g. performance issues with heap-based
> segment allocation due to call to Unsafe which are wrappers around
> native calls).
>
> http://cr.openjdk.java.net/~mcimadamore/panama/8225515_v3/
>
> I'll take care of the other comments too
>
> Maurizio
>
> On 11/06/2019 14:04, Jorn Vernee wrote:
>> Hi,
>>
>> Some comments:
>>
>> - X-VarHandleMemoryAddressView.java.template still has an import to
>> MemoryScope, which is causing compilation to fail when doing a clean
>> build.
>>
>> In MemorySegment.java:
>> - The 'ofNative' factory methods mention equivalent code in the
>> javadoc which uses `.baseAddress()`, but I think that should be
>> dropped, since the methods return a MemorySegment, not a MemoryAddress.
>>
>> In MemorySegmentImpl.java:
>> - Bounds check in resize() and isPinned check in close() are
>> missing exception messages. For the bounds check I think it would be
>> nice to include the numbers used to do the check in the message,
>> which could save some time debugging.
>>
>> Rest looks good!
>>
>> Cheers,
>> Jorn
>>
>> Maurizio Cimadamore schreef op 2019-06-10 19:04:
>>> Here's a new revision:
>>>
>>> http://cr.openjdk.java.net/~mcimadamore/panama/8225515_v2/
>>>
>>> which fixes some javadoc issues
>>>
>>> Maurizio
>>>
>>> On 10/06/2019 14:15, Maurizio Cimadamore wrote:
>>>> Hi,
>>>> this is a followup from the discussion in [1]. Essentially, having
>>>> a MemoryScope abstraction seems a bit heavy given the use we would
>>>> make of it in the low level access API.
>>>>
>>>> The discussion sparked very useful discussions on the role of
>>>> confinement, which cannot be optional (as initially proposed):
>>>> doing so could result in rogue threads to access already freed
>>>> memory, thus resulting in a VM crash. Following that discussion,
>>>> confinement is now enforced in all memory accesses, so that we have
>>>> a clean and safe API.
>>>>
>>>> Of course, the confined model could be too restrictive in certain
>>>> cases, I'm working on a writeup to explain the problem, and
>>>> possible solutions - stay tuned.
>>>>
>>>> Here's the webrev:
>>>>
>>>> http://cr.openjdk.java.net/~mcimadamore/panama/8225515/
>>>>
>>>> Note: the webrev includes a patch (thanks Vlad!) to special case
>>>> Thread constants in the JIT (otherwise we were seeing repeated
>>>> calls to Thread.currentThread() in the profile). Performances of
>>>> this patch are really good, and only few percents away from basic
>>>> Unsafe access. There is, we believe, some more work to be done when
>>>> it comes to array-like access - in which some of the range check
>>>> eliminations (RCE) implemented by the JIT fail because we're using
>>>> long indices rather than int (which are normally used as array
>>>> indices in Java). We're working on that too.
>>>>
>>>> Cheers
>>>> Maurizio
>>>>
>>>> [1] -
>>>> https://mail.openjdk.java.net/pipermail/panama-dev/2019-May/005644.html
>>>>
>>>>
More information about the panama-dev
mailing list