On Wed, 4 Nov 2026 13:44:16 GMT, Markus Grönlund <[email protected]> wrote:

>> In theory, it can: `JfrCPUTimeThreadSampling::on_javathread_create` arms CPU 
>> timer, so that a thread may start receiving signals. However, for threads in 
>> `_thread_new` state, the signal handler does nothing but incrementing the 
>> `lost_samples` counter.
>> 
>> The only lengthy operation that happens in between is creating stack guard 
>> pages. Whether to include it in cpu-time measurement or not, does not make 
>> much difference in practice, imo.
>
> Could be folded into:
> 
>  JavaThread* const jt = JavaThread::cast(t);
>  if (jt->thread_state() == _thread_in_vm) {
>    JfrCPUTimeThreadSampling::on_javathread_create(jt);
>    if (tl->should_write()) {
>      JfrCheckpointManager::write_checkpoint(t);
>    }
>    send_java_thread_start_event(jt);
>    if (tl->has_cached_stack_trace()) {
>      tl->clear_cached_stack_trace();
>    }
>    return;
>  }

Or the early return is also fine, to also skip the epilogue of that routine.

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

PR Review Comment: https://git.openjdk.org/jdk/pull/33678#discussion_r4468285152

Reply via email to