RFR: Restore Method pointer for every AOTCodeEntry
Ashutosh Mehra
asmehra at openjdk.org
Thu Aug 7 18:22:09 UTC 2025
There was a recent commit to invalidate preload entry when invalidating a normal `AOTCodeEntry`. This is done by reaching out to the preload entry through the normal `AOTCodeEntry::_method`:
https://github.com/openjdk/leyden/blob/7b7648a4c9f67be509c6fccbcbc0502648388fdc/src/hotspot/share/code/aotCodeCache.cpp#L1056-L1070
But unfortunately `AOTCodeEntry::_method` is restored only for the entries marked for preload:
https://github.com/openjdk/leyden/blob/7b7648a4c9f67be509c6fccbcbc0502648388fdc/src/hotspot/share/code/aotCodeCache.cpp#L1938-L1939
This PR fixes this bug by restoring `AOTCodeEntry::_method` for all AOTCodeEntry-s. This is achieved by using AOTCache's pointer bitmap to track `AOTCodeEntry::_method`. It removes the need to store method offset separately in the AOTCodeEntry.
It also fixes a couple of related bugs:
1. In `AOTCodeCache::finish_write()` it is possible that the AOTCodeEntry array is not properly aligned.
2. When invalidating a preload entry, it is possible that the entry has not been loaded. This triggers the assert that expects an entry to be invalidated is always loaded.
-------------
Commit messages:
- Restore Method* for every AOTCodeEntry
Changes: https://git.openjdk.org/leyden/pull/90/files
Webrev: https://webrevs.openjdk.org/?repo=leyden&pr=90&range=00
Stats: 31 lines in 2 files changed: 14 ins; 13 del; 4 mod
Patch: https://git.openjdk.org/leyden/pull/90.diff
Fetch: git fetch https://git.openjdk.org/leyden.git pull/90/head:pull/90
PR: https://git.openjdk.org/leyden/pull/90
More information about the leyden-dev
mailing list