[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