[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 15:12:09 UTC 2011


The following commit has been merged in the debian/experimental branch:
commit 2663e395ad4e9294ab89225c2d333f87fe1632cf
Author: paroga at webkit.org <paroga at webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Sun Jan 9 03:10:11 2011 +0000

    2011-01-08  Patrick Gansterer  <paroga at webkit.org>
    
            Reviewed by Darin Adler.
    
            Unify string table adding in AtomicString
            https://bugs.webkit.org/show_bug.cgi?id=51927
    
            Move code for adding a string into a separate function.
            This removes multiple occurrence of the same logic.
    
            * wtf/text/AtomicString.cpp:
            (WTF::addToStringTable): Added.
            (WTF::AtomicString::add): Use addToStringTable().
            (WTF::AtomicString::fromUTF8): Ditto.
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@75343 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/Source/JavaScriptCore/ChangeLog b/Source/JavaScriptCore/ChangeLog
index abb205c..41426f1 100644
--- a/Source/JavaScriptCore/ChangeLog
+++ b/Source/JavaScriptCore/ChangeLog
@@ -1,3 +1,18 @@
+2011-01-08  Patrick Gansterer  <paroga at webkit.org>
+
+        Reviewed by Darin Adler.
+
+        Unify string table adding in AtomicString
+        https://bugs.webkit.org/show_bug.cgi?id=51927
+
+        Move code for adding a string into a separate function.
+        This removes multiple occurrence of the same logic.
+
+        * wtf/text/AtomicString.cpp:
+        (WTF::addToStringTable): Added.
+        (WTF::AtomicString::add): Use addToStringTable().
+        (WTF::AtomicString::fromUTF8): Ditto.
+
 2011-01-07  Geoffrey Garen  <ggaren at apple.com>
 
         Reviewed by Gavin Barraclough.
diff --git a/Source/JavaScriptCore/wtf/text/AtomicString.cpp b/Source/JavaScriptCore/wtf/text/AtomicString.cpp
index 93ad21d..dd8d66c 100644
--- a/Source/JavaScriptCore/wtf/text/AtomicString.cpp
+++ b/Source/JavaScriptCore/wtf/text/AtomicString.cpp
@@ -74,6 +74,16 @@ static inline HashSet<StringImpl*>& stringTable()
     return table->table();
 }
 
+template<typename T, typename HashTranslator>
+static inline PassRefPtr<StringImpl> addToStringTable(const T& value)
+{
+    pair<HashSet<StringImpl*>::iterator, bool> addResult = stringTable().add<T, HashTranslator>(value);
+
+    // If the string is newly-translated, then we need to adopt it.
+    // The boolean in the pair tells us if that is so.
+    return addResult.second ? adoptRef(*addResult.first) : *addResult.first;
+}
+
 struct CStringTranslator {
     static unsigned hash(const char* c)
     {
@@ -115,11 +125,9 @@ PassRefPtr<StringImpl> AtomicString::add(const char* c)
     if (!c)
         return 0;
     if (!*c)
-        return StringImpl::empty();    
-    pair<HashSet<StringImpl*>::iterator, bool> addResult = stringTable().add<const char*, CStringTranslator>(c);
-    if (!addResult.second)
-        return *addResult.first;
-    return adoptRef(*addResult.first);
+        return StringImpl::empty();
+
+    return addToStringTable<const char*, CStringTranslator>(c);
 }
 
 struct UCharBuffer {
@@ -265,12 +273,8 @@ PassRefPtr<StringImpl> AtomicString::add(const UChar* s, unsigned length)
     if (!length)
         return StringImpl::empty();
     
-    UCharBuffer buf = { s, length }; 
-    pair<HashSet<StringImpl*>::iterator, bool> addResult = stringTable().add<UCharBuffer, UCharBufferTranslator>(buf);
-
-    // If the string is newly-translated, then we need to adopt it.
-    // The boolean in the pair tells us if that is so.
-    return addResult.second ? adoptRef(*addResult.first) : *addResult.first;
+    UCharBuffer buffer = { s, length };
+    return addToStringTable<UCharBuffer, UCharBufferTranslator>(buffer);
 }
 
 PassRefPtr<StringImpl> AtomicString::add(const UChar* s, unsigned length, unsigned existingHash)
@@ -280,12 +284,9 @@ PassRefPtr<StringImpl> AtomicString::add(const UChar* s, unsigned length, unsign
 
     if (!length)
         return StringImpl::empty();
-    
-    HashAndCharacters buffer = { existingHash, s, length }; 
-    pair<HashSet<StringImpl*>::iterator, bool> addResult = stringTable().add<HashAndCharacters, HashAndCharactersTranslator>(buffer);
-    if (!addResult.second)
-        return *addResult.first;
-    return adoptRef(*addResult.first);
+
+    HashAndCharacters buffer = { existingHash, s, length };
+    return addToStringTable<HashAndCharacters, HashAndCharactersTranslator>(buffer);
 }
 
 PassRefPtr<StringImpl> AtomicString::add(const UChar* s)
@@ -300,12 +301,8 @@ PassRefPtr<StringImpl> AtomicString::add(const UChar* s)
     if (!length)
         return StringImpl::empty();
 
-    UCharBuffer buf = {s, length}; 
-    pair<HashSet<StringImpl*>::iterator, bool> addResult = stringTable().add<UCharBuffer, UCharBufferTranslator>(buf);
-
-    // If the string is newly-translated, then we need to adopt it.
-    // The boolean in the pair tells us if that is so.
-    return addResult.second ? adoptRef(*addResult.first) : *addResult.first;
+    UCharBuffer buffer = { s, length };
+    return addToStringTable<UCharBuffer, UCharBufferTranslator>(buffer);
 }
 
 PassRefPtr<StringImpl> AtomicString::addSlowCase(StringImpl* r)
@@ -370,12 +367,8 @@ AtomicString AtomicString::fromUTF8(const char* characters, size_t length)
     if (!buffer.hash)
         return AtomicString();
 
-    pair<HashSet<StringImpl*>::iterator, bool> addResult = stringTable().add<HashAndUTF8Characters, HashAndUTF8CharactersTranslator>(buffer);
-
-    // If the string is newly-translated, then we need to adopt it.
-    // The boolean in the pair tells us if that is so.
     AtomicString atomicString;
-    atomicString.m_string = addResult.second ? adoptRef(*addResult.first) : *addResult.first;
+    atomicString.m_string = addToStringTable<HashAndUTF8Characters, HashAndUTF8CharactersTranslator>(buffer);
     return atomicString;
 }
 

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list