diff options
author | Laszlo Csomor <laszlocsomor@google.com> | 2015-07-29 18:41:17 +0000 |
---|---|---|
committer | Damien Martin-Guillerez <dmarting@google.com> | 2015-07-30 11:31:52 +0000 |
commit | 53010026f6b1493a4baaf326da4263f2d63fe8d1 (patch) | |
tree | 82a74c9290e40370adfe9fe113aad9009e5fe8d3 /src/main/java/com/google/devtools/build/lib/skyframe/ActionExecutionValue.java | |
parent | d3a726cdb6fbb0483c653264bcd05757f1f04824 (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.java | 19 |
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); + } } |