[Pkg-javascript-commits] [uglifyjs] 174/228: speed up `equivalent_to()` and `AST_Switch` (#1727)

Jonas Smedegaard dr at jones.dk
Sat Apr 15 14:25:27 UTC 2017


This is an automated email from the git hooks/post-receive script.

js pushed a commit to branch master
in repository uglifyjs.

commit f1a833a7aa4204411c33c7419e94e8c6c87afe23
Author: Alex Lam S.L <alexlamsl at gmail.com>
Date:   Wed Mar 29 22:08:26 2017 +0800

    speed up `equivalent_to()` and `AST_Switch` (#1727)
---
 lib/compress.js | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/lib/compress.js b/lib/compress.js
index 66a6a18..786fc56 100644
--- a/lib/compress.js
+++ b/lib/compress.js
@@ -196,8 +196,7 @@ merge(Compressor.prototype, {
     });
 
     AST_Node.DEFMETHOD("equivalent_to", function(node){
-        // XXX: this is a rather expensive way to test two node's equivalence:
-        return this.print_to_string() == node.print_to_string();
+        return this.TYPE == node.TYPE && this.print_to_string() == node.print_to_string();
     });
 
     AST_Node.DEFMETHOD("process_expression", function(insert) {
@@ -2518,7 +2517,6 @@ merge(Compressor.prototype, {
             self.expression = best_of_expression(expression, self.expression);
         }
         if (!compressor.option("dead_code")) return self;
-        var prev_block;
         var decl = [];
         var body = [];
         var default_branch;
@@ -2547,14 +2545,16 @@ merge(Compressor.prototype, {
                 }
             }
             if (aborts(branch)) {
-                var block = make_node(AST_BlockStatement, branch, branch).print_to_string();
-                if (!fallthrough && prev_block === block) body[body.length - 1].body = [];
+                if (body.length > 0 && !fallthrough) {
+                    var prev = body[body.length - 1];
+                    if (prev.body.length == branch.body.length
+                        && make_node(AST_BlockStatement, prev, prev).equivalent_to(make_node(AST_BlockStatement, branch, branch)))
+                        prev.body = [];
+                }
                 body.push(branch);
-                prev_block = block;
                 fallthrough = false;
             } else {
                 body.push(branch);
-                prev_block = null;
                 fallthrough = true;
             }
         }

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-javascript/uglifyjs.git



More information about the Pkg-javascript-commits mailing list