RFR: 8301404: Factor out os::malloc with os::realloc common code, so that we only have 1 code path [v2]

Gerard Ziemski gziemski at openjdk.org
Fri Mar 28 14:33:55 UTC 2025


> This is the 2nd time I am proposing this (controversial?) change, but this time I do have performance numbers, which indicate no change in speed (using NMTBenchmark from #23786):
> 
> proposed:
> 
> time:72,642,827[ns]
> [samples:807,804] [NMT headers:382,064]
> [malloc#:588,703] [realloc#:12,462] [free#:206,639]
> memory requested:57,274,288 bytes, allocated:69,004,800 bytes
> malloc overhead:4,853,360 bytes [8.47%], NMT headers overhead:6,877,152 bytes [12.01%]
> existing code:
> 
> time:73,085,446[ns]
> [samples:807,804] [NMT headers:382,064]
> [malloc#:588,703] [realloc#:12,462] [free#:206,639]
> memory requested:57,274,288 bytes, allocated:69,004,800 bytes
> malloc overhead:4,853,360 bytes [8.47%], NMT headers overhead:6,877,152 bytes [12.01%]
> Note: the NMTBenchmark reports realloc(nullptr) as mallocs(), which is why both versions show the same count for mallocs/reallocs.
> 
> The performance is virtually the same where I sampled each test 30 times and took the best (the shortest).
> 
> This proposed change factors out the common code and simplifies both os::malloc and os::realloc. We were able to reduce malloc from 44 lines down to 8 (saving of 36 lines) and realloc from 84 to 55 (29 lines).
> 
> To me the most important part here is that we reduce the number of times that NMT has to interact with the native allocation code.

Gerard Ziemski has updated the pull request with a new target base due to a merge or a rebase. The incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains 15 additional commits since the last revision:

 - Merge remote-tracking branch 'upstream/master' into JDK-8301404
 - work
 - work
 - work
 - work
 - work:
 - work
 - work
 - work
 - work
 - ... and 5 more: https://git.openjdk.org/jdk/compare/0d33a7af...01470b34

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

Changes:
  - all: https://git.openjdk.org/jdk/pull/24189/files
  - new: https://git.openjdk.org/jdk/pull/24189/files/abfb5f2c..01470b34

Webrevs:
 - full: https://webrevs.openjdk.org/?repo=jdk&pr=24189&range=01
 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=24189&range=00-01

  Stats: 52215 lines in 1601 files changed: 12489 ins; 34879 del; 4847 mod
  Patch: https://git.openjdk.org/jdk/pull/24189.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/24189/head:pull/24189

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


More information about the hotspot-runtime-dev mailing list