RFR 8199868: Support JNI critical functions in object pinning API
Zhengyu Gu
zgu at redhat.com
Fri Jun 15 11:55:02 UTC 2018
Ping!!!! anyone? please!
- Zhengyu
On 05/02/2018 05:12 PM, Per Liden wrote:
> Hi,
>
> On 05/02/2018 09:41 PM, Zhengyu Gu wrote:
>> Hi,
>>
>> Can I have reviews for this RFR?
>>
>> This patch completes object pinning for JNI critical section, provides
>> critical native support.
>>
>> The approach is quite straightforward:
>>
>> During generating native wrapper for critical native method, it
>> generates runtime call to pin every array argument, before unpacks them.
>>
>> For pinned objects, it also needs to save them for unpinning after JNI
>> function call completes.
>>
>> If argument is passed on stack, it saves pinned object at the original
>> slot (as pin_object() may move the object). For register based
>> arguments, it reuses oop handle area (where GCLocker based
>> implementation saves register based arguments for safepoints).
>>
>> Currently, only Shenandoah uses object pinning for JNI critical
>> section, this patch has been baked quite some time there. However, I
>> am new to Runtime Stub code, I would appreciate your comments and
>> suggestions.
>>
>> I rebased patch to jdk/jdk repo.
>>
>> Webrev: http://cr.openjdk.java.net/~zgu/8199868/webrev.02/
>
> Just want to say that I would really like to see this patch go in. As
> mentioned, it completes the object pinning story and it's useful for
> other GCs too (at least ZGC and possibly G1). However, I also agree with
> Aleksey that some one who really knows this code needs to review this.
> Unfortunately that's not me. Anyone?
>
> cheers,
> Per
>
>>
>> Thanks,
>>
>> -Zhengyu
>>
>>
>> On 04/06/2018 10:35 PM, Zhengyu Gu wrote:
>>> Offline discussion with Aleksey, he suggested that
>>> pin/unpin_critical_native_array methods can be made more generic as
>>> pin/unpin_object.
>>>
>>> Updated webrev: http://cr.openjdk.java.net/~zgu/8199868/webrev.01/
>>>
>>> Test:
>>> Reran all tests, submit-hs tests still clean.
>>>
>>> Thanks,
>>>
>>> -Zhengyu
>>>
>>> On 04/06/2018 08:55 AM, Aleksey Shipilev wrote:
>>>> On 04/04/2018 07:47 PM, Zhengyu Gu wrote:
>>>>> Please review this patch that adds JNI critical native support to
>>>>> object pinning.
>>>>>
>>>>> Shenandoah does not block GC while JNI critical session is in
>>>>> progress. This patch allows it to pin
>>>>> all incoming array objects before critical native call, and unpin
>>>>> them after call completes.
>>>>>
>>>>>
>>>>> Bug: https://bugs.openjdk.java.net/browse/JDK-8199868
>>>>> Webrev: http://cr.openjdk.java.net/~zgu/8199868/webrev.00/
>>>>
>>>> Looks good to me, but somebody more savvy with runtime stub
>>>> generation should take a closer look.
>>>>
>>>> *) Should probably be "Why we are here?"
>>>>
>>>> 2867 assert(Universe::heap()->supports_object_pinning(), "Why we
>>>> here?");
>>>>
>>>> 2876 assert(Universe::heap()->supports_object_pinning(), "Why we
>>>> here?");
>>>>
>>>>
>>>> Thanks,
>>>> -Aleksey
>>>>
More information about the hotspot-dev
mailing list