Integrated: 8358680: AOT cache creation fails: no strings should have been added

Ioi Lam iklam at openjdk.org
Thu Jul 3 15:34:55 UTC 2025


On Mon, 16 Jun 2025 03:30:40 GMT, Ioi Lam <iklam at openjdk.org> wrote:

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

This pull request has now been integrated.

Changeset: 3daa03c3
Author:    Ioi Lam <iklam at openjdk.org>
URL:       https://git.openjdk.org/jdk/commit/3daa03c30f8e6ab9c498edb7d59346ce0b30450f
Stats:     65 lines in 8 files changed: 47 ins; 2 del; 16 mod

8358680: AOT cache creation fails: no strings should have been added

Co-authored-by: Aleksey Shipilev <shade at openjdk.org>
Reviewed-by: coleenp, shade

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

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


More information about the hotspot-dev mailing list