aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/pkgcache
diff options
context:
space:
mode:
authorGravatar nharmata <nharmata@google.com>2017-05-01 17:37:46 +0200
committerGravatar Damien Martin-Guillerez <dmarting@google.com>2017-05-02 11:25:35 +0200
commit38b835097f9ae9a6062172b8a33ec2e2d1edde20 (patch)
treeddd5ac16ff3470bdc39193dd6b69fcab6de0ab5a /src/main/java/com/google/devtools/build/lib/pkgcache
parent2b49f678a7dfaf27afc0e44ed7a65b00ec06d413 (diff)
Only allocate some formerly frequently allocated PathFragment objects once.
This reduces both gc churn and retained memory usage. PiperOrigin-RevId: 154718782
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/pkgcache')
-rw-r--r--src/main/java/com/google/devtools/build/lib/pkgcache/PathPackageLocator.java6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/pkgcache/PathPackageLocator.java b/src/main/java/com/google/devtools/build/lib/pkgcache/PathPackageLocator.java
index f828538419..223b0c4483 100644
--- a/src/main/java/com/google/devtools/build/lib/pkgcache/PathPackageLocator.java
+++ b/src/main/java/com/google/devtools/build/lib/pkgcache/PathPackageLocator.java
@@ -45,6 +45,7 @@ import java.util.concurrent.atomic.AtomicReference;
* filesystem) idempotent.
*/
public class PathPackageLocator implements Serializable {
+ private static final PathFragment BUILD_PATH_FRAGMENT = PathFragment.create("BUILD");
public static final ImmutableSet<String> DEFAULT_TOP_LEVEL_EXCLUDES =
ImmutableSet.of("experimental");
@@ -101,7 +102,8 @@ public class PathPackageLocator implements Serializable {
AtomicReference<? extends UnixGlob.FilesystemCalls> cache) {
Preconditions.checkArgument(!packageIdentifier.getRepository().isDefault());
if (packageIdentifier.getRepository().isMain()) {
- return getFilePath(packageIdentifier.getPackageFragment().getRelative("BUILD"), cache);
+ return getFilePath(
+ packageIdentifier.getPackageFragment().getRelative(BUILD_PATH_FRAGMENT), cache);
} else {
Verify.verify(outputBase != null, String.format(
"External package '%s' needs to be loaded but this PathPackageLocator instance does not "
@@ -111,7 +113,7 @@ public class PathPackageLocator implements Serializable {
// is true for the invocation in GlobCache, but not for the locator.getBuildFileForPackage()
// invocation in Parser#include().
Path buildFile = outputBase.getRelative(
- packageIdentifier.getSourceRoot()).getRelative("BUILD");
+ packageIdentifier.getSourceRoot()).getRelative(BUILD_PATH_FRAGMENT);
try {
FileStatus stat = cache.get().statIfFound(buildFile, Symlinks.FOLLOW);
if (stat != null && stat.isFile()) {