Call precomputed() on static CharMatcher instances. Removes a noticeable hotspot from LabelValidator.validateTargetName(). -- MOS_MIGRATED_REVID=128359980
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/LabelExpander.java b/src/main/java/com/google/devtools/build/lib/analysis/LabelExpander.java index f067ddb..5873b4d 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/LabelExpander.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/LabelExpander.java
@@ -63,7 +63,8 @@ CharMatcher.inRange('a', 'z') .or(CharMatcher.inRange('A', 'Z')) .or(CharMatcher.inRange('0', '9')) - .or(CharMatcher.anyOf(":/_.-+" + PathFragment.SEPARATOR_CHAR)); + .or(CharMatcher.anyOf(":/_.-+" + PathFragment.SEPARATOR_CHAR)) + .precomputed(); /** * Expands all references to labels embedded within a string using the
diff --git a/src/main/java/com/google/devtools/build/lib/cmdline/LabelValidator.java b/src/main/java/com/google/devtools/build/lib/cmdline/LabelValidator.java index 42510c7..e9c0db3 100644 --- a/src/main/java/com/google/devtools/build/lib/cmdline/LabelValidator.java +++ b/src/main/java/com/google/devtools/build/lib/cmdline/LabelValidator.java
@@ -48,7 +48,8 @@ private static final CharMatcher ALWAYS_ALLOWED_TARGET_CHARACTERS = CharMatcher.javaLetterOrDigit() .or(PUNCTUATION_REQUIRING_QUOTING) - .or(PUNCTUATION_NOT_REQUIRING_QUOTING); + .or(PUNCTUATION_NOT_REQUIRING_QUOTING) + .precomputed(); @VisibleForTesting static final String PACKAGE_NAME_ERROR =
diff --git a/src/main/java/com/google/devtools/build/lib/util/ShellEscaper.java b/src/main/java/com/google/devtools/build/lib/util/ShellEscaper.java index 48d311f..0548d5f 100644 --- a/src/main/java/com/google/devtools/build/lib/util/ShellEscaper.java +++ b/src/main/java/com/google/devtools/build/lib/util/ShellEscaper.java
@@ -62,7 +62,8 @@ CharMatcher.anyOf("@%-_+:,./") .or(CharMatcher.inRange('0', '9')) // We can't use CharMatcher.javaLetterOrDigit(), .or(CharMatcher.inRange('a', 'z')) // that would also accept non-ASCII digits and - .or(CharMatcher.inRange('A', 'Z')); // letters. + .or(CharMatcher.inRange('A', 'Z')) // letters. + .precomputed(); /** * Escapes a string by adding strong (single) quotes around it if necessary.