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