From: Frank Tang Date: Tue, 12 Mar 2019 20:12:54 +0000 (-0700) Subject: ICU-10291 Optimize IDNA toASCII loop X-Git-Tag: release-65-rc~189 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=2232a2b81ecab59a292895ad6c7264912d9cf0b9;p=icu ICU-10291 Optimize IDNA toASCII loop --- diff --git a/icu4c/source/common/uidna.cpp b/icu4c/source/common/uidna.cpp index 7cc97a93a01..ac2f9c3c8cd 100644 --- a/icu4c/source/common/uidna.cpp +++ b/icu4c/source/common/uidna.cpp @@ -57,18 +57,16 @@ toASCIILower(UChar ch){ inline static UBool startsWithPrefix(const UChar* src , int32_t srcLength){ - UBool startsWithPrefix = TRUE; - if(srcLength < ACE_PREFIX_LENGTH){ return FALSE; } for(int8_t i=0; i< ACE_PREFIX_LENGTH; i++){ if(toASCIILower(src[i]) != ACE_PREFIX[i]){ - startsWithPrefix = FALSE; + return FALSE; } } - return startsWithPrefix; + return TRUE; } @@ -441,6 +439,7 @@ _internal_toUnicode(const UChar* src, int32_t srcLength, for(int32_t j=0; j 0x7f){ srcIsASCII = FALSE; + break; }/*else if(isLDHChar(src[j])==FALSE){ // here we do not assemble surrogates // since we know that LDH code points diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/IDNA2003.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/IDNA2003.java index e3503b87ba4..12ba5a97c1e 100644 --- a/icu4j/main/classes/core/src/com/ibm/icu/impl/IDNA2003.java +++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/IDNA2003.java @@ -35,17 +35,15 @@ public final class IDNA2003 { private static final StringPrep namePrep = StringPrep.getInstance(StringPrep.RFC3491_NAMEPREP); private static boolean startsWithPrefix(StringBuffer src){ - boolean startsWithPrefix = true; - if(src.length() < ACE_PREFIX.length){ return false; } for(int i=0; i 0x7f){ srcIsASCII = false; + break; } } int failPos = -1;