[Lldb-commits] [lldb] [LLDB][NFC] Refactor code extracting timestamp from StructuredData (PR #145954)
Vy Nguyen via lldb-commits
lldb-commits at lists.llvm.org
Fri Jun 27 08:11:09 PDT 2025
https://github.com/oontvoo updated https://github.com/llvm/llvm-project/pull/145954
>From f4092ed5fda4214bfd2c72f288a6c686315bdc3b Mon Sep 17 00:00:00 2001
From: Vy Nguyen <vyng at google.com>
Date: Thu, 26 Jun 2025 15:18:44 -0400
Subject: [PATCH 1/2] [LLDB][NFC] Refactor code extracting timestamp from
StructuredData
---
lldb/source/Core/Telemetry.cpp | 34 +++++++++++++++++++---------------
1 file changed, 19 insertions(+), 15 deletions(-)
diff --git a/lldb/source/Core/Telemetry.cpp b/lldb/source/Core/Telemetry.cpp
index 6434b11a63ad4..464c1d4071a73 100644
--- a/lldb/source/Core/Telemetry.cpp
+++ b/lldb/source/Core/Telemetry.cpp
@@ -119,6 +119,19 @@ llvm::Error TelemetryManager::preDispatch(TelemetryInfo *entry) {
return llvm::Error::success();
}
+// Helper for extracting time field from a Dictionary.
+static std::optional<std::chrono::nanoseconds>
+GetAsNanosec(StructuredData::Dictionary *dict, llvm::StringRef key) {
+ auto value = dict->GetValueForKey(key);
+ if (!value->IsValid()) {
+ LLDB_LOG(GetLog(LLDBLog::Object),
+ "Cannot determine {0} from client-telemetry entry", key);
+ return std::nullopt;
+ }
+
+ return std::chrono::nanoseconds(value->GetUnsignedIntegerValue(0));
+}
+
void TelemetryManager::DispatchClientTelemetry(
const lldb_private::StructuredDataImpl &entry, Debugger *debugger) {
if (!m_config->enable_client_telemetry)
@@ -148,23 +161,14 @@ void TelemetryManager::DispatchClientTelemetry(
LLDB_LOG(GetLog(LLDBLog::Object),
"Cannot determine client_data from client-telemetry entry");
- int64_t start_time;
- if (dict->GetValueForKeyAsInteger("start_time", start_time)) {
- client_info.start_time +=
- std::chrono::nanoseconds(static_cast<size_t>(start_time));
- } else {
- LLDB_LOG(GetLog(LLDBLog::Object),
- "Cannot determine start-time from client-telemetry entry");
- }
+ auto start_time = GetAsNanosec(dict, "start_time");
+ if (start_time.has_value())
+ client_info.start_time += start_time.value();
- int64_t end_time;
- if (dict->GetValueForKeyAsInteger("end_time", end_time)) {
+ auto end_time = GetAsNanosec(dict, "end_time");
+ if (end_time.has_value()) {
SteadyTimePoint epoch;
- client_info.end_time =
- epoch + std::chrono::nanoseconds(static_cast<size_t>(end_time));
- } else {
- LLDB_LOG(GetLog(LLDBLog::Object),
- "Cannot determine end-time from client-telemetry entry");
+ client_info.end_time = epoch + end_time.value();
}
llvm::StringRef error_msg;
>From e299d3416f68c08fdfd6dbee6ee99c3225158658 Mon Sep 17 00:00:00 2001
From: Vy Nguyen <vyng at google.com>
Date: Fri, 27 Jun 2025 11:11:02 -0400
Subject: [PATCH 2/2] Update lldb/source/Core/Telemetry.cpp
Co-authored-by: Alex Langford <nirvashtzero at gmail.com>
---
lldb/source/Core/Telemetry.cpp | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/lldb/source/Core/Telemetry.cpp b/lldb/source/Core/Telemetry.cpp
index 464c1d4071a73..5382c0e090b1b 100644
--- a/lldb/source/Core/Telemetry.cpp
+++ b/lldb/source/Core/Telemetry.cpp
@@ -161,9 +161,8 @@ void TelemetryManager::DispatchClientTelemetry(
LLDB_LOG(GetLog(LLDBLog::Object),
"Cannot determine client_data from client-telemetry entry");
- auto start_time = GetAsNanosec(dict, "start_time");
- if (start_time.has_value())
- client_info.start_time += start_time.value();
+ if (auto maybe_start_time = GetAsNanosec(dict, "start_time"))
+ client_info.start_time += *maybe_start_time;
auto end_time = GetAsNanosec(dict, "end_time");
if (end_time.has_value()) {
More information about the lldb-commits
mailing list