Skip to content

Commit ad10f76

Browse files
committed
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.
1 parent 9466865 commit ad10f76

39 files changed

+176
-29
lines changed

src/async_wrap.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -174,7 +174,7 @@ class AsyncWrap : public BaseObject {
174174
v8::Local<v8::Value>* argv);
175175

176176
virtual std::string diagnostic_name() const;
177-
std::string MemoryInfoName() const override;
177+
virtual std::string MemoryInfoName() const;
178178

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

src/base_object.h

Lines changed: 5 additions & 0 deletions
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

Lines changed: 32 additions & 1 deletion
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,
@@ -1193,6 +1200,8 @@ class QueryAnyWrap: public QueryWrap {
11931200
tracker->TrackThis(this);
11941201
}
11951202

1203+
ADD_MEMORY_INFO_NAME(QueryAnyWrap)
1204+
11961205
protected:
11971206
void Parse(unsigned char* buf, int len) override {
11981207
HandleScope handle_scope(env()->isolate());
@@ -1372,6 +1381,8 @@ class QueryAWrap: public QueryWrap {
13721381
tracker->TrackThis(this);
13731382
}
13741383

1384+
ADD_MEMORY_INFO_NAME(QueryAWrap)
1385+
13751386
protected:
13761387
void Parse(unsigned char* buf, int len) override {
13771388
HandleScope handle_scope(env()->isolate());
@@ -1418,6 +1429,8 @@ class QueryAaaaWrap: public QueryWrap {
14181429
tracker->TrackThis(this);
14191430
}
14201431

1432+
ADD_MEMORY_INFO_NAME(QueryAaaaWrap)
1433+
14211434
protected:
14221435
void Parse(unsigned char* buf, int len) override {
14231436
HandleScope handle_scope(env()->isolate());
@@ -1464,6 +1477,8 @@ class QueryCnameWrap: public QueryWrap {
14641477
tracker->TrackThis(this);
14651478
}
14661479

1480+
ADD_MEMORY_INFO_NAME(QueryCnameWrap)
1481+
14671482
protected:
14681483
void Parse(unsigned char* buf, int len) override {
14691484
HandleScope handle_scope(env()->isolate());
@@ -1497,6 +1512,8 @@ class QueryMxWrap: public QueryWrap {
14971512
tracker->TrackThis(this);
14981513
}
14991514

1515+
ADD_MEMORY_INFO_NAME(QueryMxWrap)
1516+
15001517
protected:
15011518
void Parse(unsigned char* buf, int len) override {
15021519
HandleScope handle_scope(env()->isolate());
@@ -1530,6 +1547,8 @@ class QueryNsWrap: public QueryWrap {
15301547
tracker->TrackThis(this);
15311548
}
15321549

1550+
ADD_MEMORY_INFO_NAME(QueryNsWrap)
1551+
15331552
protected:
15341553
void Parse(unsigned char* buf, int len) override {
15351554
HandleScope handle_scope(env()->isolate());
@@ -1563,6 +1582,8 @@ class QueryTxtWrap: public QueryWrap {
15631582
tracker->TrackThis(this);
15641583
}
15651584

1585+
ADD_MEMORY_INFO_NAME(QueryTxtWrap)
1586+
15661587
protected:
15671588
void Parse(unsigned char* buf, int len) override {
15681589
HandleScope handle_scope(env()->isolate());
@@ -1595,6 +1616,8 @@ class QuerySrvWrap: public QueryWrap {
15951616
tracker->TrackThis(this);
15961617
}
15971618

1619+
ADD_MEMORY_INFO_NAME(QuerySrvWrap)
1620+
15981621
protected:
15991622
void Parse(unsigned char* buf, int len) override {
16001623
HandleScope handle_scope(env()->isolate());
@@ -1626,6 +1649,8 @@ class QueryPtrWrap: public QueryWrap {
16261649
tracker->TrackThis(this);
16271650
}
16281651

1652+
ADD_MEMORY_INFO_NAME(QueryPtrWrap)
1653+
16291654
protected:
16301655
void Parse(unsigned char* buf, int len) override {
16311656
HandleScope handle_scope(env()->isolate());
@@ -1659,6 +1684,8 @@ class QueryNaptrWrap: public QueryWrap {
16591684
tracker->TrackThis(this);
16601685
}
16611686

1687+
ADD_MEMORY_INFO_NAME(QueryNaptrWrap)
1688+
16621689
protected:
16631690
void Parse(unsigned char* buf, int len) override {
16641691
HandleScope handle_scope(env()->isolate());
@@ -1691,6 +1718,8 @@ class QuerySoaWrap: public QueryWrap {
16911718
tracker->TrackThis(this);
16921719
}
16931720

1721+
ADD_MEMORY_INFO_NAME(QuerySoaWrap)
1722+
16941723
protected:
16951724
void Parse(unsigned char* buf, int len) override {
16961725
HandleScope handle_scope(env()->isolate());
@@ -1772,6 +1801,8 @@ class GetHostByAddrWrap: public QueryWrap {
17721801
tracker->TrackThis(this);
17731802
}
17741803

1804+
ADD_MEMORY_INFO_NAME(GetHostByAddrWrap)
1805+
17751806
protected:
17761807
void Parse(struct hostent* host) override {
17771808
HandleScope handle_scope(env()->isolate());

src/connect_wrap.h

Lines changed: 2 additions & 0 deletions
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

Lines changed: 2 additions & 0 deletions
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

Lines changed: 2 additions & 0 deletions
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

Lines changed: 2 additions & 0 deletions
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

Lines changed: 2 additions & 0 deletions
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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -592,6 +592,8 @@ class ContextifyScript : public BaseObject {
592592
tracker->TrackThis(this);
593593
}
594594

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

src/node_crypto.h

Lines changed: 14 additions & 0 deletions
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

Lines changed: 2 additions & 0 deletions
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

Lines changed: 10 additions & 0 deletions
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

Lines changed: 8 additions & 0 deletions
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

Lines changed: 1 addition & 0 deletions
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

Lines changed: 2 additions & 0 deletions
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)