[prev in list] [next in list] [prev in thread] [next in thread]
List: openjdk-hotspot-runtime-dev
Subject: Integrated: 8301106: Allow archived Java strings to be moved by GC
From: Ioi Lam <iklam () openjdk ! org>
Date: 2023-03-29 23:46:27
Message-ID: qfI0_Gm5Usuj7zFhwGQ_XDhjK_EjGy-jovIJiZBnYJI=.38bafa51-978f-4c9c-85c4-dfba6bbfdcd0 () github ! com
[Download RAW message or body]
On Thu, 16 Feb 2023 19:14:15 GMT, Ioi Lam <iklam@openjdk.org> wrote:
> **Background:**
>
> Currently, the archived java strings are mapped in the G1 "[closed \
> archive](https://github.com/openjdk/jdk/blob/574b48c6925ebfb31345fc46c7d23aa4153f99b0/src/hotspot/share/gc/g1/heapRegionType.hpp#L80-L92)" \
> region. This essentially pins all the strings in memory.
> As a prerequisite for \
> ([JDK-8296263](https://bugs.openjdk.org/browse/JDK-8296263)), this PR removes the \
> requirement of pinning the archived strings. This will allow the CDS archive heap \
> to be mapped in garbage collectors that do not support object pinning.
> **Code changes:**
>
> - The archived strings are referenced through an objArray (`_shared_strings_array`) \
> to keep them alive. As a result, it's no longer necessary to pin \
> them.
> - Since it's possible for the GC to move these strings, the `_shared_table` in \
> stringTable.cpp is modified to store a 32-bit index for each archived string. This \
> index is used to retrieve the archived string from `_shared_strings_array` at \
> runtime.
> Note that CDS has a limit on the size of archived objArrays. When there's a large \
> number of strings, we use a two-level table. See the comments around \
> `_shared_strings_array` in the header file.
> **Testing**
>
> Tiers 1 - 4
This pull request has now been integrated.
Changeset: b524a741
Author: Ioi Lam <iklam@openjdk.org>
URL: https://git.openjdk.org/jdk/commit/b524a74165a901383c00fbfcbc3e842c0df02398
Stats: 310 lines in 13 files changed: 165 ins; 73 del; 72 mod
8301106: Allow archived Java strings to be moved by GC
Reviewed-by: dholmes
-------------
PR: https://git.openjdk.org/jdk/pull/12607
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic