diff options
author | Alon Zakai <alonzakai@gmail.com> | 2012-10-22 15:18:13 -0700 |
---|---|---|
committer | Alon Zakai <alonzakai@gmail.com> | 2012-10-22 15:18:13 -0700 |
commit | dafd2a3f15a530e1fd79fa9bf432947ab78a8501 (patch) | |
tree | 3dab09e9217bb57ad0c054b68543de77e90448c7 /tools/js-optimizer.js | |
parent | e2575e4a5c49f8c644e7055074775db3fa91358a (diff) | |
parent | 11a4926fc6c2bfe43fef3c66ad30e4b2df612616 (diff) |
Merge branch 'incoming'
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 |