RFR: 8236847: CDS archive with 4K alignment unusable on machines with 64k pages

Yumin Qi minqi at openjdk.java.net
Tue Feb 23 17:35:45 UTC 2021


On Tue, 23 Feb 2021 17:30:20 GMT, Thomas Stuefe <stuefe at openjdk.org> wrote:

> > How about changing the code to
> > ```
> >   if (DumpSharedSpaces) {
> >     _core_region_alignment = (size_t)os::vm_allocation_granularity();
> > #if (defined(LINUX) && defined(AARCH64)) || defined(__APPLE__)
> >     // If you create a CDS archive on one machine, and use it on another, and the two
> >     // machines have different page sizes, make sure the archive can be used
> >     // on both machines.
> >     // 
> >     // (a) Linux/aarch64 can be configured to have either 4KB or 64KB page sizes.
> >     // (b) macOS/x64 uses 4KB, but macOS/aarch64 uses 64KB (note: you can run an x64 JDK
> >     //     on an M1-based MacBook using Rosetta).
> >     if (_core_region_alignment < 64*K) {
> >       log_info(cds)("Force core region alignment to 64K");
> >       _core_region_alignment = 64*K;
> >     }
> > #endif
> >   } else {
> > ```
> 
> Yes. Good comments too.
> 
> I guess on Windows this does not matter, since allocation granularity is 64k anyway?

Is?
`#if (defined(LINUX) || defined(__APPLE__)) &&  defined(AARCH64)
or
#if (defined(LINUX) && defined(AARCH64)) || defined(__APPLE__)`

-------------

PR: https://git.openjdk.java.net/jdk/pull/2651


More information about the hotspot-runtime-dev mailing list