aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/main/java/com/google/devtools/build/lib/vfs/PathFragment.java15
1 files changed, 5 insertions, 10 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/vfs/PathFragment.java b/src/main/java/com/google/devtools/build/lib/vfs/PathFragment.java
index a39486a10d..434cdcfc2c 100644
--- a/src/main/java/com/google/devtools/build/lib/vfs/PathFragment.java
+++ b/src/main/java/com/google/devtools/build/lib/vfs/PathFragment.java
@@ -185,8 +185,7 @@ public final class PathFragment implements Comparable<PathFragment>, Serializabl
* @param offset how many characters from the start of the string to ignore.
*/
private static String[] segment(String toSegment, int offset) {
- char[] chars = toSegment.toCharArray();
- int length = chars.length;
+ int length = toSegment.length();
// Handle "/" and "" quickly.
if (length == offset) {
@@ -198,7 +197,7 @@ public final class PathFragment implements Comparable<PathFragment>, Serializabl
int seg = 0;
int start = offset;
for (int i = offset; i < length; i++) {
- if (isSeparator(chars[i])) {
+ if (isSeparator(toSegment.charAt(i))) {
if (i > start) { // to skip repeated separators
seg++;
}
@@ -212,20 +211,16 @@ public final class PathFragment implements Comparable<PathFragment>, Serializabl
seg = 0;
start = offset;
for (int i = offset; i < length; i++) {
- if (isSeparator(chars[i])) {
+ if (isSeparator(toSegment.charAt(i))) {
if (i > start) { // to skip repeated separators
- // Make a copy of the String here to allow the interning to save memory. String.substring
- // does not make a copy, but refers to the original char array, preventing garbage
- // collection of the parts that are unnecessary.
- result[seg] = StringCanonicalizer.intern(new String(chars, start, i - start));
+ result[seg] = StringCanonicalizer.intern(toSegment.substring(start, i));
seg++;
}
start = i + 1;
}
}
if (start < length) {
- result[seg] = StringCanonicalizer.intern(new String(chars, start, length - start));
- seg++;
+ result[seg] = StringCanonicalizer.intern(toSegment.substring(start, length));
}
return result;
}