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