From f3c629dcbf583b9d125ccca4ce38b532076d0197 Mon Sep 17 00:00:00 2001 From: kevinoconnor Date: Tue, 27 Sep 2016 11:17:52 -0700 Subject: [PATCH] Reduce the runtime of the DeadPropertyAssignmentEliminationPass. Only process functions that have changed since the last time the pass ran. ------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=134430398 --- .../DeadPropertyAssignmentElimination.java | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/src/com/google/javascript/jscomp/DeadPropertyAssignmentElimination.java b/src/com/google/javascript/jscomp/DeadPropertyAssignmentElimination.java index b967483f757..990c5bea3a4 100644 --- a/src/com/google/javascript/jscomp/DeadPropertyAssignmentElimination.java +++ b/src/com/google/javascript/jscomp/DeadPropertyAssignmentElimination.java @@ -21,11 +21,10 @@ import com.google.common.collect.Iterators; import com.google.common.collect.PeekingIterator; import com.google.common.collect.Sets; -import com.google.javascript.jscomp.NodeTraversal.AbstractPostOrderCallback; import com.google.javascript.jscomp.NodeTraversal.Callback; +import com.google.javascript.jscomp.NodeTraversal.FunctionCallback; import com.google.javascript.rhino.Node; import com.google.javascript.rhino.Token; - import java.util.HashMap; import java.util.HashSet; import java.util.LinkedList; @@ -33,7 +32,6 @@ import java.util.Objects; import java.util.Queue; import java.util.Set; - import javax.annotation.Nullable; /** @@ -83,25 +81,23 @@ public void process(Node externs, Node root) { Set blacklistedPropNames = Sets.union( getterSetterCollector.propNames, compiler.getExternProperties()); - NodeTraversal.traverseEs6(compiler, root, new FunctionVisitor(compiler, blacklistedPropNames)); - } - private static class FunctionVisitor extends AbstractPostOrderCallback { + NodeTraversal.traverseChangedFunctions(compiler, new FunctionVisitor(blacklistedPropNames)); + } - private final AbstractCompiler compiler; + private static class FunctionVisitor implements FunctionCallback { /** * A set of properties names that are potentially unsafe to remove duplicate writes to. */ private final Set blacklistedPropNames; - FunctionVisitor(AbstractCompiler compiler, Set blacklistedPropNames) { - this.compiler = compiler; + FunctionVisitor(Set blacklistedPropNames) { this.blacklistedPropNames = blacklistedPropNames; } @Override - public void visit(NodeTraversal t, Node n, Node parent) { + public void enterFunction(AbstractCompiler compiler, Node n) { if (!n.isFunction()) { return; }