diff options
author | Mihai Bazon <mihai@bazon.net> | 2012-09-03 23:49:57 +0300 |
---|---|---|
committer | Mihai Bazon <mihai@bazon.net> | 2012-09-03 23:49:57 +0300 |
commit | 86cfb5be86603b472085920a82905b22c9d06fea (patch) | |
tree | 95bc6806a116d71efb277652601e96a609de7c5e | |
parent | e5f1cec6aa5998a681ad3c890a07d62d0cbb8d06 (diff) | |
download | tracifyjs-86cfb5be86603b472085920a82905b22c9d06fea.tar.gz tracifyjs-86cfb5be86603b472085920a82905b22c9d06fea.zip |
boolean and if/exit optimizations
-rw-r--r-- | lib/compress.js | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/lib/compress.js b/lib/compress.js index 7e8ad3b8..20af4707 100644 --- a/lib/compress.js +++ b/lib/compress.js @@ -62,6 +62,7 @@ function Compressor(options, false_by_default) { conditionals : !false_by_default, comparations : !false_by_default, evaluate : !false_by_default, + booleans : !false_by_default, warnings : true }); @@ -560,6 +561,17 @@ function Compressor(options, false_by_default) { }).optimize(compressor) }); } + if (self.body instanceof AST_Exit + && self.alternative instanceof AST_Exit + && self.body.TYPE == self.alternative.TYPE) { + return make_node(self.body.CTOR, self, { + value: make_node(AST_Conditional, self, { + condition : self.condition, + consequent : self.body.value, + alternative : self.alternative.value + }).optimize(compressor) + }); + } return self; }); @@ -709,4 +721,22 @@ function Compressor(options, false_by_default) { return self; }); + SQUEEZE(AST_True, function(self, compressor){ + if (compressor.option("booleans")) return make_node(AST_UnaryPrefix, self, { + operator: "!", + expression: make_node(AST_Number, self, { + value: 0 + }) + }); + }); + + SQUEEZE(AST_False, function(self, compressor){ + if (compressor.option("booleans")) return make_node(AST_UnaryPrefix, self, { + operator: "!", + expression: make_node(AST_Number, self, { + value: 1 + }) + }); + }); + })(); |