aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMihai Bazon <mihai@bazon.net>2012-09-03 23:49:57 +0300
committerMihai Bazon <mihai@bazon.net>2012-09-03 23:49:57 +0300
commit86cfb5be86603b472085920a82905b22c9d06fea (patch)
tree95bc6806a116d71efb277652601e96a609de7c5e
parente5f1cec6aa5998a681ad3c890a07d62d0cbb8d06 (diff)
downloadtracifyjs-86cfb5be86603b472085920a82905b22c9d06fea.tar.gz
tracifyjs-86cfb5be86603b472085920a82905b22c9d06fea.zip
boolean and if/exit optimizations
-rw-r--r--lib/compress.js30
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
+ })
+ });
+ });
+
})();