# Issue
AOT‑cached c2i adapters can mis-handle inline‑buffer oops when the JVM runs 
with a different compressed‑oops mode than the one used when the AOT cache was 
created, leading to wrong object decoding and test failures/crashes.

# Cause
Adapters only need this special handling in Valhalla because inline types are 
flattened and require heap buffers during c2i transitions, which are decoded 
inside the adapter. If the runtime compressed‑oops settings (UseCompressedOops, 
shift, base) differ from the AOT‑creation settings, the adapter decodes those 
oops incorrectly (non‑Valhalla adapters don’t decode inline‑buffer oops, so 
they don’t hit this path).

# Fix
During AOT cache verification, if we detect any mismatch in compressed‑oops 
flag, shift, or base, we disable AOT adapter caching, forcing adapters to be 
regenerated at runtime with the correct configuration (this mirrors what the VM 
already does for AOT stub caching). Logging has been slightly modified for 
consistency.

# Testing
Tier 1-3+
JBS issue failing tests using `--enable-preview`
`test/hotspot/jtreg/runtime/cds/appcds/aotCode/AOTCodeCompressedOopsTest.java` 
had to be adapted to reflect the modified log

-------------

Commit messages:
 - JDK-8377351: partially revert log change
 - JDK-8377351: [lworld] runtime/clinit/ClassInitBarrier.java crashes with 
SIGSEGV/EAV with AOT class linking and --enable-preview

Changes: https://git.openjdk.org/valhalla/pull/2217/files
  Webrev: https://webrevs.openjdk.org/?repo=valhalla&pr=2217&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8377351
  Stats: 11 lines in 2 files changed: 4 ins; 0 del; 7 mod
  Patch: https://git.openjdk.org/valhalla/pull/2217.diff
  Fetch: git fetch https://git.openjdk.org/valhalla.git pull/2217/head:pull/2217

PR: https://git.openjdk.org/valhalla/pull/2217

Reply via email to