RFR: 8296440: Remove Method* handling from cleanup_inline_caches_impl

Vladimir Kozlov kvn at openjdk.org
Thu Mar 16 00:20:20 UTC 2023


On Wed, 1 Mar 2023 11:07:36 GMT, Richard Reingruber <rrich at openjdk.org> wrote:

> This PR replaces cleaning of static stubs in CompiledMethod::cleanup_inline_caches_impl() with a guarantee that it is actually not needed because the holder of the embedded target Method* is alive if the caller nmethod is not unloading.
> 
> The holder of the target Method* has to be alive because it is reachable from the caller nmethod's oop pool. This is checked by `check_path_to_callee()` when a statically bound call gets resolved.
> 
> C2i entry barriers can be removed for the same reason.
> 
> Testing:
> 
> Many rounds in our CI testing which includes most JCK and JTREG tests, Renaissance benchmark and SAP specific tests with fastdebug and release builds on the standard platforms plus PPC64.
> 
> I've also done tier1 and tier2 tests with -XX:-Inline and tier1 tests with ZGC.
> 
> I've started hotspot and jdk tier1 tests with -Xcomp. They were not finished when I stopped them after 24h.

I hit guarantee in tier7 running our closed tests with JRuby and `-Xcomp -ea -esa -XX:CompileThreshold=100` flags:

#  Internal Error (/workspace/open/src/hotspot/share/runtime/sharedRuntime.cpp:1411), pid=1150904, tid=1150907
#  guarantee(false) failed: Missing dependency resolving optimized virtual (invokeinterface) call to  jnr.enxio.channels.Native$LibC$jnr$ffi$2::read

Unfortunately I can't share tests.

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

PR: https://git.openjdk.org/jdk/pull/12802


More information about the hotspot-dev mailing list