Fast-path Label#equals by first comparing the interned PackageIdentifier.
PiperOrigin-RevId: 199007753
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 f271ea6..61805ca 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 @@
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 d8bf3bf..8d7ad19 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 @@
@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));
}