Refactor dynamic name to perfetto::DynamicString

Recently perfetto introduced `perfetto::DynamicString` to allow clients
to wrap dynamic event name strings. So that clients don't have to
manually set event name inside trace lambda.

With that:

TRACE_EVENT("cat", nullptr, [&](EventContext ctx) {
  ctx.event().set_name(dynamic_name_str)
});

is simplified to:

TRACE_EVENT("cat", perfetto::DynamicString{dynamic_name_str});

In this change we are making use of perfetto::DynamicString to pass
dynamic event name string.

Change-Id: Ic6b501df67409d6faa4d60b59095ad0e79ce585e
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3716473
Reviewed-by: Manos Koukoutos <manoskouk@chromium.org>
Commit-Queue: Mohit Saini <mohitms@google.com>
Cr-Commit-Position: refs/heads/main@{#81298}
This commit is contained in:
Mohit Saini 2022-06-21 13:18:19 +01:00 committed by V8 LUCI CQ
parent 9d3a645bec
commit c801d52924

View File

@ -196,11 +196,8 @@ BUILTIN(Trace) {
}
#if defined(V8_USE_PERFETTO)
// TODO(skyostil): Use interned names to reduce trace size.
auto trace_args = [&](perfetto::EventContext ctx) {
// TODO(skyostil): Use interned names to reduce trace size.
if (phase != TRACE_EVENT_PHASE_END) {
ctx.event()->set_name(*name);
}
if (num_args) {
MaybeUtf8 arg_contents(isolate, Handle<String>::cast(arg_json));
auto annotation = ctx.event()->add_debug_annotations();
@ -215,13 +212,15 @@ BUILTIN(Trace) {
switch (phase) {
case TRACE_EVENT_PHASE_BEGIN:
TRACE_EVENT_BEGIN(dynamic_category, nullptr, trace_args);
TRACE_EVENT_BEGIN(dynamic_category, perfetto::DynamicString(*name),
trace_args);
break;
case TRACE_EVENT_PHASE_END:
TRACE_EVENT_END(dynamic_category, trace_args);
break;
case TRACE_EVENT_PHASE_INSTANT:
TRACE_EVENT_INSTANT(dynamic_category, nullptr, trace_args);
TRACE_EVENT_INSTANT(dynamic_category, perfetto::DynamicString(*name),
trace_args);
break;
default:
THROW_NEW_ERROR_RETURN_FAILURE(