RFR: 8330171: Lazy W^X swtich implementation
Sergey Nazarkin
snazarki at openjdk.org
Fri Apr 12 14:44:52 UTC 2024
An alternative for preemptively switching the W^X thread mode on macOS with an AArch64 CPU. This implementation triggers the switch in response to the SIGBUS signal if the *si_addr* belongs to the CodeCache area. With this approach, it is now feasible to eliminate all WX guards and avoid potentially costly operations. However, no significant improvement or degradation in performance has been observed. Additionally, considering the issue with AsyncGetCallTrace, the patched JVM has been successfully operated with [asgct_bottom](https://github.com/parttimenerd/asgct_bottom) and [async-profiler](https://github.com/async-profiler/async-profiler).
Additional testing:
- [x] MacOS AArch64 server fastdebug *gtets*
- [ ] MacOS AArch64 server fastdebug *jtreg:hotspot:tier4*
- [ ] Benchmarking
@apangin and @parttimenerd could you please check the patch on your scenarios??
-------------
Commit messages:
- Fix non-macos builds
- Revert "8304725: AsyncGetCallTrace can cause SIGBUS on M1"
- Remove ThreadWXEnable guard
- Lazy W^X state switch
Changes: https://git.openjdk.org/jdk/pull/18762/files
Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=18762&range=00
Issue: https://bugs.openjdk.org/browse/JDK-8330171
Stats: 325 lines in 46 files changed: 17 ins; 305 del; 3 mod
Patch: https://git.openjdk.org/jdk/pull/18762.diff
Fetch: git fetch https://git.openjdk.org/jdk.git pull/18762/head:pull/18762
PR: https://git.openjdk.org/jdk/pull/18762
More information about the shenandoah-dev
mailing list