Fix usages of PathFragment segments that will become inefficient.

An upcoming replacement to PathFragment will not have efficient segment semantics, causing code to become unnecessarily inefficient.

RELNOTES: None
PiperOrigin-RevId: 182553098
diff --git a/src/main/java/com/google/devtools/build/lib/packages/Package.java b/src/main/java/com/google/devtools/build/lib/packages/Package.java
index ca12997..c37ffa3 100644
--- a/src/main/java/com/google/devtools/build/lib/packages/Package.java
+++ b/src/main/java/com/google/devtools/build/lib/packages/Package.java
@@ -1281,7 +1281,8 @@
       for (OutputFile outputFile : rule.getOutputFiles()) {
         targets.put(outputFile.getName(), outputFile);
         PathFragment outputFileFragment = PathFragment.create(outputFile.getName());
-        for (int i = 1; i < outputFileFragment.segmentCount(); i++) {
+        int segmentCount = outputFileFragment.segmentCount();
+        for (int i = 1; i < segmentCount; i++) {
           String prefix = outputFileFragment.subFragment(0, i).toString();
           outputFilePrefixes.putIfAbsent(prefix, outputFile);
         }
@@ -1473,7 +1474,8 @@
 
         // Check if a prefix of this output file matches an already existing one
         PathFragment outputFileFragment = PathFragment.create(outputFileName);
-        for (int i = 1; i < outputFileFragment.segmentCount(); i++) {
+        int segmentCount = outputFileFragment.segmentCount();
+        for (int i = 1; i < segmentCount; i++) {
           String prefix = outputFileFragment.subFragment(0, i).toString();
           if (outputFiles.containsKey(prefix)) {
             throw conflictingOutputFile(outputFile, outputFiles.get(prefix));