RFR: 8331087: Move immutable nmethod data from CodeCache

Dean Long dlong at openjdk.org
Sat Apr 27 00:56:04 UTC 2024


On Fri, 26 Apr 2024 21:16:03 GMT, Vladimir Kozlov <kvn at openjdk.org> wrote:

> Move immutable nmethod's data from CodeCache to C heap. It includes `dependencies, nul_chk_table, handler_table, scopes_pcs, scopes_data, speculations, jvmci_data`. It amounts for about 30% (optimized VM) of space in CodeCache.
> 
> Use HotSpot's `os::malloc()` to allocate memory in C heap for immutable nmethod's data. Bail out compilation if allocation failed.
> 
> Shuffle fields order and change some fields size from 4 to 2 bytes to avoid nmethod's header size increase.
> 
> Tested tier1-5, stress,xcomp
> 
> Our performance testing does not show difference.
> 
> Example of updated `-XX:+PrintNMethodStatistics` output is in JBS comment.

src/hotspot/share/code/nmethod.cpp line 1484:

> 1482:       // Calculate positive offset as distance between the start of stubs section
> 1483:       // (which is also the end of instructions section) and the start of the handler.
> 1484:       CHECKED_CAST(_unwind_handler_offset, int16_t, (_stub_offset - code_offset() - offsets->value(CodeOffsets::UnwindHandler)));

Suggestion:

      int unwind_handler_offset = code_offset() + offsets->value(CodeOffsets::UnwindHandler);
      CHECKED_CAST(_unwind_handler_offset, int16_t, _stub_offset - unwind_handler_offset);

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

PR Review Comment: https://git.openjdk.org/jdk/pull/18984#discussion_r1581644356


More information about the serviceability-dev mailing list