RFR: JDK-8296764 NMT: reduce loads in os::malloc

Thomas Stuefe stuefe at openjdk.org
Thu Nov 10 14:30:30 UTC 2022


We read the NMT level at every ps::malloc/realloc/free etc, even if NMT is off. That is unavoidable. But we also read a second variable that shadows the NMT level `_nmt_was_initialized`. That state is synonymous with NMT level "unknown," so there is no need for this second load.

Furthermore, NMT level is volatile. That had been necessary in older times since we used to shut down NMT on resource exhaustion. But since [JDK-8256844](https://bugs.openjdk.org/browse/JDK-8256844), NMT level is fixed at initialization, so we can remove the volatile specifier.

Patch 
- removes `_nmt_was_initialized` and redirects it to `MemTracker::is_initialized()`, which gets inlined to a load of NMT level. 
- makes NMT level non-volatile
- removes _is_nmt_env_valid, which had been dead code

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

Commit messages:
 - remove __nmt_was_initialized; make nmt level non-volatile

Changes: https://git.openjdk.org/jdk/pull/11080/files
 Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=11080&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8296764
  Stats: 22 lines in 5 files changed: 2 ins; 9 del; 11 mod
  Patch: https://git.openjdk.org/jdk/pull/11080.diff
  Fetch: git fetch https://git.openjdk.org/jdk pull/11080/head:pull/11080

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


More information about the hotspot-runtime-dev mailing list