blob: cb18f3fba79ee37c30449df4ab2e175b0ef6d303 [file] [log] [blame]
// Copyright 2020 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "base/trace_event/interned_args_helper.h"
#include "third_party/perfetto/include/perfetto/tracing/track_event_interned_data_index.h"
#include "third_party/perfetto/protos/perfetto/trace/interned_data/interned_data.pbzero.h"
#include "third_party/perfetto/protos/perfetto/trace/track_event/log_message.pbzero.h"
#include "third_party/perfetto/protos/perfetto/trace/track_event/source_location.pbzero.h"
#include "third_party/perfetto/protos/perfetto/trace/track_event/task_execution.pbzero.h"
namespace base {
namespace trace_event {
// static
void InternedSourceLocation::Add(
perfetto::protos::pbzero::InternedData* interned_data,
size_t iid,
const TraceSourceLocation& location) {
auto* msg = interned_data->add_source_locations();
msg->set_iid(iid);
if (location.file_name != nullptr)
msg->set_file_name(location.file_name);
if (location.function_name != nullptr)
msg->set_function_name(location.function_name);
// TODO(ssid): Add line number once it is whitelisted in internal proto.
// TODO(ssid): Add program counter to the proto fields when
// !BUILDFLAG(ENABLE_LOCATION_SOURCE).
// TODO(http://crbug.com760702) remove file name and just pass the program
// counter to the heap profiler macro.
// TODO(ssid): Consider writing the program counter of the current task
// (from the callback function pointer) instead of location that posted the
// task.
}
// static
void InternedLogMessage::Add(
perfetto::protos::pbzero::InternedData* interned_data,
size_t iid,
const std::string& log_message) {
auto* msg = interned_data->add_log_message_body();
msg->set_iid(iid);
msg->set_body(log_message);
}
} // namespace trace_event
} // namespace base