RFR: 8253540: InterpreterRuntime::monitorexit should be a JRT_LEAF function

Daniel D.Daugherty dcubed at openjdk.java.net
Wed Sep 23 17:29:50 UTC 2020


On Wed, 23 Sep 2020 14:32:21 GMT, Coleen Phillimore <coleenp at openjdk.org> wrote:

> That the monitor has already been unlocked, or is a null stacklock monitor has been already checked in the caller, so
> the code that makes it a JRT_ENTRY_NO_ASYNC is unnecessary.
> Making it a JRT_LEAF like the compiled method entries makes it safer. We know it can never safepoint and
> unintentionally install a async exception.
> Tested with tier1-6.

Changes requested by dcubed (Reviewer).

src/hotspot/share/interpreter/interpreterRuntime.cpp line 746:

> 744:   if (elem == NULL || h_obj()->is_unlocked()) {
> 745:     THROW(vmSymbols::java_lang_IllegalMonitorStateException());
> 746:   }

In the case of an unbalanced monitorexit(), you are losing
the throwing of the IllegalMonitorStateException here.
At one point, we had at least one test that used JNI MonitorExit()
to induce an unbalanced monitorexit() and it verified that the
IllegalMonitorStateException was thrown.

-------------

PR: https://git.openjdk.java.net/jdk/pull/320


More information about the hotspot-runtime-dev mailing list