RFR(s): 8228758: assert(_no_handle_mark_nesting == 0) failed: allocating handle inside NoHandleMark
david.holmes at oracle.com
Fri Aug 30 01:24:19 UTC 2019
On 29/08/2019 10:48 pm, Robbin Ehn wrote:
> 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
> 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.
Why did you extend this to the JNI_QUICK_ENTRY case when the impacted
code was only a JVM_QUICK_ENTRY? The expanded scope of the change seems
unnecessary given this is just a workaround for a particular failure mode.
> Passes t1-3 (and performance benchmarks)
> Thanks, Robbin
More information about the hotspot-runtime-dev