view patches/openjdk/6792400-Avoid_loading_Normalizer_resources.patch @ 2564:4515e31b48fa

Backport of: 6792400: Avoid loading of Normalizer resources for simple uses
author ptisnovs
date Wed, 18 Apr 2012 18:41:40 +0200
parents
children
line wrap: on
line source

# HG changeset patch
# User peytoia
# Date 1245934539 -32400
# Node ID e0707baa159364ff923bf901eab1b6c83d4cf092
# Parent  4d54d6e7bcefd16bcc9a26b93937359f031389ca
6792400: Avoid loading of Normalizer resources for simple uses
Reviewed-by: okutsu

diff -r 4d54d6e7bcef -r e0707baa1593 src/share/classes/sun/text/normalizer/NormalizerBase.java
--- openjdk/jdk/src/share/classes/sun/text/normalizer/NormalizerBase.java	Thu Jun 25 02:42:26 2009 -0700
+++ openjdk/jdk/src/share/classes/sun/text/normalizer/NormalizerBase.java	Thu Jun 25 21:55:39 2009 +0900
@@ -1598,15 +1598,34 @@
      * @param options   the optional features to be enabled.
      */
     public static String normalize(String str, Normalizer.Form form, int options) {
+        int len = str.length();
+        boolean asciiOnly = true;
+        if (len < 80) {
+            for (int i = 0; i < len; i++) {
+                if (str.charAt(i) > 127) {
+                    asciiOnly = false;
+                    break;
+                }
+            }
+        } else {
+            char[] a = str.toCharArray();
+            for (int i = 0; i < len; i++) {
+                if (a[i] > 127) {
+                    asciiOnly = false;
+                    break;
+                }
+            }
+        }
+
         switch (form) {
         case NFC :
-            return NFC.normalize(str, options);
+            return asciiOnly ? str : NFC.normalize(str, options);
         case NFD :
-            return NFD.normalize(str, options);
+            return asciiOnly ? str : NFD.normalize(str, options);
         case NFKC :
-            return NFKC.normalize(str, options);
+            return asciiOnly ? str : NFKC.normalize(str, options);
         case NFKD :
-            return NFKD.normalize(str, options);
+            return asciiOnly ? str : NFKD.normalize(str, options);
         }
 
         throw new IllegalArgumentException("Unexpected normalization form: " +