RFR: 8331087: Move immutable nmethod data from CodeCache

Vladimir Kozlov kvn at openjdk.org
Sun Apr 28 02:36:09 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.

@dean-long and @dougxc  

I am thinking may be I should not bailout  when `malloc` (or other space reservation in a future) failed to allocate memory for immutable data. But instead increase nmethod size and put immutable data there (as before).  Then we bailout only when CodeCache is full as before and we don't need `out_of_memory` failure reason. May be only record that in logs (when they are enabled).

What do you think?

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

PR Comment: https://git.openjdk.org/jdk/pull/18984#issuecomment-2081297482


More information about the hotspot-dev mailing list