diff options
author | Alon Zakai <alonzakai@gmail.com> | 2013-06-21 12:02:52 -0700 |
---|---|---|
committer | Alon Zakai <alonzakai@gmail.com> | 2013-06-21 12:02:52 -0700 |
commit | 36924330b0d0a67bd5894bb91140e8131e396cd7 (patch) | |
tree | 5140899245b1d7913431cfd1bd821300152cd86f /tools/js-optimizer.js | |
parent | 4654f7b59b99d5b3dcddc0fce9938d7e9f4601e0 (diff) |
do not eliminate loop vars when there is a shared helper
Diffstat (limited to 'tools/js-optimizer.js')
-rw-r--r-- | tools/js-optimizer.js | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/tools/js-optimizer.js b/tools/js-optimizer.js index 432c6208..aa5a3afc 100644 --- a/tools/js-optimizer.js +++ b/tools/js-optimizer.js @@ -2438,7 +2438,10 @@ function eliminate(ast, memSafe) { } traverseInOrder(node); } + //var eliminationLimit = 0; // used to debugging purposes function doEliminate(name, node) { + //if (eliminationLimit == 0) return; + //eliminationLimit--; //printErr('elim!!!!! ' + name); // yes, eliminate! varsToRemove[name] = 2; // both assign and var definitions can have other vars we must clean up @@ -2587,7 +2590,13 @@ function eliminate(ast, memSafe) { } if (looperUsed) return; } + for (var l = 0; l < helpers.length; l++) { + for (var k = 0; k < helpers.length; k++) { + if (l != k && helpers[l] == helpers[k]) return; // it is complicated to handle a shared helper, abort + } + } // hurrah! this is safe to do + //printErr("ELIM LOOP VAR " + JSON.stringify(loopers) + ' :: ' + JSON.stringify(helpers)); for (var l = 0; l < loopers.length; l++) { var looper = loopers[l]; var helper = helpers[l]; |