Commit 5defb206 authored by Omer Katz's avatar Omer Katz Committed by Commit Bot

cppgc: Object sizes for cpp objects in heap snapshot

This CL sets it so that the actual object size is reported only when
cppgc_enable_object_names is set to true. Otherwise the heap snapshot
merges nodes and the sizes don't make sense.

Also, this will resolve a web test failure for the library.

Bug: chromium:1056170
Change-Id: I32f6552560bdfad4b64c67b21292543978042a81
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2726499Reviewed-by: 's avatarMichael Lippautz <mlippautz@chromium.org>
Commit-Queue: Omer Katz <omerkatz@chromium.org>
Cr-Commit-Position: refs/heads/master@{#73092}
parent 0cbb6b7c
......@@ -35,11 +35,19 @@ using cppgc::internal::HeapObjectHeader;
class EmbedderNode : public v8::EmbedderGraph::Node {
public:
explicit EmbedderNode(const char* name, size_t size)
: name_(name), size_(size) {}
: name_(name), size_(size) {
USE(size_);
}
~EmbedderNode() override = default;
const char* Name() final { return name_; }
size_t SizeInBytes() final { return size_; }
size_t SizeInBytes() final {
#if CPPGC_SUPPORTS_OBJECT_NAMES
return size_;
#else // !CPPGC_SUPPORTS_OBJECT_NAMES
return 0;
#endif // !CPPGC_SUPPORTS_OBJECT_NAMES
}
void SetWrapperNode(v8::EmbedderGraph::Node* wrapper_node) {
wrapper_node_ = wrapper_node;
......
......@@ -384,14 +384,21 @@ TEST_F(UnifiedHeapSnapshotTest, MergedWrapperNode) {
// GCedWithJSRef is merged into MergedObject, replacing its name.
"NextObject" // NOLINT
}));
const size_t js_size = Utils::OpenHandle(*wrapper_object)->Size();
#if CPPGC_SUPPORTS_OBJECT_NAMES
const size_t cpp_size =
cppgc::internal::HeapObjectHeader::FromPayload(gc_w_js_ref.Get())
.GetSize();
const size_t js_size = Utils::OpenHandle(*wrapper_object)->Size();
ForEachEntryWithName(snapshot, GetExpectedName<GCedWithJSRef>(),
[cpp_size, js_size](const HeapEntry& entry) {
EXPECT_EQ(cpp_size + js_size, entry.self_size());
});
#else // !CPPGC_SUPPORTS_OBJECT_NAMES
ForEachEntryWithName(snapshot, GetExpectedName<GCedWithJSRef>(),
[js_size](const HeapEntry& entry) {
EXPECT_EQ(js_size, entry.self_size());
});
#endif // !CPPGC_SUPPORTS_OBJECT_NAMES
}
namespace {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment