RFR(S) 8236236 Eliminate CDS md region and consolidate c++ vtable patching code

Ioi Lam ioi.lam at oracle.com
Wed Jan 22 06:36:51 UTC 2020


Hi Calvin, thanks for the review!

- Ioi

On 1/21/20 4:35 PM, Calvin Cheung wrote:
> Hi Ioi,
>
> The updated webrev looks good.
>
> thanks,
>
> Calvin
>
> On 1/15/20 5:53 PM, Ioi Lam wrote:
>> Hi Calvin,
>>
>> Thanks for the review. I have integrated the changes you suggested 
>> below.
>>
>> http://cr.openjdk.java.net/~iklam/jdk15/8236236_remove_cds_md_section.v02/ 
>>
>> http://cr.openjdk.java.net/~iklam/jdk15/8236236_remove_cds_md_section.v02.delta/ 
>>
>>
>> Changes since the last webrev:
>>
>> [1] The two test changes are from you.
>>
>> [2] FileMapInfo.java - I had to change SA to match the new location 
>> of the
>>     vtable, which is moved to the middle of the MC section. The new
>>     calculation in C code is
>>
>>        header->_mapped_base_address + header->_cloned_vtable_offset
>>
>>     The old SA code uses the words "address", "offset" and "value" very
>>     liberally. It's very hard to read, especially when I am now 
>> operating on
>>     fields named "address" and "offset". With the old code I would 
>> end up
>>     with variables called ...AddressAddress and ...OffsetFieldOffset,
>>     and my head would explode
>>
>>     So I decided to rewrite the whole FileMapInfo::initialize() 
>> method to
>>     make it a little easier to understand.
>>
>> [3] I removed "_start" from the names of a few pointers in filemap.hpp
>>     for brevity. E.g.,
>>
>>          serialized_data_start -> serialized_data
>>
>>     We have a char* here, so it's pretty obvious that it points to 
>> the "start"
>>     of the serialized data.
>>
>> Thanks
>> - Ioi
>>
>> On 1/2/2020 8:55 AM, Calvin Cheung wrote:
>>> Hi Ioi,
>>>
>>> The code changes look good. I saw the following tests still have 
>>> references to the MD region.
>>>
>>> appcds/SharedArchiveConsistency.java and 
>>> appcds/dynamicArchive/ArchiveConsistency.java
>>>
>>> Suggested change:
>>>
>>> bash-4.2$ hg diff 
>>> test/hotspot/jtreg/runtime/cds/appcds/SharedArchiveConsistency.javadiff 
>>> --git 
>>> a/test/hotspot/jtreg/runtime/cds/appcds/SharedArchiveConsistency.java 
>>> b/test/hotspot/jtreg/runtime/cds/appcds/SharedArchiveConsistency.java
>>> --- 
>>> a/test/hotspot/jtreg/runtime/cds/appcds/SharedArchiveConsistency.java
>>> +++ 
>>> b/test/hotspot/jtreg/runtime/cds/appcds/SharedArchiveConsistency.java
>>> @@ -74,7 +74,7 @@
>>>          "mc",          // MiscCode
>>>          "rw",          // ReadWrite
>>>          "ro",          // ReadOnly
>>> -        "md",          // MiscData
>>> +        "bm",          // relocation bitmaps
>>>          "first_closed_archive",
>>>          "last_closed_archive",
>>>          "first_open_archive",
>>> bash-4.2$
>>> bash-4.2$ hg diff 
>>> test/hotspot/jtreg/runtime/cds/appcds/dynamicArchive/ArchiveConsistency.java
>>> diff --git 
>>> a/test/hotspot/jtreg/runtime/cds/appcds/dynamicArchive/ArchiveConsistency.java 
>>> b/test/hotspot/jtreg/runtime/cds/appcds/dynamicArchive/ArchiveConsistency.java 
>>>
>>> --- 
>>> a/test/hotspot/jtreg/runtime/cds/appcds/dynamicArchive/ArchiveConsistency.java
>>> +++ 
>>> b/test/hotspot/jtreg/runtime/cds/appcds/dynamicArchive/ArchiveConsistency.java
>>> @@ -49,7 +49,7 @@
>>>  public class ArchiveConsistency extends DynamicArchiveTestBase {
>>>      public static WhiteBox wb;
>>>      public static int int_size;        // size of int
>>> -    public static String[] shared_region_name = {"MiscCode", 
>>> "ReadWrite", "ReadOnly", "MiscData"};
>>> +    public static String[] shared_region_name = {"MiscCode", 
>>> "ReadWrite", "ReadOnly", "BitMap"};
>>>      public static int num_regions = shared_region_name.length;
>>>
>>>      public static void main(String[] args) throws Exception {
>>>
>>> thanks,
>>>
>>> Calvin
>>>
>>> On 12/19/19 3:51 PM, Ioi Lam wrote:
>>>> https://bugs.openjdk.java.net/browse/JDK-8236236
>>>> http://cr.openjdk.java.net/~iklam/jdk15/8236236_remove_cds_md_section.v01/ 
>>>>
>>>>
>>>> This is the first step of:
>>>>
>>>> JDK-8234693 - Consolidate CDS static and dynamic archive dumping code
>>>>
>>>> My plan is to first make the two archives structurally alike, and then
>>>> merge the code that generates them.
>>>>
>>>> ---
>>>>
>>>> Currently the static archive has 4 regions, in the order of 
>>>> MC,RW,RO,MD,
>>>> but the dynamic archive has 3 regions, in the order of RW,RO,MC
>>>>
>>>> The difference in the number and ordering causes special handling 
>>>> code, e.g.,
>>>>
>>>> http://hg.openjdk.java.net/jdk/jdk/file/f33197adda9a/src/hotspot/share/memory/metaspaceShared.cpp#l2303 
>>>>
>>>>
>>>> The MD region is used only for the cloned CPP vtables. It's safe to
>>>> move these into the MC region.
>>>>
>>>> Also, for c++ vtable patching:
>>>>
>>>>   static  archive uses MetaspaceShared::patch_cpp_vtable_pointers()
>>>>   dynamic archive uses 
>>>> MetaspaceShared::fix_cpp_vtable_for_dynamic_archive().
>>>>
>>>> We should consolidate the code to just use the latter.
>>>>
>>>> Thanks
>>>> - Ioi
>>



More information about the hotspot-runtime-dev mailing list