Skip to content
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
src: skip weak references for memory tracking
The memory tracking is supposed to represent the “keeps-alive”
relations between objects for a heap dump, in order to enable
developers to figure out which objects keep which other objects
on the heap.

Weak references do not participate in that relation. Therefore,
we should not be tracking them.
  • Loading branch information
addaleax committed Jul 21, 2020
commit 9908765a30c9d93184237aa5497207700e854538
3 changes: 2 additions & 1 deletion src/memory_tracker-inl.h
Original file line number Diff line number Diff line change
Expand Up @@ -131,7 +131,7 @@ template <typename T, bool kIsWeak>
void MemoryTracker::TrackField(const char* edge_name,
const BaseObjectPtrImpl<T, kIsWeak>& value,
const char* node_name) {
if (value.get() == nullptr) return;
if (value.get() == nullptr || kIsWeak) return;
TrackField(edge_name, value.get(), node_name);
}

Expand Down Expand Up @@ -214,6 +214,7 @@ template <typename T>
void MemoryTracker::TrackField(const char* edge_name,
const v8::PersistentBase<T>& value,
const char* node_name) {
if (value.IsWeak()) return;
TrackField(edge_name, value.Get(isolate_));
}

Expand Down