Automated g4 rollback of commit 7beadb7277453efec7e12b925005e7f0e003b592.

*** Reason for rollback ***

Original CL was rolled backed incorrectly. See post-submit discussion on http://https://github.com/bazelbuild/bazel/commit/7beadb7277453efec7e12b925005e7f0e003b592.

*** Original change description ***

Automated g4 rollback of commit 38b835097f9ae9a6062172b8a33ec2e2d1edde20.

*** Reason for rollback ***

Breaking Bazel build on linux, see http://ci.bazel.io/job/bazel-tests/733/

Repro: bazel build //src/test/java/com/google/devtools/build/lib:packages_test

Found by bisecting.

*** Original change description ***

Only allocate some formerly frequently allocated PathFragment objects once.

This reduces both gc churn and retained memory usage.

RELNOTES: None
PiperOrigin-RevId: 154839279
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java b/src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java
index 30007e6..a6c43d4 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java
@@ -1262,7 +1262,18 @@
    * <p>For example "pkg/dir/name" -> "pkg/&lt;fragment>/rule/dir/name.
    */
   public final PathFragment getUniqueDirectory(String fragment) {
-    return AnalysisUtils.getUniqueDirectory(getLabel(), PathFragment.create(fragment));
+    return getUniqueDirectory(PathFragment.create(fragment));
+  }
+
+  /**
+   * Returns a path fragment qualified by the rule name and unique fragment to
+   * disambiguate artifacts produced from the source file appearing in
+   * multiple rules.
+   *
+   * <p>For example "pkg/dir/name" -> "pkg/&lt;fragment>/rule/dir/name.
+   */
+  public final PathFragment getUniqueDirectory(PathFragment fragment) {
+    return AnalysisUtils.getUniqueDirectory(getLabel(), fragment);
   }
 
   /**