aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build
diff options
context:
space:
mode:
authorGravatar Janak Ramakrishnan <janakr@google.com>2015-06-18 23:46:36 +0000
committerGravatar Damien Martin-Guillerez <dmarting@google.com>2015-06-19 11:05:22 +0000
commitcda5b66af3da31c74df73a8a19f67691d5d9454f (patch)
tree8c179411dcfd6ed6548a270b9ef1fdd14338fe02 /src/main/java/com/google/devtools/build
parentd87167eb2330772c975676fe4edeff0526124404 (diff)
Clean up AllPathsFunction and get rid of getFwdDeps(Target) and getReverseDeps(Target) from the QueryEnvironment interface, since they're no longer needed by any query functions, and also WalkableGraph#get{Direct,Reverse}Deps(SkyKey).
-- MOS_MIGRATED_REVID=96361760
Diffstat (limited to 'src/main/java/com/google/devtools/build')
-rw-r--r--src/main/java/com/google/devtools/build/lib/query2/BlazeQueryEnvironment.java14
-rw-r--r--src/main/java/com/google/devtools/build/lib/query2/SkyQueryEnvironment.java21
-rw-r--r--src/main/java/com/google/devtools/build/lib/query2/engine/AllPathsFunction.java13
-rw-r--r--src/main/java/com/google/devtools/build/lib/query2/engine/QueryEnvironment.java6
-rw-r--r--src/main/java/com/google/devtools/build/skyframe/DelegatingWalkableGraph.java10
-rw-r--r--src/main/java/com/google/devtools/build/skyframe/WalkableGraph.java23
6 files changed, 17 insertions, 70 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/query2/BlazeQueryEnvironment.java b/src/main/java/com/google/devtools/build/lib/query2/BlazeQueryEnvironment.java
index e7992f43a9..a5c6d1da1a 100644
--- a/src/main/java/com/google/devtools/build/lib/query2/BlazeQueryEnvironment.java
+++ b/src/main/java/com/google/devtools/build/lib/query2/BlazeQueryEnvironment.java
@@ -195,29 +195,19 @@ public class BlazeQueryEnvironment extends AbstractBlazeQueryEnvironment<Target>
}
@Override
- public Collection<Target> getFwdDeps(Target target) {
- return getTargetsFromNodes(getNode(target).getSuccessors());
- }
-
- @Override
public Collection<Target> getFwdDeps(Iterable<Target> targets) {
Set<Target> result = new HashSet<>();
for (Target target : targets) {
- result.addAll(getFwdDeps(target));
+ result.addAll(getTargetsFromNodes(getNode(target).getSuccessors()));
}
return result;
}
@Override
- public Collection<Target> getReverseDeps(Target target) {
- return getTargetsFromNodes(getNode(target).getPredecessors());
- }
-
- @Override
public Collection<Target> getReverseDeps(Iterable<Target> targets) {
Set<Target> result = new HashSet<>();
for (Target target : targets) {
- result.addAll(getReverseDeps(target));
+ result.addAll(getTargetsFromNodes(getNode(target).getPredecessors()));
}
return result;
}
diff --git a/src/main/java/com/google/devtools/build/lib/query2/SkyQueryEnvironment.java b/src/main/java/com/google/devtools/build/lib/query2/SkyQueryEnvironment.java
index 00ddd2b8b1..473c69dedc 100644
--- a/src/main/java/com/google/devtools/build/lib/query2/SkyQueryEnvironment.java
+++ b/src/main/java/com/google/devtools/build/lib/query2/SkyQueryEnvironment.java
@@ -19,6 +19,7 @@ import com.google.common.base.Predicate;
import com.google.common.base.Predicates;
import com.google.common.base.Supplier;
import com.google.common.collect.Collections2;
+import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Iterables;
@@ -126,10 +127,6 @@ public class SkyQueryEnvironment extends AbstractBlazeQueryEnvironment<Target> {
return TransitiveTargetValue.key(value.getLabel());
}
- private Collection<Target> getRawFwdDeps(Target target) {
- return makeTargets(graph.getDirectDeps(makeKey(target)));
- }
-
private Map<Target, Collection<Target>> makeTargetsMap(Map<SkyKey, Iterable<SkyKey>> input) {
ImmutableMap.Builder<Target, Collection<Target>> result = ImmutableMap.builder();
@@ -143,10 +140,6 @@ public class SkyQueryEnvironment extends AbstractBlazeQueryEnvironment<Target> {
return makeTargetsMap(graph.getDirectDeps(makeKeys(targets)));
}
- private Collection<Target> getRawReverseDeps(Target target) {
- return makeTargets(graph.getReverseDeps(makeKey(target)));
- }
-
private Map<Target, Collection<Target>> getRawReverseDeps(Iterable<Target> targets) {
return makeTargetsMap(graph.getReverseDeps(makeKeys(targets)));
}
@@ -174,11 +167,6 @@ public class SkyQueryEnvironment extends AbstractBlazeQueryEnvironment<Target> {
}
@Override
- public Collection<Target> getFwdDeps(Target target) {
- return filterFwdDeps(target, getRawFwdDeps(target));
- }
-
- @Override
public Collection<Target> getFwdDeps(Iterable<Target> targets) {
Set<Target> result = new HashSet<>();
for (Map.Entry<Target, Collection<Target>> entry : getRawFwdDeps(targets).entrySet()) {
@@ -200,11 +188,6 @@ public class SkyQueryEnvironment extends AbstractBlazeQueryEnvironment<Target> {
}
@Override
- public Collection<Target> getReverseDeps(Target target) {
- return filterReverseDeps(target, getRawReverseDeps(target));
- }
-
- @Override
public Collection<Target> getReverseDeps(Iterable<Target> targets) {
Set<Target> result = new HashSet<>();
for (Map.Entry<Target, Collection<Target>> entry : getRawReverseDeps(targets).entrySet()) {
@@ -240,7 +223,7 @@ public class SkyQueryEnvironment extends AbstractBlazeQueryEnvironment<Target> {
if (to.equals(current)) {
return ImmutableSet.copyOf(Digraph.getPathToTreeNode(nodeToParent, to));
}
- for (Target dep : getFwdDeps(current)) {
+ for (Target dep : getFwdDeps(ImmutableList.of(current))) {
if (!nodeToParent.containsKey(dep)) {
nodeToParent.put(dep, current);
toVisit.addFirst(dep);
diff --git a/src/main/java/com/google/devtools/build/lib/query2/engine/AllPathsFunction.java b/src/main/java/com/google/devtools/build/lib/query2/engine/AllPathsFunction.java
index d2d5f05f9c..4920298bfb 100644
--- a/src/main/java/com/google/devtools/build/lib/query2/engine/AllPathsFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/query2/engine/AllPathsFunction.java
@@ -19,8 +19,9 @@ import com.google.devtools.build.lib.query2.engine.QueryEnvironment.Argument;
import com.google.devtools.build.lib.query2.engine.QueryEnvironment.ArgumentType;
import com.google.devtools.build.lib.query2.engine.QueryEnvironment.QueryFunction;
+import java.util.ArrayList;
+import java.util.Collection;
import java.util.HashSet;
-import java.util.LinkedList;
import java.util.List;
import java.util.Set;
@@ -65,11 +66,11 @@ public class AllPathsFunction implements QueryFunction {
Set<T> reachableFromX = env.getTransitiveClosure(fromValue);
Set<T> result = intersection(reachableFromX, toValue);
- LinkedList<T> worklist = new LinkedList<>(result);
-
- T n;
- while ((n = worklist.poll()) != null) {
- for (T np : env.getReverseDeps(n)) {
+ Collection<T> worklist = result;
+ while (!worklist.isEmpty()) {
+ Collection<T> reverseDeps = env.getReverseDeps(worklist);
+ worklist = new ArrayList<>();
+ for (T np : reverseDeps) {
if (reachableFromX.contains(np)) {
if (result.add(np)) {
worklist.add(np);
diff --git a/src/main/java/com/google/devtools/build/lib/query2/engine/QueryEnvironment.java b/src/main/java/com/google/devtools/build/lib/query2/engine/QueryEnvironment.java
index a6d6156050..78812cc11a 100644
--- a/src/main/java/com/google/devtools/build/lib/query2/engine/QueryEnvironment.java
+++ b/src/main/java/com/google/devtools/build/lib/query2/engine/QueryEnvironment.java
@@ -152,15 +152,9 @@ public interface QueryEnvironment<T> {
// be possible to remove it.
T getOrCreate(T target);
- /** Returns the direct forward dependencies of the specified target. */
- Collection<T> getFwdDeps(T target);
-
/** Returns the direct forward dependencies of the specified targets. */
Collection<T> getFwdDeps(Iterable<T> targets);
- /** Returns the direct reverse dependencies of the specified target. */
- Collection<T> getReverseDeps(T target);
-
/** Returns the direct reverse dependencies of the specified targets. */
Collection<T> getReverseDeps(Iterable<T> targets);
diff --git a/src/main/java/com/google/devtools/build/skyframe/DelegatingWalkableGraph.java b/src/main/java/com/google/devtools/build/skyframe/DelegatingWalkableGraph.java
index fee4f9c579..b88b890300 100644
--- a/src/main/java/com/google/devtools/build/skyframe/DelegatingWalkableGraph.java
+++ b/src/main/java/com/google/devtools/build/skyframe/DelegatingWalkableGraph.java
@@ -82,11 +82,6 @@ public class DelegatingWalkableGraph implements WalkableGraph {
return errorInfo == null ? null : errorInfo.getException();
}
- @Override
- public Iterable<SkyKey> getDirectDeps(SkyKey key) {
- return getEntry(key).getDirectDeps();
- }
-
private static final Function<NodeEntry, Iterable<SkyKey>> GET_DIRECT_DEPS_FUNCTION =
new Function<NodeEntry, Iterable<SkyKey>>() {
@Override
@@ -100,11 +95,6 @@ public class DelegatingWalkableGraph implements WalkableGraph {
return Maps.transformValues(getEntries(keys), GET_DIRECT_DEPS_FUNCTION);
}
- @Override
- public Iterable<SkyKey> getReverseDeps(SkyKey key) {
- return getEntry(key).getReverseDeps();
- }
-
private static final Function<NodeEntry, Iterable<SkyKey>> GET_REVERSE_DEPS_FUNCTION =
new Function<NodeEntry, Iterable<SkyKey>>() {
@Override
diff --git a/src/main/java/com/google/devtools/build/skyframe/WalkableGraph.java b/src/main/java/com/google/devtools/build/skyframe/WalkableGraph.java
index e020a26ba7..be68248b29 100644
--- a/src/main/java/com/google/devtools/build/skyframe/WalkableGraph.java
+++ b/src/main/java/com/google/devtools/build/skyframe/WalkableGraph.java
@@ -48,31 +48,20 @@ public interface WalkableGraph {
/**
* Returns the exception thrown when computing the node with the given key, if any. If the node
- * was computed successfully, returns null. A node with this key must exist in the graph.
+ * was computed successfully, returns null. A node with this key must exist and be done in the
+ * graph.
*/
@Nullable Exception getException(SkyKey key);
/**
- * Returns the direct dependencies of the node with the given key. A node with this key must exist
- * in the graph.
- */
- Iterable<SkyKey> getDirectDeps(SkyKey key);
-
- /**
- * Returns a map giving the direct dependencies of the nodes with the given keys. Same semantics
- * as {@link #getDirectDeps(SkyKey)}.
+ * Returns a map giving the direct dependencies of the nodes with the given keys. A node for each
+ * given key must exist and be done in the graph.
*/
Map<SkyKey, Iterable<SkyKey>> getDirectDeps(Iterable<SkyKey> keys);
- /**
- * Returns the reverse dependencies of the node with the given key. A node with this key must
- * exist in the graph.
- */
- Iterable<SkyKey> getReverseDeps(SkyKey key);
-
/**
- * Returns a map giving the reverse dependencies of the nodes with the given keys. Same semantics
- * as {@link #getReverseDeps(SkyKey)}.
+ * Returns a map giving the reverse dependencies of the nodes with the given keys. A node for each
+ * given key must exist and be done in the graph.
*/
Map<SkyKey, Iterable<SkyKey>> getReverseDeps(Iterable<SkyKey> keys);