RFR: 8370203 - Add jcmd AOT.end_recording diagnostic command [v5]
Andrew Dinn
adinn at openjdk.org
Mon Nov 24 10:33:30 UTC 2025
On Fri, 21 Nov 2025 18:53:17 GMT, Mat Carter <macarte at openjdk.org> wrote:
>> src/hotspot/share/cds/aotMetaspace.cpp line 1062:
>>
>>> 1060: bool AOTMetaspace::preimage_static_archive_dumped() {
>>> 1061: assert(CDSConfig::is_dumping_preimage_static_archive(), "Required");
>>> 1062: return _preimage_static_archive_dumped == 1;
>>
>> Should it be AtomicAccess::load(&_preimage_static_archive_dumped) here?
>
> Andrew brought this up also; I'll add but should it be AtomicAccess::load or AtomicAccess::load_acquire?
Just in case this might be called from a different thread to the one which is executing the `cmpxchg` you should really be using `AtomicAccess::load_acquire(&_preimage_static_archive_dumped)` here
You also need acquire-release semantics for the comparison below which you get as the default from your current use of `cmpxchg` below.
if (AtomicAccess::cmpxchg(&_preimage_static_archive_dumped, 0, 1) != 0) {
Depending on the implementation that might be more heavyweight than you really need. e.g. given that the change is idempotent you could rely on a bare `xchg` with acq_rel semantics
if (AtomicAccess::xchg(&_preimage_static_archive_dumped, 1, atomic_memory_order::memory_order_acq_rel) != 0) {
However, it's not going to matter very much since these are low-frequency operations.
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/27965#discussion_r2555662830
More information about the serviceability-dev
mailing list