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