Skip to content

Commit 9f46500

Browse files
committed
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. PR-URL: #34469 Reviewed-By: Richard Lau <[email protected]> Reviewed-By: James M Snell <[email protected]> Reviewed-By: Gus Caplan <[email protected]> Reviewed-By: Michael Dawson <[email protected]>
1 parent e52cc24 commit 9f46500

File tree

1 file changed

+2
-1
lines changed

1 file changed

+2
-1
lines changed

src/memory_tracker-inl.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ template <typename T, bool kIsWeak>
121121
void MemoryTracker::TrackField(const char* edge_name,
122122
const BaseObjectPtrImpl<T, kIsWeak>& value,
123123
const char* node_name) {
124-
if (value.get() == nullptr) return;
124+
if (value.get() == nullptr || kIsWeak) return;
125125
TrackField(edge_name, value.get(), node_name);
126126
}
127127

@@ -204,6 +204,7 @@ template <typename T>
204204
void MemoryTracker::TrackField(const char* edge_name,
205205
const v8::PersistentBase<T>& value,
206206
const char* node_name) {
207+
if (value.IsWeak()) return;
207208
TrackField(edge_name, value.Get(isolate_));
208209
}
209210

0 commit comments

Comments
 (0)