aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/cmdline
diff options
context:
space:
mode:
authorGravatar shreyax <shreyax@google.com>2018-06-02 15:08:51 -0700
committerGravatar Copybara-Service <copybara-piper@google.com>2018-06-02 15:09:58 -0700
commit43a1dc799f068daaf5487e92ace90ad65d0560bf (patch)
treed8a965f43f61c869aa9dee452a36024bc3a05086 /src/main/java/com/google/devtools/build/lib/cmdline
parentff008f445905bf6f4601a368782b620f7899d322 (diff)
Fast-path Label#equals by first comparing the interned PackageIdentifier.
PiperOrigin-RevId: 199007753
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/cmdline')
-rw-r--r--src/main/java/com/google/devtools/build/lib/cmdline/Label.java5
-rw-r--r--src/main/java/com/google/devtools/build/lib/cmdline/PackageIdentifier.java1
2 files changed, 3 insertions, 3 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/cmdline/Label.java b/src/main/java/com/google/devtools/build/lib/cmdline/Label.java
index f271ea6c8b..61805ca5ae 100644
--- a/src/main/java/com/google/devtools/build/lib/cmdline/Label.java
+++ b/src/main/java/com/google/devtools/build/lib/cmdline/Label.java
@@ -539,9 +539,8 @@ public final class Label
return false;
}
Label otherLabel = (Label) other;
- // Perform the equality comparisons in order from least likely to most likely.
- return name.equals(otherLabel.name)
- && packageIdentifier.equals(otherLabel.packageIdentifier);
+ // Package identifiers are interned so we compare them first.
+ return packageIdentifier.equals(otherLabel.packageIdentifier) && name.equals(otherLabel.name);
}
/**
diff --git a/src/main/java/com/google/devtools/build/lib/cmdline/PackageIdentifier.java b/src/main/java/com/google/devtools/build/lib/cmdline/PackageIdentifier.java
index d8bf3bf91c..8d7ad1910a 100644
--- a/src/main/java/com/google/devtools/build/lib/cmdline/PackageIdentifier.java
+++ b/src/main/java/com/google/devtools/build/lib/cmdline/PackageIdentifier.java
@@ -46,6 +46,7 @@ public final class PackageIdentifier
@AutoCodec.Instantiator
public static PackageIdentifier create(RepositoryName repository, PathFragment pkgName) {
+ // Note: We rely on these being interned to fast-path Label#equals.
return INTERNER.intern(new PackageIdentifier(repository, pkgName));
}