[11u] RFR: backport of JDK-8208658: Make CDS archived heap regions usable even if compressed oop encoding has changed

Jiangli Zhou jianglizhou at google.com
Fri Jan 24 15:32:13 UTC 2020


Hi Christoph,

On Fri, Jan 24, 2020 at 6:33 AM Langer, Christoph
<christoph.langer at sap.com> wrote:
>
> Hi Jiangli,
>
> This backport looks good to me.
>
> Would you want me to run it through our test infrastructure to get additional confidence?
>

That would be most helpful and reassuring. I will wait for your
testing result before pushing. Thank you!

Best regards,

Jiangli
> Cheers
> Christoph
>
> > -----Original Message-----
> > From: hotspot-runtime-dev <hotspot-runtime-dev-
> > bounces at openjdk.java.net> On Behalf Of Jiangli Zhou
> > Sent: Mittwoch, 22. Januar 2020 02:05
> > To: jdk-updates-dev at openjdk.java.net; hotspot-runtime-dev <hotspot-
> > runtime-dev at openjdk.java.net>
> > Subject: [11u] RFR: backport of JDK-8208658: Make CDS archived heap
> > regions usable even if compressed oop encoding has changed
> >
> > I'd like to request a backport of JDK-8208658 to JDK 11u. It was an
> > enhancement that improves CDS usability and would improve startup time
> > if there's an existing default CDS archive (currently does not exist
> > in OpenJDK 11).
> >
> >   webrev: http://cr.openjdk.java.net/~jiangli/8208658-backport/webrev.00
> >
> > The backport applied to jdk11u-dev mostly clean. The following small
> > set of changes were hand merged to filemap.cpp without additional
> > modifications. The backport was tested with all existing cds and
> > appcds tests, and tier 1 tests.
> >
> > --- filemap.cpp
> > +++ filemap.cpp
> > @@ -967,7 +1069,9 @@
> >      if (base == NULL || base != addr) {
> >        // dealloc the regions from java heap
> >        dealloc_archive_heap_regions(regions, region_num);
> > -      log_info(cds)("UseSharedSpaces: Unable to map at required
> > address in java heap.");
> > +      log_info(cds)("UseSharedSpaces: Unable to map at required
> > address in java heap. "
> > +                    INTPTR_FORMAT ", size = " SIZE_FORMAT " bytes",
> > +                    p2i(addr), regions[i].byte_size());
> >        return false;
> >      }
> >    }
> > @@ -1216,34 +1348,25 @@
> >           idx == MetaspaceShared::rw ||
> >           idx == MetaspaceShared::mc ||
> >           idx == MetaspaceShared::md, "invalid region index");
> > -  char* base = _header->region_addr(idx);
> > +  char* base = region_addr(idx);
> >    if (p >= base && p < base + space_at(idx)->_used) {
> >      return true;
> >    }
> >    return false;
> >  }
> >
> > -void FileMapInfo::print_shared_spaces() {
> > -  tty->print_cr("Shared Spaces:");
> > -  for (int i = 0; i < MetaspaceShared::n_regions; i++) {
> > -    CDSFileMapRegion* si = space_at(i);
> > -    char *base = _header->region_addr(i);
> > -    tty->print("  %s " INTPTR_FORMAT "-" INTPTR_FORMAT,
> > -                        shared_region_name[i],
> > -                        p2i(base), p2i(base + si->_used));
> > -  }
> > -}
> > -
> >  // Unmap mapped regions of shared space.
> >  void FileMapInfo::stop_sharing_and_unmap(const char* msg) {
> >    FileMapInfo *map_info = FileMapInfo::current_info();
> >    if (map_info) {
> >      map_info->fail_continue("%s", msg);
> >      for (int i = 0; i < MetaspaceShared::num_non_heap_spaces; i++) {
> > -      char *addr = map_info->_header->region_addr(i);
> > -      if (addr != NULL && !MetaspaceShared::is_heap_region(i)) {
> > -        map_info->unmap_region(i);
> > -        map_info->space_at(i)->_addr._base = NULL;
> > +      if (!MetaspaceShared::is_heap_region(i)) {
> > +        char *addr = map_info->region_addr(i);
> > +        if (addr != NULL) {
> > +          map_info->unmap_region(i);
> > +          map_info->space_at(i)->_addr._base = NULL;
> > +        }
> >
> > Best regards,
> > Jiangli


More information about the hotspot-runtime-dev mailing list