Skip to content

src: name EmbededderGraph edges and use class names for nodes

This patch:

  • Refactors the MemoryRetainer API so that the impementer no longer calls TrackThis() that sets the size of node on the top of the stack, which may be hard to understand. Instead they implements SelfSize() to provide their self sizes. Also documents the API in the header.
  • Refactors MemoryTracker so it calls MemoryInfoName() and SelfSize() of MemoryRetainer to retrieve info about them, and separate node_names and edge_names so the edges can be properly named with reference names and the nodes can be named with class names. (Previously the nodes are named with reference names while the edges are all indexed and appear as array elements).
  • Adds SET_MEMORY_INFO_NAME(), SET_SELF_SIZE() and SET_NO_MEMORY_INFO() convenience macros
  • Fixes a few MemoryInfo calls in some MemoryRetainers to track their references properly.
  • Refactors the heapdump tests to check both node names and edge names, distinguishing between wrapped JS nodes (without prefixes) and embedder wrappers (prefixed with Node / ).

Comparison in Chrome DevTools

Node / Http2Session

Before:

screen shot 2018-09-24 at 10 55 22 pm

After:

screen shot 2018-09-24 at 11 05 42 pm

Node / FileHandleReadWrap

Before:

screen shot 2018-09-24 at 11 06 33 pm

After:

screen shot 2018-09-24 at 11 05 18 pm

Node / JSBindingConnection

Before:

screen shot 2018-09-24 at 11 07 28 pm

After:

screen shot 2018-09-24 at 11 07 19 pm
Checklist
  • make -j4 test (UNIX), or vcbuild test (Windows) passes
  • tests and/or benchmarks are included
  • documentation is changed or added
  • commit message follows commit guidelines

Merge request reports

Loading