[SCM] WebKit Debian packaging branch, debian/experimental, updated. debian/1.3.8-1-1049-g2e11a8e

paroga at webkit.org paroga at webkit.org
Fri Jan 21 14:49:31 UTC 2011


The following commit has been merged in the debian/experimental branch:
commit bd0f2e394106262a9f529794cfb5b9ff67f09304
Author: paroga at webkit.org <paroga at webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Fri Dec 31 12:43:34 2010 +0000

    2010-12-31  Patrick Gansterer  <paroga at webkit.org>
    
            Reviewed by Darin Adler.
    
            Add a fast case for ASCII strings in HashAndUTF8CharactersTranslator::equal
            https://bugs.webkit.org/show_bug.cgi?id=50517
    
            This change shows about 2% performance win on the xml-parser benchmark.
    
            * wtf/text/AtomicString.cpp:
            (WTF::HashAndUTF8CharactersTranslator::equal):
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@74829 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/JavaScriptCore/ChangeLog b/JavaScriptCore/ChangeLog
index b8a6a92..bd49e93 100644
--- a/JavaScriptCore/ChangeLog
+++ b/JavaScriptCore/ChangeLog
@@ -1,3 +1,15 @@
+2010-12-31  Patrick Gansterer  <paroga at webkit.org>
+
+        Reviewed by Darin Adler.
+
+        Add a fast case for ASCII strings in HashAndUTF8CharactersTranslator::equal
+        https://bugs.webkit.org/show_bug.cgi?id=50517
+
+        This change shows about 2% performance win on the xml-parser benchmark.
+
+        * wtf/text/AtomicString.cpp:
+        (WTF::HashAndUTF8CharactersTranslator::equal):
+
 2010-12-30  Patrick Gansterer  <paroga at webkit.org>
 
         Reviewed by Ariya Hidayat.
diff --git a/JavaScriptCore/wtf/text/AtomicString.cpp b/JavaScriptCore/wtf/text/AtomicString.cpp
index acbcd34..93ad21d 100644
--- a/JavaScriptCore/wtf/text/AtomicString.cpp
+++ b/JavaScriptCore/wtf/text/AtomicString.cpp
@@ -225,7 +225,22 @@ struct HashAndUTF8CharactersTranslator {
 
     static bool equal(StringImpl* const& string, const HashAndUTF8Characters& buffer)
     {
-        return equalUTF16WithUTF8(string->characters(), string->characters() + string->length(), buffer.characters, buffer.characters + buffer.length);
+        if (buffer.utf16Length != string->length())
+            return false;
+
+        const UChar* stringCharacters = string->characters();
+
+        // If buffer contains only ASCII characters UTF-8 and UTF16 length are the same.
+        if (buffer.utf16Length != buffer.length)
+            return equalUTF16WithUTF8(stringCharacters, stringCharacters + string->length(), buffer.characters, buffer.characters + buffer.length);
+
+        for (unsigned i = 0; i < buffer.length; ++i) {
+            ASSERT(isASCII(buffer.characters[i]));
+            if (stringCharacters[i] != buffer.characters[i])
+                return false;
+        }
+
+        return true;
     }
 
     static void translate(StringImpl*& location, const HashAndUTF8Characters& buffer, unsigned hash)

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list