diff options
author | shreyax <shreyax@google.com> | 2018-02-26 18:22:13 -0800 |
---|---|---|
committer | Copybara-Service <copybara-piper@google.com> | 2018-02-26 18:23:57 -0800 |
commit | 6b9b6076c1b224d8e4f64fc065a9b84e4ba5817b (patch) | |
tree | 2b65ccd0a13e009e5fe76917a9b2b36a31f39130 /src/main/java/com/google/devtools | |
parent | 8aad4db092624284b686036a042856b883f8e414 (diff) |
Optimize GC churn of Attribute#getAspects by lazily allocating a builder.
PiperOrigin-RevId: 187113491
Diffstat (limited to 'src/main/java/com/google/devtools')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/packages/Attribute.java | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/packages/Attribute.java b/src/main/java/com/google/devtools/build/lib/packages/Attribute.java index 75ff0f3332..4821e3b85b 100644 --- a/src/main/java/com/google/devtools/build/lib/packages/Attribute.java +++ b/src/main/java/com/google/devtools/build/lib/packages/Attribute.java @@ -2110,14 +2110,17 @@ public final class Attribute implements Comparable<Attribute> { * Returns the list of aspects required for dependencies through this attribute. */ public ImmutableList<Aspect> getAspects(Rule rule) { - ImmutableList.Builder<Aspect> builder = ImmutableList.builder(); + ImmutableList.Builder<Aspect> builder = null; for (RuleAspect aspect : aspects) { Aspect a = aspect.getAspect(rule); if (a != null) { + if (builder == null) { + builder = ImmutableList.builder(); + } builder.add(a); } } - return builder.build(); + return builder == null ? ImmutableList.of() : builder.build(); } public ImmutableList<AspectClass> getAspectClasses() { |