RFR: 8250989: Consolidate buffer allocation code for CDS static/dynamic dumping [v2]
Thomas Stuefe
stuefe at openjdk.java.net
Sat Feb 6 07:09:46 UTC 2021
On Sat, 6 Feb 2021 05:08:07 GMT, Ioi Lam <iklam at openjdk.org> wrote:
> > Hi Ioi,
> > not a full review, but the metaspace related changes to reservations look fine. See minor nits below.
> > This is unrelated to your patch: in compute_shared_base, you set SharedBaseAddress in case of an error. I think it should either be just a calculator function with no side effects - just returning the corrected value - or always set SharedBaseAddress and _requested_base_address always, returning void. That would be clearer.
>
> I changed `compute_shared_base()` to have no side effect.
>
> > One question, SharedBaseAddress vs MetaspaceShared::_requested_base_address : what is the difference? When do you use one, when the other?
>
> I added comments in metaspaceShared.hpp:
>
> ```
> // This is the base address as specified by -XX:SharedBaseAddress during -Xshare:dump.
> // Both the base/top archives are written using this as their base address.
> //
> // During static dump: _requested_base_address == SharedBaseAddress.
> //
> // During dynamic dump: _requested_base_address is not always the same as SharedBaseAddress:
> // - SharedBaseAddress is used for *reading the base archive*. I.e., CompactHashtable uses
> // it to convery offsets to pointers to Symbols in the base archive.
> // The base archive may be mapped to an OS-selected address due to ASLR. E.g.,
> // you may have SharedBaseAddress == 0x00ff123400000000.
> // - _requested_base_address is used for *writing the output archive*. It's usually
> // 0x800000000 (unless it was set by -XX:SharedBaseAddress during -Xshare:dump).
> static char* requested_base_address() {
> return _requested_base_address;
> }
> ```
>
> Thanks!
> Ioi
Much clearer, thanks!
Cheers, Thomas
-------------
PR: https://git.openjdk.java.net/jdk/pull/2296
More information about the hotspot-runtime-dev
mailing list