RFR(S) 8236236 Eliminate CDS md region and consolidate c++ vtable patching code
Calvin Cheung
calvin.cheung at oracle.com
Wed Jan 22 00:35:03 UTC 2020
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