aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/skyframe/BuildConfigurationValue.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/skyframe/BuildConfigurationValue.java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/BuildConfigurationValue.java28
1 files changed, 15 insertions, 13 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/BuildConfigurationValue.java b/src/main/java/com/google/devtools/build/lib/skyframe/BuildConfigurationValue.java
index c42539aace..df86614495 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/BuildConfigurationValue.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/BuildConfigurationValue.java
@@ -17,8 +17,8 @@ import com.google.common.base.Preconditions;
import com.google.common.collect.ImmutableSortedSet;
import com.google.common.collect.Interner;
import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration.Fragment;
import com.google.devtools.build.lib.analysis.config.BuildOptions;
+import com.google.devtools.build.lib.analysis.config.FragmentClassSet;
import com.google.devtools.build.lib.concurrent.BlazeInterners;
import com.google.devtools.build.lib.concurrent.ThreadSafety.ThreadSafe;
import com.google.devtools.build.lib.skyframe.serialization.InjectingObjectCodec;
@@ -67,28 +67,29 @@ public class BuildConfigurationValue implements SkyValue {
@ThreadSafe
public static Key key(
Set<Class<? extends BuildConfiguration.Fragment>> fragments, BuildOptions buildOptions) {
- return keyInterner.intern(
- new Key(
- ImmutableSortedSet.copyOf(BuildConfiguration.lexicalFragmentSorter, fragments),
- buildOptions));
+ return key(
+ FragmentClassSet.of(
+ ImmutableSortedSet.copyOf(BuildConfiguration.lexicalFragmentSorter, fragments)),
+ buildOptions);
}
- static final class Key implements SkyKey, Serializable {
- static final ObjectCodec<Key> CODEC = new Codec();
+ public static Key key(FragmentClassSet fragmentClassSet, BuildOptions buildOptions) {
+ return keyInterner.intern(new Key(fragmentClassSet, buildOptions));
+ }
- private final ImmutableSortedSet<Class<? extends BuildConfiguration.Fragment>> fragments;
+ static final class Key implements SkyKey, Serializable {
+ private final FragmentClassSet fragments;
private final BuildOptions buildOptions;
// If hashCode really is -1, we'll recompute it from scratch each time. Oh well.
private volatile int hashCode = -1;
- private Key(
- ImmutableSortedSet<Class<? extends Fragment>> fragments, BuildOptions buildOptions) {
+ private Key(FragmentClassSet fragments, BuildOptions buildOptions) {
this.fragments = fragments;
this.buildOptions = Preconditions.checkNotNull(buildOptions);
}
ImmutableSortedSet<Class<? extends BuildConfiguration.Fragment>> getFragments() {
- return fragments;
+ return fragments.fragmentClasses();
}
BuildOptions getBuildOptions() {
@@ -131,8 +132,9 @@ public class BuildConfigurationValue implements SkyValue {
public void serialize(Key obj, CodedOutputStream codedOut)
throws SerializationException, IOException {
BuildOptions.CODEC.serialize(obj.buildOptions, codedOut);
- codedOut.writeInt32NoTag(obj.fragments.size());
- for (Class<? extends BuildConfiguration.Fragment> fragment : obj.fragments) {
+ codedOut.writeInt32NoTag(obj.fragments.fragmentClasses().size());
+ for (Class<? extends BuildConfiguration.Fragment> fragment :
+ obj.fragments.fragmentClasses()) {
StringCodecs.asciiOptimized().serialize(fragment.getName(), codedOut);
}
}