Prevent regression from creating unnecessary BuildOptions instances. Only create
new instances when actually necessary.
RELNOTES: None.
PiperOrigin-RevId: 243090646
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/config/ConfigurationResolver.java b/src/main/java/com/google/devtools/build/lib/analysis/config/ConfigurationResolver.java
index 40f9805..b918b88 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/config/ConfigurationResolver.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/config/ConfigurationResolver.java
@@ -494,14 +494,17 @@
private static BuildOptions addDefaultStarlarkOptions(
BuildOptions fromOptions, ImmutableMap<Label, Object> buildSettingDefaults) {
- BuildOptions.Builder optionsWithDefaults = fromOptions.toBuilder();
+ BuildOptions.Builder optionsWithDefaults = null;
for (Map.Entry<Label, Object> buildSettingDefault : buildSettingDefaults.entrySet()) {
Label buildSetting = buildSettingDefault.getKey();
- if (!optionsWithDefaults.contains(buildSetting)) {
+ if (!fromOptions.getStarlarkOptions().containsKey(buildSetting)) {
+ if (optionsWithDefaults == null) {
+ optionsWithDefaults = fromOptions.toBuilder();
+ }
optionsWithDefaults.addStarlarkOption(buildSetting, buildSettingDefault.getValue());
}
}
- return optionsWithDefaults.build();
+ return optionsWithDefaults == null ? fromOptions : optionsWithDefaults.build();
}
/**