diff options
author | Alon Zakai <alonzakai@gmail.com> | 2012-05-11 21:17:47 -0700 |
---|---|---|
committer | Alon Zakai <alonzakai@gmail.com> | 2012-05-11 21:17:47 -0700 |
commit | 725d1a3ab6c3d5d504bc4db81bac36c95deae4f1 (patch) | |
tree | efc4f06c04f302df743b668cb8c4dd87d1683a21 /tools/js-optimizer.js | |
parent | b1ad0fe49869321309a70bfac7913023b58a4150 (diff) |
fix registerize bugs
Diffstat (limited to 'tools/js-optimizer.js')
-rw-r--r-- | tools/js-optimizer.js | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/tools/js-optimizer.js b/tools/js-optimizer.js index a354a236..57d62339 100644 --- a/tools/js-optimizer.js +++ b/tools/js-optimizer.js @@ -1226,7 +1226,7 @@ function registerize(ast, conservative) { // Remove all vars traverse(fun, function(node, type) { if (type == 'var') { - var vars = node[1]; + var vars = node[1].filter(function(varr) { return varr[1] }); if (vars.length > 1) { var ret = ['stat', []]; var curr = ret[1]; @@ -1237,18 +1237,22 @@ function registerize(ast, conservative) { } curr[2] = ['assign', true, ['name', vars[vars.length-1][0]], vars[vars.length-1][1]]; return ret; - } else { + } else if (vars.length == 1) { return ['assign', true, ['name', vars[0][0]], vars[0][1]]; + } else { + return emptyNode(); } } }); vacuum(fun); // Add vars at the beginning - var vars = []; - for (var i = 1; i < nextReg; i++) { - vars.push([fullNames[i]]); + if (nextReg > 1) { + var vars = []; + for (var i = 1; i < nextReg; i++) { + vars.push([fullNames[i]]); + } + getStatements(fun).unshift(['var', vars]); } - getStatements(fun).unshift(['var', vars]); }); } |