aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2012-10-23 16:35:44 -0700
committerAlon Zakai <alonzakai@gmail.com>2012-10-23 16:35:44 -0700
commit260c7477bcb0988f1bb234dafa425618de6b53f2 (patch)
treec0b98cdc13574599a2be9f5c33d61805e6525e3a
parentcdbbbac7b5edb6b3eee4a126056fd464daaa87df (diff)
more misc eliminator optimizations
-rw-r--r--tools/eliminator.js27
1 files changed, 16 insertions, 11 deletions
diff --git a/tools/eliminator.js b/tools/eliminator.js
index 4d668eae..0018a44e 100644
--- a/tools/eliminator.js
+++ b/tools/eliminator.js
@@ -274,8 +274,9 @@ function Eliminator(func) {
reference = reference[1];
}
reference = reference[1];
- if (that.affects[reference]) {
- for (var varName in that.affects[reference]) {
+ var aff = that.affects[reference]
+ if (aff) {
+ for (var varName in aff) {
if (isLive[varName]) {
isLive[varName] = false;
}
@@ -323,8 +324,9 @@ function Eliminator(func) {
}
if (type === 'switch') {
traverseChild(node[1]);
- for (var i = 0; i < node[2].length; i++) {
- traverseChild(node[2][i]);
+ var node2 = node[2];
+ for (var i = 0; i < node2.length; i++) {
+ traverseChild(node2[i]);
}
} else if (type == 'if' || type == 'try') {
for (var i = 0; i < node.length; i++) {
@@ -339,10 +341,11 @@ function Eliminator(func) {
}
return node;
} else if (type === 'var') {
- for (var i = 0; i < node[1].length; i++) {
- var varName = node[1][i][0];
-// all for-in are suspect
- var varValue = node[1][i][1];
+ var node1 = node[1];
+ for (var i = 0; i < node1.length; i++) {
+ var node1i = node1[i];
+ var varName = node1i[0];
+ var varValue = node1i[1];
if (varValue) traverse(varValue, checkForMutations);
// Mark the variable as live
if (that.isSingleDef[varName]) {
@@ -350,7 +353,8 @@ function Eliminator(func) {
}
// Mark variables that depend on it as no longer live
if (that.affects[varName]) {
- for (var varNameDep in that.affects[varName]) {
+ var aff = that.affects[varName];
+ for (var varNameDep in aff) {
if (isLive[varNameDep]) {
isLive[varNameDep] = false;
}
@@ -499,8 +503,9 @@ function main() {
// Write out the optimized code.
// NOTE: For large file, can't generate code for the whole file in a single
// call due to the v8 memory limit. Writing out root children instead.
- for (var i = 0; i < ast[1].length; i++) {
- var node = ast[1][i];
+ var ast1 = ast[1];
+ for (var i = 0; i < ast1.length; i++) {
+ var node = ast1[i];
// Parse && recompile again, to remove unneeded lines XXX is this worth the parse time?
var src2 = uglify.uglify.gen_code(node, GEN_OPTIONS);