diff options
author | Kulanthaivel Palanichamy <kulanthaivel@codeaurora.org> | 2012-08-15 17:14:48 -0700 |
---|---|---|
committer | Steve Kondik <shade@chemlab.org> | 2013-01-20 18:38:34 -0800 |
commit | 91437969ddb28bc81b3652986a67aae7e2465db2 (patch) | |
tree | 4d09df4e02a483e573700d8bfacb6fec8b658a7c /Source/JavaScriptCore | |
parent | 0f5d4355d7a384679722338d55f65bbb92350cfc (diff) | |
download | external_webkit-91437969ddb28bc81b3652986a67aae7e2465db2.zip external_webkit-91437969ddb28bc81b3652986a67aae7e2465db2.tar.gz external_webkit-91437969ddb28bc81b3652986a67aae7e2465db2.tar.bz2 |
[WebKit] Browsermark DomAdvSearch and DomSearch optimizations
This patch is a combination of the following optimizations.
Optimize appendCharactersReplacingEntities
[Performance] Optimize innerHTML and outerHTML
https://bugs.webkit.org/show_bug.cgi?id=81214
Optimize Dromaeo/dom-query.html by caching NodeRareData on Document
https://bugs.webkit.org/show_bug.cgi?id=90059
Optimize Dromaeo/dom-attr.html by speeding up Element::getAttribute()
https://bugs.webkit.org/show_bug.cgi?id=90174
Change argument types of Element::getAttribute*() from String to AtomicString
https://bugs.webkit.org/show_bug.cgi?id=90246
Conflicts:
Source/WebCore/ChangeLog
Source/WebCore/dom/Document.cpp
Source/WebCore/dom/Document.h
Conflicts:
Source/WebCore/ChangeLog
Change-Id: I9ca3d2e883155e2ad08c3cb0c5912b935ebe9406
Diffstat (limited to 'Source/JavaScriptCore')
-rw-r--r-- | Source/JavaScriptCore/wtf/text/StringBuilder.h | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/Source/JavaScriptCore/wtf/text/StringBuilder.h b/Source/JavaScriptCore/wtf/text/StringBuilder.h index f10af64..e891932 100644 --- a/Source/JavaScriptCore/wtf/text/StringBuilder.h +++ b/Source/JavaScriptCore/wtf/text/StringBuilder.h @@ -43,6 +43,9 @@ public: void append(const String& string) { + if (!string.length()) + return; + // If we're appending to an empty string, and there is not buffer // (in case reserveCapacity has been called) then just retain the // string. @@ -54,6 +57,22 @@ public: append(string.characters(), string.length()); } + void append(const StringBuilder& other) + { + if (!other.m_length) + return; + + // If we're appending to an empty string, and there is not a buffer (reserveCapacity has not been called) + // then just retain the string. + if (!m_length && !m_buffer && !other.m_string.isNull()) { + m_string = other.m_string; + m_length = other.m_length; + return; + } + + append(other.characters(), other.m_length); + } + void append(const char* characters) { if (characters) @@ -114,6 +133,16 @@ public: return m_buffer->characters()[i]; } + const UChar* characters() const + { + if (!m_length) + return 0; + if (!m_string.isNull()) + return m_string.characters(); + ASSERT(m_buffer); + return m_buffer->characters(); + } + void clear() { m_length = 0; |