diff options
author | cparsons <cparsons@google.com> | 2018-02-28 12:16:38 -0800 |
---|---|---|
committer | Copybara-Service <copybara-piper@google.com> | 2018-02-28 12:18:44 -0800 |
commit | e70aafe68eebfd4f7dedf3cccd19deae72d29db6 (patch) | |
tree | 7dd211075236b3c06b34b0517852bdd624d8a87d /src/main/java/com/google/devtools/build/lib/analysis | |
parent | 77c4f30b333106ff15de5b5dd42076db01fd22b4 (diff) |
Deprecate and remove several uses of the 'values' map in NativeInfo subclasses.
These subclasses should be using @SkylarkCallable(structField = true) instead
This is a bit of a memory win, as there is now no need to store field information twice.
There are still a couple of stragglers that are more difficult, namely ToolchainInfo and DefaultInfo. Their APIs will likely need some more extensive revamping before proceeding.
RELNOTES: None.
PiperOrigin-RevId: 187364392
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/analysis')
7 files changed, 18 insertions, 17 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/DefaultInfo.java b/src/main/java/com/google/devtools/build/lib/analysis/DefaultInfo.java index 9af9811a50..82c04c259e 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/DefaultInfo.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/DefaultInfo.java @@ -15,7 +15,6 @@ package com.google.devtools.build.lib.analysis; import com.google.common.collect.ImmutableCollection; import com.google.common.collect.ImmutableList; -import com.google.common.collect.ImmutableMap; import com.google.devtools.build.lib.actions.Artifact; import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable; import com.google.devtools.build.lib.events.Location; @@ -62,8 +61,7 @@ public final class DefaultInfo extends NativeInfo { RunfilesProvider runfilesProvider, FileProvider fileProvider, FilesToRunProvider filesToRunProvider) { - // Fields map is not used here to prevent memory regression - super(PROVIDER, ImmutableMap.<String, Object>of()); + super(PROVIDER); this.runfilesProvider = runfilesProvider; this.fileProvider = fileProvider; this.filesToRunProvider = filesToRunProvider; diff --git a/src/main/java/com/google/devtools/build/lib/analysis/OutputGroupInfo.java b/src/main/java/com/google/devtools/build/lib/analysis/OutputGroupInfo.java index f1c14234f1..9561c91229 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/OutputGroupInfo.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/OutputGroupInfo.java @@ -126,7 +126,7 @@ public final class OutputGroupInfo extends NativeInfo private final ImmutableMap<String, NestedSet<Artifact>> outputGroups; public OutputGroupInfo(ImmutableMap<String, NestedSet<Artifact>> outputGroups) { - super(SKYLARK_CONSTRUCTOR, ImmutableMap.<String, Object>of()); + super(SKYLARK_CONSTRUCTOR); this.outputGroups = outputGroups; } diff --git a/src/main/java/com/google/devtools/build/lib/analysis/platform/ConstraintSettingInfo.java b/src/main/java/com/google/devtools/build/lib/analysis/platform/ConstraintSettingInfo.java index 4b3f2f44f7..c2661ad986 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/platform/ConstraintSettingInfo.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/platform/ConstraintSettingInfo.java @@ -15,7 +15,6 @@ package com.google.devtools.build.lib.analysis.platform; import com.google.common.collect.ImmutableList; -import com.google.common.collect.ImmutableMap; import com.google.devtools.build.lib.cmdline.Label; import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable; import com.google.devtools.build.lib.events.Location; @@ -75,7 +74,7 @@ public class ConstraintSettingInfo extends NativeInfo { @VisibleForSerialization ConstraintSettingInfo(Label label, Location location) { - super(PROVIDER, ImmutableMap.<String, Object>of("label", label), location); + super(PROVIDER, location); this.label = label; } diff --git a/src/main/java/com/google/devtools/build/lib/analysis/platform/ConstraintValueInfo.java b/src/main/java/com/google/devtools/build/lib/analysis/platform/ConstraintValueInfo.java index 84f3544428..3a00932a55 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/platform/ConstraintValueInfo.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/platform/ConstraintValueInfo.java @@ -15,7 +15,6 @@ package com.google.devtools.build.lib.analysis.platform; import com.google.common.collect.ImmutableList; -import com.google.common.collect.ImmutableMap; import com.google.devtools.build.lib.cmdline.Label; import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable; import com.google.devtools.build.lib.events.Location; @@ -79,9 +78,6 @@ public class ConstraintValueInfo extends NativeInfo { ConstraintValueInfo(ConstraintSettingInfo constraint, Label label, Location location) { super( SKYLARK_CONSTRUCTOR, - ImmutableMap.<String, Object>of( - "constraint", constraint, - "label", label), location); this.constraint = constraint; diff --git a/src/main/java/com/google/devtools/build/lib/analysis/platform/PlatformInfo.java b/src/main/java/com/google/devtools/build/lib/analysis/platform/PlatformInfo.java index 3b3462d420..90c8217a0c 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/platform/PlatformInfo.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/platform/PlatformInfo.java @@ -113,9 +113,6 @@ public class PlatformInfo extends NativeInfo { Location location) { super( SKYLARK_CONSTRUCTOR, - ImmutableMap.<String, Object>of( - "label", label, - "constraints", constraints.values().asList()), location); this.label = label; @@ -153,7 +150,7 @@ public class PlatformInfo extends NativeInfo { structField = true ) public Iterable<ConstraintValueInfo> constraints() { - return constraints.values(); + return constraints.values().asList(); } /** diff --git a/src/main/java/com/google/devtools/build/lib/analysis/test/ExecutionInfo.java b/src/main/java/com/google/devtools/build/lib/analysis/test/ExecutionInfo.java index 8b60872cea..63c3abf0a4 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/test/ExecutionInfo.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/test/ExecutionInfo.java @@ -17,6 +17,7 @@ import com.google.common.collect.ImmutableMap; import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable; import com.google.devtools.build.lib.packages.NativeInfo; import com.google.devtools.build.lib.packages.NativeProvider; +import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable; import java.util.Map; /** @@ -33,7 +34,7 @@ public final class ExecutionInfo extends NativeInfo { private final ImmutableMap<String, String> executionInfo; public ExecutionInfo(Map<String, String> requirements) { - super(PROVIDER, ImmutableMap.<String, Object>of("requirements", requirements)); + super(PROVIDER); this.executionInfo = ImmutableMap.copyOf(requirements); } @@ -42,6 +43,11 @@ public final class ExecutionInfo extends NativeInfo { * platforms, etc. Rule tags, such as "requires-XXX", may also be added * as keys to the map. */ + @SkylarkCallable( + name = "requirements", + doc = "A dict indicating special execution requirements, such as hardware platforms.", + structField = true + ) public ImmutableMap<String, String> getExecutionInfo() { return executionInfo; } diff --git a/src/main/java/com/google/devtools/build/lib/analysis/test/TestEnvironmentInfo.java b/src/main/java/com/google/devtools/build/lib/analysis/test/TestEnvironmentInfo.java index 013ff33bb6..858f46adeb 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/test/TestEnvironmentInfo.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/test/TestEnvironmentInfo.java @@ -15,10 +15,10 @@ package com.google.devtools.build.lib.analysis.test; import com.google.common.base.Preconditions; -import com.google.common.collect.ImmutableMap; import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable; import com.google.devtools.build.lib.packages.NativeInfo; import com.google.devtools.build.lib.packages.NativeProvider; +import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable; import java.util.Map; /** Provider containing any additional environment variables for use in the test action. */ @@ -34,13 +34,18 @@ public final class TestEnvironmentInfo extends NativeInfo { /** Constructs a new provider with the given variable name to variable value mapping. */ public TestEnvironmentInfo(Map<String, String> environment) { - super(PROVIDER, ImmutableMap.<String, Object>of("environment", environment)); + super(PROVIDER); this.environment = Preconditions.checkNotNull(environment); } /** * Returns environment variables which should be set on the test action. */ + @SkylarkCallable( + name = "environment", + doc = "A dict containing environment variables which should be set on the test action.", + structField = true + ) public Map<String, String> getEnvironment() { return environment; } |