fix: use ThreadId when event is captured, not when transformed (#53411)

Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/53411

# Changelog: [Internal]

This regressed after D80263154, when we introduced a local struct for PerforamanceTracerEvent.

We should use id of the thread where event was captured (registered), not where the transform to TraceEvent happened.

This makes sure that events like Event Loop tick or Microtasks phase tick are correctly point to JavaScript thread, not the thread where the transform could've taken place.

Reviewed By: sbuggay

Differential Revision: D80728931

fbshipit-source-id: d3af16e68adece9ebc37368fec2b8a17c1293b4b
This commit is contained in:
Ruslan Lesiutin
2025-08-21 14:18:27 -07:00
committed by Facebook GitHub Bot
parent 046ff8e58b
commit a2a73739d8
@@ -190,6 +190,7 @@ void PerformanceTracer::reportTimeStamp(
.trackName = std::move(trackName),
.trackGroup = std::move(trackGroup),
.color = std::move(color),
.threadId = getCurrentThreadId(),
});
}
@@ -399,7 +400,7 @@ void PerformanceTracer::enqueueTraceEventsFromPerformanceTracerEvent(
.ph = 'X',
.ts = event.start,
.pid = processId_,
.tid = getCurrentThreadId(),
.tid = event.threadId,
.dur = event.end - event.start,
});
},
@@ -410,7 +411,7 @@ void PerformanceTracer::enqueueTraceEventsFromPerformanceTracerEvent(
.ph = 'X',
.ts = event.start,
.pid = processId_,
.tid = getCurrentThreadId(),
.tid = event.threadId,
.dur = event.end - event.start,
});
},
@@ -429,7 +430,7 @@ void PerformanceTracer::enqueueTraceEventsFromPerformanceTracerEvent(
.ph = 'I',
.ts = event.start,
.pid = processId_,
.tid = getCurrentThreadId(),
.tid = event.threadId,
.args = std::move(eventArgs),
});
},
@@ -449,7 +450,7 @@ void PerformanceTracer::enqueueTraceEventsFromPerformanceTracerEvent(
.ph = 'b',
.ts = event.start,
.pid = processId_,
.tid = getCurrentThreadId(),
.tid = event.threadId,
.args = std::move(beginEventArgs),
});
events.emplace_back(TraceEvent{
@@ -459,7 +460,7 @@ void PerformanceTracer::enqueueTraceEventsFromPerformanceTracerEvent(
.ph = 'e',
.ts = event.start + event.duration,
.pid = processId_,
.tid = getCurrentThreadId(),
.tid = event.threadId,
});
},
[&](PerformanceTracerEventTimeStamp&& event) {
@@ -500,7 +501,7 @@ void PerformanceTracer::enqueueTraceEventsFromPerformanceTracerEvent(
.ph = 'I',
.ts = event.createdAt,
.pid = processId_,
.tid = getCurrentThreadId(),
.tid = event.threadId,
.args = folly::dynamic::object("data", std::move(data)),
});
},