RFR: 8269476: Skip nmethod entry barrier if there is no oops in the jit code [v2]

Zhengyu Gu zgu at openjdk.java.net
Mon Jun 28 16:21:06 UTC 2021


On Mon, 28 Jun 2021 11:21:53 GMT, 王超 <github.com+25214855+casparcwang at openjdk.org> wrote:

>> Lots of c1 and c2 jit methods do not contain any oop, so the nmethod entry barrier can be skipped.
>> 
>> 1, c1 jit code will patch oops or Klass into the nmethod, so the entry barrier cannot directly be eliminated, current implementation uses a jump instruction to replace the jcc instruction. If the jit code is patched to contain oops, the entry barrier is patched back to the jcc instruction.
>> 
>> 2, only the jit code of core library methods do not contain any oops.
>> 
>> 3, currently only support zgc
>
> 王超 has updated the pull request incrementally with one additional commit since the last revision:
> 
>   Only implement in x86

nmethod entry barrier is inserted in SharedRuntime::generate_native_wrapper(). 

At that point, the method is already compiled and its metadata information should be available. It should be possible to determine if there are any embedded oops there and elide barrier completely if there is none.

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

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


More information about the hotspot-dev mailing list