[gjs/wip/tko/116-mem-track: 3/4] scripts: reduce the heap graph size by hiding less interesting objects



commit bbafddebab671601abc9cf1c6a3b2ded4809faec
Author: Tommi Komulainen <tko litl com>
Date:   Mon Jan 26 14:05:25 2009 +0000

    scripts: reduce the heap graph size by hiding less interesting objects

 scripts/parse-js-heap | 30 +++++++++++++++++++++++++++++-
 1 file changed, 29 insertions(+), 1 deletion(-)
---
diff --git a/scripts/parse-js-heap b/scripts/parse-js-heap
index 6a710491..3f437c67 100644
--- a/scripts/parse-js-heap
+++ b/scripts/parse-js-heap
@@ -155,6 +155,20 @@ def mark_and_recurse(node):
             mark_and_recurse(child)
 
 
+ndropped = 0
+def drop_and_recurse(node):
+    global ndropped
+
+    for child in node.refnames.keys():
+        arc = node,child
+        if arc in e2:
+            e2.remove(arc)
+
+            ndropped += 1
+
+            drop_and_recurse(child)
+
+
 common_nodes = set()
 for parent,child in e2:
     common_nodes.add(parent.addr)
@@ -193,7 +207,21 @@ for addr in common_nodes:
                 mark_and_recurse(child2)
 
 
-print >>sys.stderr, '%u changed references, %u new, %u to display' % (new_refs, (new_refs - nreplacements), 
len(e2))
+# Drop keepalive references
+if 1:
+    keepalive = None
+    for each in e2:
+        for n in each:
+            if n.kind == '__private_GjsKeepAlive':
+                keepalive = n
+                break
+        if keepalive:
+            break
+    assert keepalive is not None
+
+    drop_and_recurse(keepalive)
+
+print >>sys.stderr, '%u changed references, %u new, %u dropped, %u to display' % (new_refs, (new_refs - 
nreplacements), ndropped, len(e2))
 
 
 if DO_SVG:


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]