diff options
author | Alon Zakai <alonzakai@gmail.com> | 2012-10-20 12:48:05 -0700 |
---|---|---|
committer | Alon Zakai <alonzakai@gmail.com> | 2012-10-20 12:48:05 -0700 |
commit | 67dcc1c8be25b8ec11bb2d7524ae55d89379f478 (patch) | |
tree | 7b9a34c540bfe96fe9b7b318d2e6c2ea890af8cf /tools/js-optimizer.js | |
parent | 6aa94b405236b2e616cbc95613de02c9d9a5ba64 (diff) |
implement simplifyZeroComp js optimizer pass, not yet executed
Diffstat (limited to 'tools/js-optimizer.js')
-rw-r--r-- | tools/js-optimizer.js | 17 |
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 |