diff options
author | 2017-05-01 17:37:46 +0200 | |
---|---|---|
committer | 2017-05-02 11:25:35 +0200 | |
commit | 38b835097f9ae9a6062172b8a33ec2e2d1edde20 (patch) | |
tree | ddd5ac16ff3470bdc39193dd6b69fcab6de0ab5a /src/main/java/com/google/devtools/build/lib/pkgcache | |
parent | 2b49f678a7dfaf27afc0e44ed7a65b00ec06d413 (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.java | 6 |
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()) { |