From 7bea38a05dbe357434001fe59dbe06bb659a585f Mon Sep 17 00:00:00 2001 From: "Alex Lam S.L" Date: Thu, 30 Mar 2017 12:16:58 +0800 Subject: optimize try-catch-finally (#1731) - eliminate empty blocks - flatten out if try-block does not throw --- lib/compress.js | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'lib') diff --git a/lib/compress.js b/lib/compress.js index e36ff893..be760152 100644 --- a/lib/compress.js +++ b/lib/compress.js @@ -2606,6 +2606,15 @@ merge(Compressor.prototype, { OPT(AST_Try, function(self, compressor){ self.body = tighten_body(self.body, compressor); + if (self.bcatch && self.bfinally && all(self.bfinally.body, is_empty)) self.bfinally = null; + if (all(self.body, is_empty)) { + var body = []; + if (self.bcatch) extract_declarations_from_unreachable_code(compressor, self.bcatch, body); + if (self.bfinally) body = body.concat(self.bfinally.body); + return body.length > 0 ? make_node(AST_BlockStatement, self, { + body: body + }).optimize(compressor) : make_node(AST_EmptyStatement, self); + } return self; }); -- cgit v1.2.3