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.