RFR (XS) 8145593 - Clean up metaspaceShared.cpp
Ioi Lam
ioi.lam at oracle.com
Thu Dec 17 02:27:28 UTC 2015
Hi Jiangli,
Thanks for the review
On 12/16/15 4:48 PM, Jiangli Zhou wrote:
> Hi Ioi,
>
> Looks good in general.
>
> - src/share/vm/memory/metaspaceShared.cpp
>
> The MetaspaceShared::set_shared_rs() is only called from
> VirtualSpaceNode::VirtualSpaceNode() when DumpSharedSpaces is true.
> You can change ‘if (DumpSharedSpaces)’ condition to an assert(). Also,
> it might be better to rename set_shared_rs() to be
> initialize_shared_rs() since now it’s doing much more than just
> setting the ‘_shared_rs’.
OK, I will change as you suggested.
> For the following loop,
> 678 for (int pass=1; pass<=2; pass++) {
> 679 if (pass == 1) {
> 680 // The first pass doesn't actually write the data to disk. All it
> 681 // does is to update the fields in the mapinfo->_header.
> 682 } else {
> 683 // After the first pass, the contents of mapinfo->_header are finalized,
> 684 // so we can compute the header's CRC, and write the contents of the header
> 685 // and the regions into disk.
> 686 mapinfo->open_for_write();
> 687 mapinfo->set_header_crc(mapinfo->compute_header_crc());
> 688 }
> 689 mapinfo->write_header();
> 690 mapinfo->write_space(MetaspaceShared::ro, _loader_data->ro_metaspace(), true);
> 691 mapinfo->write_space(MetaspaceShared::rw, _loader_data->rw_metaspace(), false);
> 692 mapinfo->write_region(MetaspaceShared::md, _md_vs.low(),
> 693 pointer_delta(md_top, _md_vs.low(), sizeof(char)),
> 694 SharedMiscDataSize,
> 695 false, false);
>
> it might simplify the code a little bit if it’s changed to:
>
> 678 for (int pass=1; pass<=2; pass++) {
> 679 if (pass == 2) {
> 680 // The first pass doesn't actually write the data to disk. All it
> 681 // does is to update the fields in the mapinfo->_header.
> //
> 683 // After the first pass, the contents of mapinfo->_header are finalized,
> 684 // so we can compute the header's CRC, and write the contents of the header
> 685 // and the regions into disk.
> 686 mapinfo->open_for_write();
> 687 mapinfo->set_header_crc(mapinfo->compute_header_crc());
> 688 }
> 689 mapinfo->write_header();
> 690 mapinfo->write_space(MetaspaceShared::ro, _loader_data->ro_metaspace(), true);
> 691 mapinfo->write_space(MetaspaceShared::rw, _loader_data->rw_metaspace(), false);
> 692 mapinfo->write_region(MetaspaceShared::md, _md_vs.low(),
> 693 pointer_delta(md_top, _md_vs.low(), sizeof(char)),
> 694 SharedMiscDataSize,
> 695 false, false);
I prefer the first style, as it's more explicit about what's happening
in pass #1 vs pass #2. Otherwise you have to read the entire comment and
them try to figure out which part pertains to pass #1 vs #2.
Thanks
Ioi
> Thanks,
> Jiangli
>
>
>> On Dec 16, 2015, at 11:37 AM, Ioi Lam <ioi.lam at oracle.com
>> <mailto:ioi.lam at oracle.com>> wrote:
>>
>> Please review a small fix:
>>
>> http://cr.openjdk.java.net/~iklam/jdk9/8145593-metaspace-shared-cleanup.v01/
>> <http://cr.openjdk.java.net/%7Eiklam/jdk9/8145593-metaspace-shared-cleanup.v01/>
>>
>> Bug: Clean up metaspaceShared.cpp
>>
>> https://bugs.openjdk.java.net/browse/JDK-8145593
>>
>> Summary of fix:
>>
>> [1] The "md" and "mc" spaces are managed inside
>> VM_PopulateDumpSharedSpace,
>> which makes the implementation of
>> MetaspaceShared::misc_data_space_alloc()
>> very awkward. The relevant code should be moved into the
>> MetaspaceShared class.
>>
>> [2] There is a block of code that appears twice in
>> VM_PopulateDumpSharedSpace::doit().
>> It should be cleaned up using a 2-iteration loop.
>>
>> Tests:
>>
>> JPRT
>> CDS tests (locally)
>>
>> Thanks
>> - Ioi
>
More information about the hotspot-runtime-dev
mailing list