RFR: 8291555: Implement alternative fast-locking scheme [v62]

Quan Anh Mai qamai at openjdk.org
Wed Apr 26 11:26:57 UTC 2023


On Wed, 26 Apr 2023 10:52:29 GMT, Roman Kennke <rkennke at openjdk.org> wrote:

>> This stub has 2 instructions, and it seems not really uncommon, is it worth it to have a stub here?
>
> Ok I will change the value.
> Yes, this path is relatively uncommon (monitors are inflated only once, and not necessarily via ANONYMOUS handshake, but used often), and this path is performance relevant. The original impl had the two instructions inlined, but the common forward branch impacted performance.

I see, thanks a lot for your explanations

>> Also, I think this `if (LockingMode == LM_LIGHTWEIGHT)` block should be moved out of the enclosing if block, we are checking for inflation here, it seems logical to separate the inflation path out.
>
> How would I check if we are emitting code?
> 
> I am not sure I understand. The check for ANONYMOUS is only relevant when we observe an already-inflated monitor. I think this is the right place to put it.

The entry barrier does this:

https://github.com/openjdk/jdk/blob/86f41a4c42268d364175263804eb4d1ce82fa943/src/hotspot/cpu/x86/c2_MacroAssembler_x86.cpp#L139

`testptr(tmpReg, markWord::monitor_value)` is checking for inflation, and the following `if` block acts when inflation is detected, what I mean is to move the whole enclosed if down out of the `if (LockingMode != LM_MONITOR)`

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

PR Review Comment: https://git.openjdk.org/jdk/pull/10907#discussion_r1177712615
PR Review Comment: https://git.openjdk.org/jdk/pull/10907#discussion_r1177711237


More information about the serviceability-dev mailing list