RFR:8206009: Move java heap object archiving code to heapShared.hpp and heapShared.cpp

Ioi Lam ioi.lam at oracle.com
Fri Oct 5 16:17:08 UTC 2018


Looks good. Thanks!

- Ioi


On 10/4/18 10:55 PM, Jiangli Zhou wrote:
> On 10/4/18 8:16 PM, Ioi Lam wrote:
>
>>
>>
>> On 10/4/18 11:00 AM, Jiangli Zhou wrote:
>>> Hi Ioi,
>>>
>>> Thanks for the review.
>>>
>>> On 10/4/18 8:51 AM, Ioi Lam wrote:
>>>> Hi Jiangli,
>>>>
>>>> The fix looks good.
>>>>
>>>> #if INCLUDE_CDS_JAVA_HEAP
>>>>   // The mirrors are NULL if 
>>>> HeapShared::is_heap_object_archiving_allowed
>>>>   // is false.
>>>>   f->do_oop(&_int_mirror);
>>>>   f->do_oop(&_float_mirror);
>>>>
>>>> Maybe the comment should be turned into an assert?
>>> There are existing asserts in 
>>> Universe::initialize_basic_type_mirrors() already that verify the 
>>> primitive type mirrors are not NULL when 
>>> HeapShared::is_heap_object_archiving_allowed is true.
>>>
>>>     if (UseSharedSpaces &&
>>>         HeapShared::open_archive_heap_region_mapped() &&
>>>         _int_mirror != NULL) {
>>>       assert(HeapShared::is_heap_object_archiving_allowed(), "Sanity");
>>>       assert(_float_mirror != NULL && _double_mirror != NULL &&
>>>              _byte_mirror  != NULL && _byte_mirror != NULL &&
>>>              _bool_mirror  != NULL && _char_mirror != NULL &&
>>>              _long_mirror  != NULL && _short_mirror != NULL &&
>>>              _void_mirror  != NULL, "Sanity");
>>
>> But these asserts are the opposite of what the comment says: "The 
>> mirrors are NULL if HeapShared::is_heap_object_archiving_allowed is 
>> false." The existing asserts are "A implies B". I think it's better 
>> to also add "not A implies not B".
> I replaced with the following assert in Universe::serialize():
>
> #ifdef ASSERT
>   if (!HeapShared::is_heap_object_archiving_allowed()) {
>     assert(_int_mirror == NULL    && _float_mirror == NULL &&
>               _double_mirror == NULL && _byte_mirror == NULL  &&
>               _bool_mirror == NULL   && _char_mirror == NULL  &&
>               _long_mirror == NULL   && _short_mirror == NULL &&
>               _void_mirror == NULL, "mirrors should be NULL");
>   }
> #endif
>
> Here is the updated webrev: 
> http://cr.openjdk.java.net/~jiangli/8206009/webrev.02/src/hotspot/share/memory/universe.cpp.frames.html
>
> Thanks,
>
> Jiangli
>>
>> Thanks
>> - Ioi
>>
>>>>
>>>> Also, have you tested with configure --disable-precompiled-headers?
>>> Build with --disable-precompiled-headers works without failure on 
>>> linux-x64.
>>>
>>> I will queue my change after your subgraph info hash table change 
>>> for 8210388 and resolve conflicts.
>>>
>>> Thanks,
>>> Jiangli
>>>>
>>>>
>>>> Thanks
>>>>
>>>> - Ioi
>>>>
>>>>
>>>>
>>>> On 10/3/18 3:23 PM, Jiangli Zhou wrote:
>>>>> Please review the restructuring and cleanup of java heap object 
>>>>> archiving code. The java object archiving code has grown in the 
>>>>> past year and metaspaceShared.* files are not the suitable place. 
>>>>> The restructuring and cleanup include:
>>>>>
>>>>>   - Moved java heap object archiving implementation from 
>>>>> metaspaceShared.* to heapShared.*.
>>>>>   - Various is_archive_object() APIs are renamed to 
>>>>> is_archived_object() for naming consistency:
>>>>>      - Renamed MetaspaceShared::is_archive_object() to 
>>>>> HeapShared::is_archived_object().
>>>>>      - Renamed oopDesc::is_archive_object() to 
>>>>> oopDesc::is_archived_object().
>>>>>      - Renamed G1ArchiveAllocator::is_archive_object() to 
>>>>> G1ArchiveAllocator::is_archived_object().
>>>>>   - Changed to use G1ArchiveAllocator::is_archived_object() in 
>>>>> G1CollectedHeap::materialize_archived_object(). Removed #include 
>>>>> "memory/metaspaceShared.inline.hpp” from g1CollectedHeap.cpp.
>>>>>   - Renamed HeapShared::archive_static_fields() to 
>>>>> HeapShared::archive_object_subgraphs().
>>>>>
>>>>> webrev: http://cr.openjdk.java.net/~jiangli/8206009/webrev.00/
>>>>> RFE: https://bugs.openjdk.java.net/browse/JDK-8206009
>>>>>
>>>>> Tested with tier1-tier3. Tier4 and tier5 are in progress.
>>>>>
>>>>> Thanks,
>>>>>
>>>>> Jiangli
>>>>>
>>>>>
>>>>>
>>>>>
>>>>
>>>
>>
>



More information about the hotspot-runtime-dev mailing list