Skip to content

Commit

Permalink
Reduce the runtime of the DeadPropertyAssignmentEliminationPass.
Browse files Browse the repository at this point in the history
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
  • Loading branch information
kevinoconnor7 authored and blickly committed Sep 28, 2016
1 parent cc3cc90 commit f3c629d
Showing 1 changed file with 6 additions and 10 deletions.
Expand Up @@ -21,19 +21,17 @@
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;
import java.util.Map;
import java.util.Objects;
import java.util.Queue;
import java.util.Set;

import javax.annotation.Nullable;

/**
Expand Down Expand Up @@ -83,25 +81,23 @@ public void process(Node externs, Node root) {

Set<String> 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<String> blacklistedPropNames;

FunctionVisitor(AbstractCompiler compiler, Set<String> blacklistedPropNames) {
this.compiler = compiler;
FunctionVisitor(Set<String> 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;
}
Expand Down

0 comments on commit f3c629d

Please sign in to comment.