Integrated: 8297290: Use int indices to reference CDS archived primitive mirrors

Ioi Lam iklam at openjdk.org
Wed Nov 30 05:38:20 UTC 2022


On Mon, 21 Nov 2022 05:45:42 GMT, Ioi Lam <iklam at openjdk.org> wrote:

> In CDS, when archived class metadata reference an object in the archive heap, it's usually done using an integer index, which can be passed to `HeapShared::get_root(int)` to retrieve the object. This way, we don't need to worry if the archive heap has been relocated. E.g.,
> 
> 
> oop Klass::archived_java_mirror() {
>   assert(has_archived_mirror_index(), "must have archived mirror");
>   return HeapShared::get_root(_archived_mirror_index);
> }
> 
> However, for the primitive mirror objects (in `Universe::_mirrors[]`, which point to the `java.lang.Class` instances of the Java primitive types such as `int`, `float`, etc), we are still using a direct oop reference.
> 
> For consistency, we should change this code to use the same int indices as the rest of the system. This will also make it simpler to optimize the layout of the CDS archive heap (e.g., in [JDK-8234679](https://bugs.openjdk.org/browse/JDK-8234679)).
> 
> Testing: passed tiers 1-4

This pull request has now been integrated.

Changeset: c7a679fb
Author:    Ioi Lam <iklam at openjdk.org>
URL:       https://git.openjdk.org/jdk/commit/c7a679fbdd7c775cdb931a560b498a17b9828f63
Stats:     95 lines in 6 files changed: 44 ins; 20 del; 31 mod

8297290: Use int indices to reference CDS archived primitive mirrors

Reviewed-by: ccheung

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

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


More information about the hotspot-runtime-dev mailing list