aboutsummaryrefslogtreecommitdiff
path: root/tools/js-optimizer.js
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2012-05-11 21:17:47 -0700
committerAlon Zakai <alonzakai@gmail.com>2012-05-11 21:17:47 -0700
commit725d1a3ab6c3d5d504bc4db81bac36c95deae4f1 (patch)
treeefc4f06c04f302df743b668cb8c4dd87d1683a21 /tools/js-optimizer.js
parentb1ad0fe49869321309a70bfac7913023b58a4150 (diff)
fix registerize bugs
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]);
});
}