Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -460,9 +460,18 @@ void consoleTimeStamp(
}
}

std::optional<folly::dynamic> detail;
if (argumentsCount >= 7) {
const jsi::Value& detailArgument = arguments[6];
if (detailArgument.isObject()) {
detail =
tracing::getConsoleTimeStampDetailFromObject(runtime, detailArgument);
}
}

if (performanceTracer.isTracing()) {
performanceTracer.reportTimeStamp(
label, start, end, trackName, trackGroup, color);
label, start, end, trackName, trackGroup, color, detail);
}

if (ReactPerfettoLogger::isTracing()) {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
/*
* Copyright (c) Meta Platforms, Inc. and affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/

#include "ConsoleTimeStamp.h"

namespace facebook::react::jsinspector_modern::tracing {

std::optional<folly::dynamic> getConsoleTimeStampDetailFromObject(
jsi::Runtime& runtime,
const jsi::Value& detailValue) {
try {
return jsi::dynamicFromValue(runtime, detailValue);
} catch (jsi::JSIException&) {
return std::nullopt;
}
}

} // namespace facebook::react::jsinspector_modern::tracing
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@

#pragma once

#include <jsi/JSIDynamic.h>
#include <jsi/jsi.h>
#include <react/timing/primitives.h>

#include <cassert>
Expand Down Expand Up @@ -95,4 +97,8 @@ inline std::optional<ConsoleTimeStampColor> getConsoleTimeStampColorFromString(
}
};

std::optional<folly::dynamic> getConsoleTimeStampDetailFromObject(
jsi::Runtime& runtime,
const jsi::Value& detailValue);

}; // namespace facebook::react::jsinspector_modern::tracing
Original file line number Diff line number Diff line change
Expand Up @@ -180,7 +180,8 @@ void PerformanceTracer::reportTimeStamp(
std::optional<ConsoleTimeStampEntry> end,
std::optional<std::string> trackName,
std::optional<std::string> trackGroup,
std::optional<ConsoleTimeStampColor> color) {
std::optional<ConsoleTimeStampColor> color,
std::optional<folly::dynamic> detail) {
if (!tracingAtomic_) {
return;
}
Expand All @@ -197,6 +198,7 @@ void PerformanceTracer::reportTimeStamp(
.trackName = std::move(trackName),
.trackGroup = std::move(trackGroup),
.color = std::move(color),
.detail = std::move(detail),
.threadId = getCurrentThreadId(),
});
}
Expand Down Expand Up @@ -606,6 +608,13 @@ void PerformanceTracer::enqueueTraceEventsFromPerformanceTracerEvent(
if (event.color) {
data["color"] = consoleTimeStampColorToString(*event.color);
}
if (event.detail) {
folly::dynamic devtoolsDetail = folly::dynamic::object();
for (const auto& [key, value] : event.detail->items()) {
devtoolsDetail[key] = value;
}
data["devtools"] = folly::toJson(devtoolsDetail);
}

events.emplace_back(TraceEvent{
.name = "TimeStamp",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,8 @@ class PerformanceTracer {
std::optional<ConsoleTimeStampEntry> end = std::nullopt,
std::optional<std::string> trackName = std::nullopt,
std::optional<std::string> trackGroup = std::nullopt,
std::optional<ConsoleTimeStampColor> color = std::nullopt);
std::optional<ConsoleTimeStampColor> color = std::nullopt,
std::optional<folly::dynamic> detail = std::nullopt);

/**
* Record an Event Loop tick, which will be represented as an Event Loop task
Expand Down Expand Up @@ -232,6 +233,7 @@ class PerformanceTracer {
std::optional<std::string> trackName;
std::optional<std::string> trackGroup;
std::optional<ConsoleTimeStampColor> color;
std::optional<folly::dynamic> detail;
ThreadId threadId;
HighResTimeStamp createdAt = HighResTimeStamp::now();
};
Expand Down
Loading