> # 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

Reply via email to