aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/skyframe/ActionExecutionValue.java
diff options
context:
space:
mode:
authorGravatar Laszlo Csomor <laszlocsomor@google.com>2015-07-29 18:41:17 +0000
committerGravatar Damien Martin-Guillerez <dmarting@google.com>2015-07-30 11:31:52 +0000
commit53010026f6b1493a4baaf326da4263f2d63fe8d1 (patch)
tree82a74c9290e40370adfe9fe113aad9009e5fe8d3 /src/main/java/com/google/devtools/build/lib/skyframe/ActionExecutionValue.java
parentd3a726cdb6fbb0483c653264bcd05757f1f04824 (diff)
ActionExecutionValue now overrides .equals and .hashCode.
This means Skyframe's change pruning can work more efficiently. Without the overridden implementations we'd compare equal AEVs as inequal and unnecessarily re-evaluate SkyKeys that we could have verified clean. -- MOS_MIGRATED_REVID=99396001
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/skyframe/ActionExecutionValue.java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/ActionExecutionValue.java19
1 files changed, 19 insertions, 0 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/ActionExecutionValue.java b/src/main/java/com/google/devtools/build/lib/skyframe/ActionExecutionValue.java
index e2c6e1595f..d4fe8e2cf0 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/ActionExecutionValue.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/ActionExecutionValue.java
@@ -15,6 +15,7 @@ package com.google.devtools.build.lib.skyframe;
import com.google.common.annotations.VisibleForTesting;
import com.google.common.base.MoreObjects;
+import com.google.common.base.Objects;
import com.google.common.base.Preconditions;
import com.google.common.collect.ImmutableMap;
import com.google.devtools.build.lib.actions.Action;
@@ -114,4 +115,22 @@ public class ActionExecutionValue implements SkyValue {
.add("additionalOutputData", additionalOutputData)
.toString();
}
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj) {
+ return true;
+ }
+ if (!(obj instanceof ActionExecutionValue)) {
+ return false;
+ }
+ ActionExecutionValue o = (ActionExecutionValue) obj;
+ return artifactData.equals(o.artifactData)
+ && additionalOutputData.equals(o.additionalOutputData);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hashCode(artifactData, additionalOutputData);
+ }
}