aboutsummaryrefslogtreecommitdiff
path: root/tools/js-optimizer.js
diff options
context:
space:
mode:
Diffstat (limited to 'tools/js-optimizer.js')
-rw-r--r--tools/js-optimizer.js16
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]);
});
}