RFR: 8365229: ARM32: c2i_no_clinit_check_entry assert failed after JDK-8364269
Aleksey Shipilev
shade at openjdk.org
Tue Aug 12 14:59:14 UTC 2025
On Tue, 12 Aug 2025 14:51:47 GMT, Ashutosh Mehra <asmehra at openjdk.org> wrote:
> If I understand correctly offsets in AdapterBlob are only used when loading the blob from the AOTCodeCache to restore the address in AdapterHandlerEntry. (see `AdapterHandlerLibrary::lookup_aot_cache`). So if -1 is encountered, we just set the address to nullptr.
Yes, that _almost_ works, but you need to put something into the *offset* field here:
AdapterBlob::AdapterBlob(int size, CodeBuffer* cb, int entry_offset[AdapterBlob::ENTRY_COUNT]) :
BufferBlob("I2C/C2I adapters", CodeBlobKind::Adapter, cb, size, sizeof(AdapterBlob)) {
...
_c2i_offset = entry_offset[1];
_c2i_unverified_offset = entry_offset[2];
_c2i_no_clinit_check_offset = entry_offset[3]; // <------
CodeCache::commit(this);
}
If we propagate `-1` there, we then need to handle it around the accessors that compute the actual address as well. This can be done, but it would be more intrusive.
-------------
PR Comment: https://git.openjdk.org/jdk/pull/26746#issuecomment-3179709727
More information about the hotspot-compiler-dev
mailing list