RFR(s): 8228758: assert(_no_handle_mark_nesting == 0) failed: allocating handle inside NoHandleMark
robbin.ehn at oracle.com
Thu Aug 29 12:48:38 UTC 2019
Hi all, please review.
The JNI_QUICK_ENTRY/JVM_QUICK_ENTRY skips creating the HandleMarkCleaner,
instead they have a NoHandleMark. Handshakes can be executed by the JavaThread
itself, thus might require a HandleMark. QUICK entries allow polls for
safepoint/handshakes, if a handshake is executed and a HandleMark is created we
hit this assert.
HandleMarkCleaner have previous been optimized for inlining, thus cheap.
Performance benchmarks shows no benefit of not allowing HandleMark.
This changeset removes the the QUICK entry and avoids this issue.
Note that JNI_QUICK_ENTRY also don't have WeakPreserveExceptionMark,
so it's changed to JNI_ENTRY_NO_PRESERVE.
Passes t1-3 (and performance benchmarks)
More information about the hotspot-runtime-dev