RFR: 8358680: AOT cache creation fails: no strings should have been added [v2]

Ioi Lam iklam at openjdk.org
Fri Jun 27 16:01:19 UTC 2025


> Background: when writing the string table in the AOT cache, we do this:
> 
> 1. Find out the number of strings in the interned string table
> 2. Allocate Java object arrays that are large enough to store these strings. These arrays are used by `StringTable::lookup_shared()` in the production run.
> 3. Enter safepoint
> 4. Copy the strings into the arrays
> 
> This bug happened because:
> 
> - Step 1 is not thread safe, so it may be reading a stale version of `_items_count`
> - JIT compiler threads may create more interned strings after step 1
> 
> This PR attempts to fix both issues.

Ioi Lam has updated the pull request with a new target base due to a merge or a rebase. The incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains three additional commits since the last revision:

 - Merge branch 'master' into 8358680-aot-cache-creation-fails-with-no-strings-should-have-been-added
 - @coleenp comment: change items_count() to items_count_acquire()
 - 8358680: AOT cache creation fails: no strings should have been added

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

Changes:
  - all: https://git.openjdk.org/jdk/pull/25816/files
  - new: https://git.openjdk.org/jdk/pull/25816/files/de7ce83f..94a64f97

Webrevs:
 - full: https://webrevs.openjdk.org/?repo=jdk&pr=25816&range=01
 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=25816&range=00-01

  Stats: 22476 lines in 718 files changed: 10749 ins; 7865 del; 3862 mod
  Patch: https://git.openjdk.org/jdk/pull/25816.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/25816/head:pull/25816

PR: https://git.openjdk.org/jdk/pull/25816


More information about the hotspot-dev mailing list