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

Ioi Lam ioi.lam at oracle.com
Thu Dec 19 23:51:21 UTC 2019


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