From 6434af053cfffa38909bc86afe69e33b573b6179 Mon Sep 17 00:00:00 2001 From: hlopko Date: Tue, 19 Sep 2017 15:42:58 +0200 Subject: Do not duplicate build variables, reuse variables from cc toolchain Before this cl each linking and compilation action would contain a full copy of all build variables. However, some build variables can be reused, for the memory consumption benefit. With this cl, we contruct a Variables instance in the CcToolchain, and make it a parent of all per-linking and per-compilation variables. RELNOTES: None. PiperOrigin-RevId: 169233756 --- .../build/lib/rules/cpp/CcToolchainProvider.java | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) (limited to 'src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainProvider.java') diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainProvider.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainProvider.java index b79164bbeb..8fc5075c46 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainProvider.java +++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainProvider.java @@ -23,12 +23,12 @@ import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder; import com.google.devtools.build.lib.collect.nestedset.Order; import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable; import com.google.devtools.build.lib.events.Location; +import com.google.devtools.build.lib.rules.cpp.CcToolchainFeatures.Variables; import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable; import com.google.devtools.build.lib.skylarkinterface.SkylarkModule; import com.google.devtools.build.lib.util.Pair; import com.google.devtools.build.lib.util.Preconditions; import com.google.devtools.build.lib.vfs.PathFragment; -import java.util.Map; import javax.annotation.Nullable; /** Information about a C++ compiler used by the cc_* rules. */ @@ -59,7 +59,7 @@ public final class CcToolchainProvider extends ToolchainInfo { CppCompilationContext.EMPTY, false, false, - ImmutableMap.of(), + Variables.EMPTY, ImmutableList.of(), NestedSetBuilder.>emptySet(Order.COMPILE_ORDER), null, @@ -87,7 +87,7 @@ public final class CcToolchainProvider extends ToolchainInfo { private final CppCompilationContext cppCompilationContext; private final boolean supportsParamFiles; private final boolean supportsHeaderParsing; - private final ImmutableMap buildVariables; + private final Variables buildVariables; private final ImmutableList builtinIncludeFiles; private final NestedSet> coverageEnvironment; @Nullable private final Artifact linkDynamicLibraryTool; @@ -116,7 +116,7 @@ public final class CcToolchainProvider extends ToolchainInfo { CppCompilationContext cppCompilationContext, boolean supportsParamFiles, boolean supportsHeaderParsing, - Map buildVariables, + Variables buildVariables, ImmutableList builtinIncludeFiles, NestedSet> coverageEnvironment, Artifact linkDynamicLibraryTool, @@ -144,7 +144,7 @@ public final class CcToolchainProvider extends ToolchainInfo { this.cppCompilationContext = Preconditions.checkNotNull(cppCompilationContext); this.supportsParamFiles = supportsParamFiles; this.supportsHeaderParsing = supportsHeaderParsing; - this.buildVariables = ImmutableMap.copyOf(buildVariables); + this.buildVariables = buildVariables; this.builtinIncludeFiles = builtinIncludeFiles; this.coverageEnvironment = coverageEnvironment; this.linkDynamicLibraryTool = linkDynamicLibraryTool; @@ -298,11 +298,9 @@ public final class CcToolchainProvider extends ToolchainInfo { public CppConfiguration getCppConfiguration() { return cppConfiguration; } - - /** - * Returns build variables to be templated into the crosstool. - */ - public ImmutableMap getBuildVariables() { + + /** Returns build variables to be templated into the crosstool. */ + public Variables getBuildVariables() { return buildVariables; } -- cgit v1.2.3