RFR: 8342818: Implement JEP 509: JFR CPU-Time Profiling [v56]

Johannes Bechberger jbechberger at openjdk.org
Wed Jun 4 17:49:28 UTC 2025


On Wed, 4 Jun 2025 17:39:38 GMT, Markus Grönlund <mgronlun at openjdk.org> wrote:

>> Johannes Bechberger has updated the pull request incrementally with one additional commit since the last revision:
>> 
>>   Readd lock
>
> src/hotspot/share/jfr/periodic/sampling/jfrCPUTimeThreadSampler.cpp line 300:
> 
>> 298:   if (!Atomic::cmpxchg(&_disenrolled, false, true)) {
>> 299:     log_trace(jfr)("Disenrolling CPU thread sampler");
>> 300:     if (Atomic::fetch_then_and(&_signal_handler_installed, false)) {
> 
> fetch_then_and with false? Must be simpler way to express this? Like Atomic::load(&_signal_handler_installed)?

I also want to set it. Wanted to do a simple ::xchg, but this doesn't exist for booleans.

> src/hotspot/share/jfr/periodic/sampling/jfrCPUTimeThreadSampler.cpp line 608:
> 
>> 606: void JfrCPUSamplerThread::stop_signal_handlers() {
>> 607:   // set the stop signal bit
>> 608:   Atomic::or_then_fetch(&_active_signal_handlers, STOP_SIGNAL_BIT, memory_order_acq_rel);
> 
> Whatever was fetched is gone with the wind...

I didn't find an Atomic::or method

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

PR Review Comment: https://git.openjdk.org/jdk/pull/25302#discussion_r2127120548
PR Review Comment: https://git.openjdk.org/jdk/pull/25302#discussion_r2127122509


More information about the serviceability-dev mailing list