aboutsummaryrefslogtreecommitdiff
path: root/tools/js-optimizer.js
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2012-10-20 12:48:05 -0700
committerAlon Zakai <alonzakai@gmail.com>2012-10-20 12:48:05 -0700
commit67dcc1c8be25b8ec11bb2d7524ae55d89379f478 (patch)
tree7b9a34c540bfe96fe9b7b318d2e6c2ea890af8cf /tools/js-optimizer.js
parent6aa94b405236b2e616cbc95613de02c9d9a5ba64 (diff)
implement simplifyZeroComp js optimizer pass, not yet executed
Diffstat (limited to 'tools/js-optimizer.js')
-rw-r--r--tools/js-optimizer.js17
1 files changed, 17 insertions, 0 deletions
diff --git a/tools/js-optimizer.js b/tools/js-optimizer.js
index 5dac36f0..f1574e2a 100644
--- a/tools/js-optimizer.js
+++ b/tools/js-optimizer.js
@@ -454,8 +454,25 @@ function simplifyExpressionsPre(ast) {
}
}
+ // if (x == 0) can be if (!x), etc.
+ function simplifyZeroComp(ast) {
+ traverseGenerated(ast, function(node, type) {
+ var binary;
+ if (type == 'if' && (binary = node[1])[0] == 'binary') {
+ if ((binary[1] == '!=' || binary[1] == '!==') && binary[3][0] == 'num' && binary[3][1] == 0) {
+ node[1] = binary[2];
+ return node;
+ } else if ((binary[1] == '==' || binary[1] == '===') && binary[3][0] == 'num' && binary[3][1] == 0) {
+ node[1] = ['unary-prefix', '!', binary[2]];
+ return node;
+ }
+ }
+ });
+ }
+
simplifyBitops(ast);
joinAdditions(ast);
+ // simplifyZeroComp(ast); TODO: investigate performance
}
// In typed arrays mode 2, we can have