From 75f4fc684bb24c168eb656a02b6a49bee09ccaa9 Mon Sep 17 00:00:00 2001 From: hppeng Date: Wed, 20 Jul 2022 12:06:34 -0700 Subject: [PATCH] Add debug flag to fix compute graph memory leak mfw no destructor hook --- builder/doc.html | 1 + js/computation_graph.js | 11 ++++++----- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/builder/doc.html b/builder/doc.html index 9b735e8..0a52469 100644 --- a/builder/doc.html +++ b/builder/doc.html @@ -1376,6 +1376,7 @@ + diff --git a/js/computation_graph.js b/js/computation_graph.js index 0dcc8d8..d144e29 100644 --- a/js/computation_graph.js +++ b/js/computation_graph.js @@ -1,5 +1,6 @@ -let all_nodes = []; +let all_nodes = new Set(); let node_debug_stack = []; +let COMPUTE_GRAPH_DEBUG = false; class ComputeNode { /** * Make a generic compute node. @@ -21,7 +22,7 @@ class ComputeNode { // 0: clean this.inputs_dirty = new Map(); this.inputs_dirty_count = 0; - all_nodes.push(this); + if (COMPUTE_GRAPH_DEBUG) { all_nodes.add(this); } } /** @@ -34,7 +35,7 @@ class ComputeNode { if (this.dirty === 0) { return; } - node_debug_stack.push(this.name); + if (COMPUTE_GRAPH_DEBUG) { node_debug_stack.push(this.name); } if (this.dirty == 2) { let calc_inputs = new Map(); for (const input of this.inputs) { @@ -46,7 +47,7 @@ class ComputeNode { for (const child of this.children) { child.mark_input_clean(this.name, this.value); } - node_debug_stack.pop(); + if (COMPUTE_GRAPH_DEBUG) { node_debug_stack.pop(); } return this; } @@ -190,7 +191,7 @@ function calcSchedule(node, timeout) { } node.mark_dirty(); node.update_task = setTimeout(function() { - node_debug_stack = []; + if (COMPUTE_GRAPH_DEBUG) { node_debug_stack = []; } node.update(); node.update_task = null; }, timeout);