From 4ee2a6bc8269f61fe687a57dff213082aeb25fbf Mon Sep 17 00:00:00 2001 From: Ryan Macnak Date: Fri, 11 Nov 2022 21:45:05 +0000 Subject: [PATCH] [vm, service] Include "names" for type vectors in heap snapshots. TEST=ci Change-Id: I19ac8b75eab48e99c57e6e1c3655ce0e3a2430c0 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/265522 Commit-Queue: Ryan Macnak Reviewed-by: Ben Konyi --- runtime/vm/object_graph.cc | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/runtime/vm/object_graph.cc b/runtime/vm/object_graph.cc index 6541c8fbbce..d5e40531bdd 100644 --- a/runtime/vm/object_graph.cc +++ b/runtime/vm/object_graph.cc @@ -1195,6 +1195,18 @@ class Pass2Visitor : public ObjectVisitor, } else if (cid == kScriptCid) { writer_->WriteUnsigned(kNameData); ScrubAndWriteUtf8(static_cast(obj)->untag()->url()); + } else if (cid == kTypeArgumentsCid) { + // Handle scope so we do not change the root set. + // We are assuming that TypeArguments::PrintSubvectorName never allocates + // objects or zone handles. + HANDLESCOPE(thread()); + const TypeArguments& args = + TypeArguments::Handle(static_cast(obj)); + TextBuffer buffer(128); + args.PrintSubvectorName(0, args.Length(), TypeArguments::kScrubbedName, + &buffer); + writer_->WriteUnsigned(kNameData); + writer_->WriteUtf8(buffer.buffer()); } else { writer_->WriteUnsigned(kNoData); }