> # 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
Damon Fenacci has updated the pull request incrementally with one additional commit since the last revision: JDK-8377351: add InlineTypePassFieldsAsArgs condition ------------- Changes: - all: https://git.openjdk.org/valhalla/pull/2217/files - new: https://git.openjdk.org/valhalla/pull/2217/files/d5671933..a7f2fb68 Webrevs: - full: https://webrevs.openjdk.org/?repo=valhalla&pr=2217&range=02 - incr: https://webrevs.openjdk.org/?repo=valhalla&pr=2217&range=01-02 Stats: 9 lines in 1 file changed: 6 ins; 0 del; 3 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
