Don't create an additional NestedSet for additionalInputs when it can be avoided
as this needlessly causes memory overhead.
RELNOTES: None.
PiperOrigin-RevId: 303717384
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCompilationContext.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCompilationContext.java
index 3c6f561..ebffc0b 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCompilationContext.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCompilationContext.java
@@ -455,17 +455,22 @@
}
/**
- * Returns the immutable set of additional transitive inputs needed for
- * compilation, like C++ module map artifacts.
+ * Returns the immutable set of additional transitive inputs needed for compilation, like C++
+ * module map artifacts.
*/
public NestedSet<Artifact> getAdditionalInputs() {
NestedSetBuilder<Artifact> builder = NestedSetBuilder.stableOrder();
+ addAdditionalInputs(builder);
+ return builder.build();
+ }
+
+ /** Adds additional transitive inputs needed for compilation to builder. */
+ void addAdditionalInputs(NestedSetBuilder<Artifact> builder) {
builder.addAll(directModuleMaps);
builder.addTransitive(nonCodeInputs);
if (cppModuleMap != null && propagateModuleMapAsActionInput) {
builder.add(cppModuleMap.getArtifact());
}
- return builder.build();
}
/** @return modules maps from direct dependencies. */
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileActionBuilder.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileActionBuilder.java
index 0205e1e..230789e 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileActionBuilder.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileActionBuilder.java
@@ -356,7 +356,7 @@
if (useHeaderModules() && !shouldPruneModules()) {
realMandatoryInputsBuilder.addTransitive(ccCompilationContext.getTransitiveModules(usePic));
}
- realMandatoryInputsBuilder.addTransitive(ccCompilationContext.getAdditionalInputs());
+ ccCompilationContext.addAdditionalInputs(realMandatoryInputsBuilder);
realMandatoryInputsBuilder.add(Preconditions.checkNotNull(sourceFile));
if (grepIncludes != null) {
realMandatoryInputsBuilder.add(grepIncludes);