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