aboutsummaryrefslogtreecommitdiff
path: root/tools/js-optimizer.js
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2012-10-26 18:29:23 -0700
committerAlon Zakai <alonzakai@gmail.com>2012-10-26 18:29:23 -0700
commitc99f5607a3e3b7d473c5ecac958ffb86e15cafdc (patch)
tree4da2e6d81314c66d81d63c487e6112ed1a4e6db6 /tools/js-optimizer.js
parentd6e695eb2bf6a49b407507a178df6b4079b74448 (diff)
ignore previously-generated empty toplevels in eliminator, which happens when we bundle passes together
Diffstat (limited to 'tools/js-optimizer.js')
-rw-r--r--tools/js-optimizer.js6
1 files changed, 4 insertions, 2 deletions
diff --git a/tools/js-optimizer.js b/tools/js-optimizer.js
index f8d587db..c4afd4a7 100644
--- a/tools/js-optimizer.js
+++ b/tools/js-optimizer.js
@@ -1366,7 +1366,7 @@ function registerize(ast) {
});
}
-var ELIMINATION_SAFE_NODES = set('var', 'assign', 'call', 'if');
+var ELIMINATION_SAFE_NODES = set('var', 'assign', 'call', 'if', 'toplevel');
var NODES_WITHOUT_ELIMINATION_SIDE_EFFECTS = set('name', 'sname', 'num', 'string', 'binary', 'sub', 'unary-prefix');
function eliminate(ast) {
@@ -1647,7 +1647,9 @@ function eliminate(ast) {
if (!check(node[3])) { tracked = {}; continue; } // do not tolerate
tryEliminate(node[3]);
}
- } else { // anything but if: var, assign, etc.
+ } else if (type == 'toplevel') {
+ if (node[1].length != 0) tracked = {}; // ['toplevel', []] is an empty node, anything else is dangerous
+ } else { // anything else: var, assign, etc.
if (!check(node)) continue;
tryEliminate(node);
// apply invalidations from the check (after elimination - they affect the future, not the present)