RFR: 8276658: Clean up JNI local handles code [v2]
Patricio Chilano Mateo
pchilanomate at openjdk.java.net
Fri Nov 12 15:15:35 UTC 2021
On Thu, 11 Nov 2021 13:58:06 GMT, Coleen Phillimore <coleenp at openjdk.org> wrote:
>> JNI Local handles can only be created by JavaThread (there's an assert in make_local) but the fields are added to Thread.
>> Move the fields to JavaThread and adding JavaThread* argument.
>> Also, the global freelist isn't very useful now that global JNI handles don't use JNIHandleBlock, so the locking that claims incorrectly to block for safepoint is removed.
>> Lastly, there's at least 3 places that duplicate pushing a new JNIHandleBlock to the thread for temporarily adding JNI local handles. These have been moved to common code with a JNIHandleMark object, moved from jvmci code.
>> The commits are separate to help reviewing, but the entire change has been tested together with tier1-6.
>> The commits in this change have been performance tested individually and together with no meaningful differences from mainline.
>
> Coleen Phillimore has updated the pull request incrementally with one additional commit since the last revision:
>
> Add _is_running initialization.
Hi Coleen,
Cleanup looks good to me.
Thanks,
Patricio
src/hotspot/share/jfr/dcmd/jfrDcmds.cpp line 181:
> 179: JNIHandleMark jni_handle_management(THREAD);
> 180:
> 181: DEBUG_ONLY(JfrJavaSupport::check_java_thread_in_vm(THREAD));
This method will call into Java below which already checks the thread is in vm so maybe this is not necessary. Even construct_dcmd_instance() has that assert.
-------------
Marked as reviewed by pchilanomate (Committer).
PR: https://git.openjdk.java.net/jdk/pull/6336
More information about the serviceability-dev
mailing list