RFR: 8298610: Refactor archiving of ConstantPool::resolved_references()

Ioi Lam iklam at openjdk.org
Thu Jan 19 00:47:38 UTC 2023


On Wed, 18 Jan 2023 02:39:43 GMT, David Holmes <dholmes at openjdk.org> wrote:

>> This is another prerequisite for [JDK-8296344](https://bugs.openjdk.org/browse/JDK-8296344).
>> 
>> Before this PR, when archiving the objArray of `ConstantPool::resolved_references()` 
>> - We call `HeapShared::find_archived_heap_object()` to look up archived copies of the Strings.
>> - We allocate a copy of the objArray inside a safepoint.
>> 
>> This violates the requirements [1] and [2] as stated in [JDK-8298600](https://bugs.openjdk.org/browse/JDK-8298600). 
>> 
>> After this PR, we no longer do the above.
>
> src/hotspot/share/cds/heapShared.cpp line 298:
> 
>> 296:   assert(UseG1GC, "implementation limitation");
>> 297:   size_t sz = align_up(o->size() * HeapWordSize, ObjectAlignmentInBytes);
>> 298:   size_t max = /*G1*/HeapRegion::min_region_size_in_words() * HeapWordSize;
> 
> This code needs to be inside an `INCLUDE_G1GC` guard does it not?

This code is inside `#if INCLUDE_CDS_JAVA_HEAP`, which is enabled only if `INCLUDE_G1GC` is defined.

We have other code within `INCLUDE_CDS_JAVA_HEAP` that unconditionally access G1 APIs. These will be fixed when we remove all dependencies of G1 from the CDS heap dumping code (see [JDK-8296344](https://bugs.openjdk.org/browse/JDK-8296344) )

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

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


More information about the hotspot-runtime-dev mailing list