Skip to content

Commit 80b5c91

Browse files
joyeecheungtargos
authored andcommitted
src: add proper MemoryInfoName to wrappers
- Use camel case names for memory retainers inherited from AsyncWrap instead of their provider names (which are all in upper case) - Assign class names to wraps so that they appear in the heap snapshot as nodes with class names as node names. Previously some nodes are named with reference names, which are supposed to be edge names instead. PR-URL: #21939 Reviewed-By: Anna Henningsen <[email protected]> Reviewed-By: Colin Ihrig <[email protected]> Reviewed-By: Gus Caplan <[email protected]> Reviewed-By: James M Snell <[email protected]> Reviewed-By: Tobias Nießen <[email protected]>
1 parent e0f3d57 commit 80b5c91

39 files changed

+176
-29
lines changed

src/async_wrap.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -175,7 +175,7 @@ class AsyncWrap : public BaseObject {
175175
v8::Local<v8::Value>* argv);
176176

177177
virtual std::string diagnostic_name() const;
178-
std::string MemoryInfoName() const override;
178+
virtual std::string MemoryInfoName() const;
179179

180180
static void WeakCallback(const v8::WeakCallbackInfo<DestroyParam> &info);
181181

src/base_object.h

+5
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,11 @@ namespace node {
3333

3434
class Environment;
3535

36+
#define ADD_MEMORY_INFO_NAME(name) \
37+
std::string MemoryInfoName() const override { \
38+
return #name; \
39+
}
40+
3641
class BaseObject : public MemoryRetainer {
3742
public:
3843
// Associates this object with `object`. It uses the 0th internal field for

src/cares_wrap.cc

+32-1
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,7 @@ struct node_ares_task : public MemoryRetainer {
127127
uv_poll_t poll_watcher;
128128

129129
void MemoryInfo(MemoryTracker* tracker) const override;
130+
ADD_MEMORY_INFO_NAME(node_ares_task)
130131
};
131132

132133
struct TaskHash {
@@ -173,9 +174,11 @@ class ChannelWrap : public AsyncWrap {
173174
tracker->TrackThis(this);
174175
if (timer_handle_ != nullptr)
175176
tracker->TrackFieldWithSize("timer handle", sizeof(*timer_handle_));
176-
tracker->TrackField("task list", task_list_);
177+
tracker->TrackField("node_ares_task_list", task_list_);
177178
}
178179

180+
ADD_MEMORY_INFO_NAME(ChannelWrap)
181+
179182
static void AresTimeout(uv_timer_t* handle);
180183

181184
private:
@@ -225,6 +228,8 @@ class GetAddrInfoReqWrap : public ReqWrap<uv_getaddrinfo_t> {
225228
tracker->TrackThis(this);
226229
}
227230

231+
ADD_MEMORY_INFO_NAME(GetAddrInfoReqWrap)
232+
228233
bool verbatim() const { return verbatim_; }
229234

230235
private:
@@ -246,6 +251,8 @@ class GetNameInfoReqWrap : public ReqWrap<uv_getnameinfo_t> {
246251
void MemoryInfo(MemoryTracker* tracker) const override {
247252
tracker->TrackThis(this);
248253
}
254+
255+
ADD_MEMORY_INFO_NAME(GetNameInfoReqWrap)
249256
};
250257

251258
GetNameInfoReqWrap::GetNameInfoReqWrap(Environment* env,
@@ -1178,6 +1185,8 @@ class QueryAnyWrap: public QueryWrap {
11781185
tracker->TrackThis(this);
11791186
}
11801187

1188+
ADD_MEMORY_INFO_NAME(QueryAnyWrap)
1189+
11811190
protected:
11821191
void Parse(unsigned char* buf, int len) override {
11831192
HandleScope handle_scope(env()->isolate());
@@ -1357,6 +1366,8 @@ class QueryAWrap: public QueryWrap {
13571366
tracker->TrackThis(this);
13581367
}
13591368

1369+
ADD_MEMORY_INFO_NAME(QueryAWrap)
1370+
13601371
protected:
13611372
void Parse(unsigned char* buf, int len) override {
13621373
HandleScope handle_scope(env()->isolate());
@@ -1403,6 +1414,8 @@ class QueryAaaaWrap: public QueryWrap {
14031414
tracker->TrackThis(this);
14041415
}
14051416

1417+
ADD_MEMORY_INFO_NAME(QueryAaaaWrap)
1418+
14061419
protected:
14071420
void Parse(unsigned char* buf, int len) override {
14081421
HandleScope handle_scope(env()->isolate());
@@ -1449,6 +1462,8 @@ class QueryCnameWrap: public QueryWrap {
14491462
tracker->TrackThis(this);
14501463
}
14511464

1465+
ADD_MEMORY_INFO_NAME(QueryCnameWrap)
1466+
14521467
protected:
14531468
void Parse(unsigned char* buf, int len) override {
14541469
HandleScope handle_scope(env()->isolate());
@@ -1482,6 +1497,8 @@ class QueryMxWrap: public QueryWrap {
14821497
tracker->TrackThis(this);
14831498
}
14841499

1500+
ADD_MEMORY_INFO_NAME(QueryMxWrap)
1501+
14851502
protected:
14861503
void Parse(unsigned char* buf, int len) override {
14871504
HandleScope handle_scope(env()->isolate());
@@ -1515,6 +1532,8 @@ class QueryNsWrap: public QueryWrap {
15151532
tracker->TrackThis(this);
15161533
}
15171534

1535+
ADD_MEMORY_INFO_NAME(QueryNsWrap)
1536+
15181537
protected:
15191538
void Parse(unsigned char* buf, int len) override {
15201539
HandleScope handle_scope(env()->isolate());
@@ -1548,6 +1567,8 @@ class QueryTxtWrap: public QueryWrap {
15481567
tracker->TrackThis(this);
15491568
}
15501569

1570+
ADD_MEMORY_INFO_NAME(QueryTxtWrap)
1571+
15511572
protected:
15521573
void Parse(unsigned char* buf, int len) override {
15531574
HandleScope handle_scope(env()->isolate());
@@ -1580,6 +1601,8 @@ class QuerySrvWrap: public QueryWrap {
15801601
tracker->TrackThis(this);
15811602
}
15821603

1604+
ADD_MEMORY_INFO_NAME(QuerySrvWrap)
1605+
15831606
protected:
15841607
void Parse(unsigned char* buf, int len) override {
15851608
HandleScope handle_scope(env()->isolate());
@@ -1611,6 +1634,8 @@ class QueryPtrWrap: public QueryWrap {
16111634
tracker->TrackThis(this);
16121635
}
16131636

1637+
ADD_MEMORY_INFO_NAME(QueryPtrWrap)
1638+
16141639
protected:
16151640
void Parse(unsigned char* buf, int len) override {
16161641
HandleScope handle_scope(env()->isolate());
@@ -1644,6 +1669,8 @@ class QueryNaptrWrap: public QueryWrap {
16441669
tracker->TrackThis(this);
16451670
}
16461671

1672+
ADD_MEMORY_INFO_NAME(QueryNaptrWrap)
1673+
16471674
protected:
16481675
void Parse(unsigned char* buf, int len) override {
16491676
HandleScope handle_scope(env()->isolate());
@@ -1676,6 +1703,8 @@ class QuerySoaWrap: public QueryWrap {
16761703
tracker->TrackThis(this);
16771704
}
16781705

1706+
ADD_MEMORY_INFO_NAME(QuerySoaWrap)
1707+
16791708
protected:
16801709
void Parse(unsigned char* buf, int len) override {
16811710
HandleScope handle_scope(env()->isolate());
@@ -1757,6 +1786,8 @@ class GetHostByAddrWrap: public QueryWrap {
17571786
tracker->TrackThis(this);
17581787
}
17591788

1789+
ADD_MEMORY_INFO_NAME(GetHostByAddrWrap)
1790+
17601791
protected:
17611792
void Parse(struct hostent* host) override {
17621793
HandleScope handle_scope(env()->isolate());

src/connect_wrap.h

+2
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@ class ConnectWrap : public ReqWrap<uv_connect_t> {
1919
void MemoryInfo(MemoryTracker* tracker) const override {
2020
tracker->TrackThis(this);
2121
}
22+
23+
ADD_MEMORY_INFO_NAME(ConnectWrap)
2224
};
2325

2426
} // namespace node

src/fs_event_wrap.cc

+2
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,8 @@ class FSEventWrap: public HandleWrap {
6161
tracker->TrackThis(this);
6262
}
6363

64+
ADD_MEMORY_INFO_NAME(FSEventWrap)
65+
6466
private:
6567
static const encoding kDefaultEncoding = UTF8;
6668

src/inspector_js_api.cc

+2
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,8 @@ class JSBindingsConnection : public AsyncWrap {
109109
tracker->TrackFieldWithSize("session", sizeof(*session_));
110110
}
111111

112+
ADD_MEMORY_INFO_NAME(JSBindingsConnection)
113+
112114
private:
113115
std::unique_ptr<InspectorSession> session_;
114116
Persistent<Function> callback_;

src/js_stream.h

+2
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,8 @@ class JSStream : public AsyncWrap, public StreamBase {
3131
tracker->TrackThis(this);
3232
}
3333

34+
ADD_MEMORY_INFO_NAME(JSStream)
35+
3436
protected:
3537
JSStream(Environment* env, v8::Local<v8::Object> obj);
3638

src/module_wrap.h

+2
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,8 @@ class ModuleWrap : public BaseObject {
3939
tracker->TrackField("resolve_cache", resolve_cache_);
4040
}
4141

42+
ADD_MEMORY_INFO_NAME(ModuleWrap)
43+
4244
private:
4345
ModuleWrap(Environment* env,
4446
v8::Local<v8::Object> object,

src/node_contextify.cc

+2
Original file line numberDiff line numberDiff line change
@@ -591,6 +591,8 @@ class ContextifyScript : public BaseObject {
591591
tracker->TrackThis(this);
592592
}
593593

594+
ADD_MEMORY_INFO_NAME(ContextifyScript)
595+
594596
public:
595597
static void Init(Environment* env, Local<Object> target) {
596598
HandleScope scope(env->isolate());

src/node_crypto.h

+14
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,8 @@ class SecureContext : public BaseObject {
109109
tracker->TrackThis(this);
110110
}
111111

112+
ADD_MEMORY_INFO_NAME(SecureContext)
113+
112114
SSLCtxPointer ctx_;
113115
X509Pointer cert_;
114116
X509Pointer issuer_;
@@ -345,6 +347,8 @@ class CipherBase : public BaseObject {
345347
tracker->TrackThis(this);
346348
}
347349

350+
ADD_MEMORY_INFO_NAME(CipherBase)
351+
348352
protected:
349353
enum CipherKind {
350354
kCipher,
@@ -419,6 +423,8 @@ class Hmac : public BaseObject {
419423
tracker->TrackThis(this);
420424
}
421425

426+
ADD_MEMORY_INFO_NAME(Hmac)
427+
422428
protected:
423429
void HmacInit(const char* hash_type, const char* key, int key_len);
424430
bool HmacUpdate(const char* data, int len);
@@ -446,6 +452,8 @@ class Hash : public BaseObject {
446452
tracker->TrackThis(this);
447453
}
448454

455+
ADD_MEMORY_INFO_NAME(Hash)
456+
449457
bool HashInit(const char* hash_type);
450458
bool HashUpdate(const char* data, int len);
451459

@@ -489,6 +497,8 @@ class SignBase : public BaseObject {
489497
tracker->TrackThis(this);
490498
}
491499

500+
ADD_MEMORY_INFO_NAME(SignBase)
501+
492502
protected:
493503
void CheckThrow(Error error);
494504

@@ -605,6 +615,8 @@ class DiffieHellman : public BaseObject {
605615
tracker->TrackThis(this);
606616
}
607617

618+
ADD_MEMORY_INFO_NAME(DiffieHellman)
619+
608620
private:
609621
static void GetField(const v8::FunctionCallbackInfo<v8::Value>& args,
610622
const BIGNUM* (*get_field)(const DH*),
@@ -634,6 +646,8 @@ class ECDH : public BaseObject {
634646
tracker->TrackThis(this);
635647
}
636648

649+
ADD_MEMORY_INFO_NAME(ECDH)
650+
637651
protected:
638652
ECDH(Environment* env, v8::Local<v8::Object> wrap, ECKeyPointer&& key)
639653
: BaseObject(env, wrap),

src/node_crypto_bio.h

+2
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,8 @@ class NodeBIO : public MemoryRetainer {
115115
tracker->TrackFieldWithSize("buffer", length_);
116116
}
117117

118+
ADD_MEMORY_INFO_NAME(NodeBIO)
119+
118120
private:
119121
static int New(BIO* bio);
120122
static int Free(BIO* bio);

src/node_file.h

+10
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,8 @@ class FSReqWrap : public FSReqBase {
9999
tracker->TrackThis(this);
100100
}
101101

102+
ADD_MEMORY_INFO_NAME(FSReqWrap)
103+
102104
private:
103105
DISALLOW_COPY_AND_ASSIGN(FSReqWrap);
104106
};
@@ -162,6 +164,8 @@ class FSReqPromise : public FSReqBase {
162164
tracker->TrackField("stats_field_array", stats_field_array_);
163165
}
164166

167+
ADD_MEMORY_INFO_NAME(FSReqPromise)
168+
165169
private:
166170
bool finished_ = false;
167171
AliasedBuffer<NativeT, V8T> stats_field_array_;
@@ -201,6 +205,8 @@ class FileHandleReadWrap : public ReqWrap<uv_fs_t> {
201205
tracker->TrackField("buffer", buffer_);
202206
}
203207

208+
ADD_MEMORY_INFO_NAME(FileHandleReadWrap)
209+
204210
private:
205211
FileHandle* file_handle_;
206212
uv_buf_t buffer_;
@@ -252,6 +258,8 @@ class FileHandle : public AsyncWrap, public StreamBase {
252258
tracker->TrackField("current_read", current_read_);
253259
}
254260

261+
ADD_MEMORY_INFO_NAME(FileHandle)
262+
255263
private:
256264
// Synchronous close that emits a warning
257265
void Close();
@@ -284,6 +292,8 @@ class FileHandle : public AsyncWrap, public StreamBase {
284292
tracker->TrackField("ref", ref_);
285293
}
286294

295+
ADD_MEMORY_INFO_NAME(CloseReq)
296+
287297
void Resolve();
288298

289299
void Reject(Local<Value> reason);

src/node_http2.h

+8
Original file line numberDiff line numberDiff line change
@@ -575,6 +575,8 @@ class Http2Stream : public AsyncWrap,
575575
tracker->TrackField("queue", queue_);
576576
}
577577

578+
ADD_MEMORY_INFO_NAME(Http2Stream)
579+
578580
std::string diagnostic_name() const override;
579581

580582
// JavaScript API
@@ -761,6 +763,8 @@ class Http2Session : public AsyncWrap, public StreamListener {
761763
pending_rst_streams_.size() * sizeof(int32_t));
762764
}
763765

766+
ADD_MEMORY_INFO_NAME(Http2Session)
767+
764768
std::string diagnostic_name() const override;
765769

766770
// Schedule an RstStream for after the current write finishes.
@@ -1081,6 +1085,8 @@ class Http2Session::Http2Ping : public AsyncWrap {
10811085
tracker->TrackField("session", session_);
10821086
}
10831087

1088+
ADD_MEMORY_INFO_NAME(Http2Ping)
1089+
10841090
void Send(uint8_t* payload);
10851091
void Done(bool ack, const uint8_t* payload = nullptr);
10861092

@@ -1104,6 +1110,8 @@ class Http2Session::Http2Settings : public AsyncWrap {
11041110
tracker->TrackField("session", session_);
11051111
}
11061112

1113+
ADD_MEMORY_INFO_NAME(Http2Settings)
1114+
11071115
void Send();
11081116
void Done(bool ack);
11091117

src/node_http_parser.cc

+1
Original file line numberDiff line numberDiff line change
@@ -160,6 +160,7 @@ class Parser : public AsyncWrap, public StreamListener {
160160
tracker->TrackField("current_buffer", current_buffer_);
161161
}
162162

163+
ADD_MEMORY_INFO_NAME(Parser)
163164

164165
int on_message_begin() {
165166
num_fields_ = num_values_ = 0;

src/node_i18n.cc

+2
Original file line numberDiff line numberDiff line change
@@ -254,6 +254,8 @@ class ConverterObject : public BaseObject, Converter {
254254
tracker->TrackThis(this);
255255
}
256256

257+
ADD_MEMORY_INFO_NAME(ConverterObject)
258+
257259
protected:
258260
ConverterObject(Environment* env,
259261
v8::Local<v8::Object> wrap,

0 commit comments

Comments
 (0)