[SCM] WebKit Debian packaging branch, debian/experimental, updated. upstream/1.3.3-9427-gc2be6fc
abarth at webkit.org
abarth at webkit.org
Wed Dec 22 11:27:18 UTC 2010
The following commit has been merged in the debian/experimental branch:
commit 2844172f685de87a6f57d7a65e7f5318cfbab2fa
Author: abarth at webkit.org <abarth at webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date: Sun Jul 25 01:03:15 2010 +0000
2010-07-24 Adam Barth <abarth at webkit.org>
Reviewed by Eric Seidel.
Atomize strings used by the HTML5 tree builder
https://bugs.webkit.org/show_bug.cgi?id=42875
This is about a 1% improvement to the parsing benchmark.
* html/HTMLTagNames.in:
* html/HTMLTreeBuilder.cpp:
(WebCore::HTMLTreeBuilder::processStartTagForInBody):
(WebCore::HTMLTreeBuilder::processStartTag):
(WebCore::HTMLTreeBuilder::processEndTagForInBody):
(WebCore::HTMLTreeBuilder::processStartTagForInHead):
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@64018 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog
index 406df73..21aee3c 100644
--- a/WebCore/ChangeLog
+++ b/WebCore/ChangeLog
@@ -1,3 +1,19 @@
+2010-07-24 Adam Barth <abarth at webkit.org>
+
+ Reviewed by Eric Seidel.
+
+ Atomize strings used by the HTML5 tree builder
+ https://bugs.webkit.org/show_bug.cgi?id=42875
+
+ This is about a 1% improvement to the parsing benchmark.
+
+ * html/HTMLTagNames.in:
+ * html/HTMLTreeBuilder.cpp:
+ (WebCore::HTMLTreeBuilder::processStartTagForInBody):
+ (WebCore::HTMLTreeBuilder::processStartTag):
+ (WebCore::HTMLTreeBuilder::processEndTagForInBody):
+ (WebCore::HTMLTreeBuilder::processStartTagForInHead):
+
2010-07-24 Patrick Gansterer <paroga at paroga.com>
Reviewed by Darin Adler.
diff --git a/WebCore/html/HTMLElement.cpp b/WebCore/html/HTMLElement.cpp
index 8985407..fb1bcc2 100644
--- a/WebCore/html/HTMLElement.cpp
+++ b/WebCore/html/HTMLElement.cpp
@@ -788,8 +788,21 @@ bool HTMLElement::isRecognizedTagName(const QualifiedName& tagName)
if (tagList.isEmpty()) {
size_t tagCount = 0;
WebCore::QualifiedName** tags = HTMLNames::getHTMLTags(&tagCount);
- for (size_t i = 0; i < tagCount; i++)
+ for (size_t i = 0; i < tagCount; i++) {
+ if (*tags[i] == bgsoundTag
+ || *tags[i] == commandTag
+ || *tags[i] == detailsTag
+ || *tags[i] == figcaptionTag
+ || *tags[i] == figureTag
+ || *tags[i] == summaryTag
+ || *tags[i] == trackTag) {
+ // Even though we have atoms for these tags, we don't want to
+ // treat them as "recognized tags" for the purpose of parsing
+ // because that changes how we parse documents.
+ continue;
+ }
tagList.add(tags[i]->localName().impl());
+ }
}
return tagList.contains(tagName.localName().impl());
}
diff --git a/WebCore/html/HTMLTagNames.in b/WebCore/html/HTMLTagNames.in
index 9c66a95..f844fa8 100644
--- a/WebCore/html/HTMLTagNames.in
+++ b/WebCore/html/HTMLTagNames.in
@@ -15,6 +15,7 @@ b interfaceName=HTMLElement
base
basefont interfaceName=HTMLBaseFontElement
bdo interfaceName=HTMLElement
+bgsound interfaceName=HTMLElement
big interfaceName=HTMLElement
blockquote
body
@@ -27,6 +28,7 @@ cite interfaceName=HTMLElement
code interfaceName=HTMLElement
col interfaceName=HTMLTableColElement
colgroup interfaceName=HTMLTableColElement
+command interfaceName=HTMLElement
datagrid interfaceName=HTMLDataGridElement, conditional=DATAGRID
datalist interfaceName=HTMLDataListElement, conditional=DATALIST
dcell interfaceName=HTMLDataGridCellElement, conditional=DATAGRID
@@ -34,6 +36,7 @@ dcol interfaceName=HTMLDataGridColElement, conditional=DATAGRID
drow interfaceName=HTMLDataGridRowElement, conditional=DATAGRID
dd interfaceName=HTMLElement
del interfaceName=HTMLModElement
+details interfaceName=HTMLElement
dfn interfaceName=HTMLElement
dir interfaceName=HTMLDirectoryElement
div
@@ -42,6 +45,8 @@ dt interfaceName=HTMLElement
em interfaceName=HTMLElement
embed
fieldset interfaceName=HTMLFieldSetElement, constructorNeedsFormElement
+figcaption interfaceName=HTMLElement
+figure interfaceName=HTMLElement
font
footer interfaceName=HTMLElement
form
@@ -109,6 +114,7 @@ strike interfaceName=HTMLElement
strong interfaceName=HTMLElement
style constructorNeedsCreatedByParser
sub interfaceName=HTMLElement
+summary interfaceName=HTMLElement
sup interfaceName=HTMLElement
table
tbody interfaceName=HTMLTableSectionElement
@@ -119,6 +125,7 @@ th interfaceName=HTMLTableCellElement
thead interfaceName=HTMLTableSectionElement
title
tr interfaceName=HTMLTableRowElement
+track interfaceName=HTMLElement
tt interfaceName=HTMLElement
u interfaceName=HTMLElement
ul interfaceName=HTMLUListElement
diff --git a/WebCore/html/HTMLTreeBuilder.cpp b/WebCore/html/HTMLTreeBuilder.cpp
index 4f6ce02..7a9c295 100644
--- a/WebCore/html/HTMLTreeBuilder.cpp
+++ b/WebCore/html/HTMLTreeBuilder.cpp
@@ -119,7 +119,7 @@ bool isSpecialTag(const AtomicString& tagName)
|| tagName == asideTag
|| tagName == baseTag
|| tagName == basefontTag
- || tagName == "bgsound"
+ || tagName == bgsoundTag
|| tagName == blockquoteTag
|| tagName == bodyTag
|| tagName == brTag
@@ -127,16 +127,16 @@ bool isSpecialTag(const AtomicString& tagName)
|| tagName == centerTag
|| tagName == colTag
|| tagName == colgroupTag
- || tagName == "command"
+ || tagName == commandTag
|| tagName == ddTag
- || tagName == "details"
+ || tagName == detailsTag
|| tagName == dirTag
|| tagName == divTag
|| tagName == dlTag
|| tagName == dtTag
|| tagName == embedTag
|| tagName == fieldsetTag
- || tagName == "figure"
+ || tagName == figureTag
|| tagName == footerTag
|| tagName == formTag
|| tagName == frameTag
@@ -770,8 +770,8 @@ void HTMLTreeBuilder::processStartTagForInBody(AtomicHTMLToken& token)
}
if (token.name() == baseTag
|| token.name() == basefontTag
- || token.name() == "bgsound"
- || token.name() == "command"
+ || token.name() == bgsoundTag
+ || token.name() == commandTag
|| token.name() == linkTag
|| token.name() == metaTag
|| token.name() == noframesTag
@@ -806,13 +806,13 @@ void HTMLTreeBuilder::processStartTagForInBody(AtomicHTMLToken& token)
|| token.name() == asideTag
|| token.name() == blockquoteTag
|| token.name() == centerTag
- || token.name() == "details"
+ || token.name() == detailsTag
|| token.name() == dirTag
|| token.name() == divTag
|| token.name() == dlTag
|| token.name() == fieldsetTag
- || token.name() == "figcaption"
- || token.name() == "figure"
+ || token.name() == figcaptionTag
+ || token.name() == figureTag
|| token.name() == footerTag
|| token.name() == headerTag
|| token.name() == hgroupTag
@@ -821,7 +821,7 @@ void HTMLTreeBuilder::processStartTagForInBody(AtomicHTMLToken& token)
|| token.name() == olTag
|| token.name() == pTag
|| token.name() == sectionTag
- || token.name() == "summary"
+ || token.name() == summaryTag
|| token.name() == ulTag) {
processFakePEndTagIfPInButtonScope();
m_tree.insertHTMLElement(token);
@@ -943,7 +943,7 @@ void HTMLTreeBuilder::processStartTagForInBody(AtomicHTMLToken& token)
}
if (token.name() == paramTag
|| token.name() == sourceTag
- || token.name() == "track") {
+ || token.name() == trackTag) {
m_tree.insertSelfClosingHTMLElement(token);
return;
}
@@ -1233,7 +1233,7 @@ void HTMLTreeBuilder::processStartTag(AtomicHTMLToken& token)
}
if (token.name() == baseTag
|| token.name() == basefontTag
- || token.name() == "bgsound"
+ || token.name() == bgsoundTag
|| token.name() == linkTag
|| token.name() == metaTag
|| token.name() == noframesTag
@@ -1380,7 +1380,7 @@ void HTMLTreeBuilder::processStartTag(AtomicHTMLToken& token)
return;
}
if (token.name() == basefontTag
- || token.name() == "bgsound"
+ || token.name() == bgsoundTag
|| token.name() == linkTag
|| token.name() == metaTag
|| token.name() == noframesTag
@@ -1940,12 +1940,12 @@ void HTMLTreeBuilder::processEndTagForInBody(AtomicHTMLToken& token)
|| token.name() == blockquoteTag
|| token.name() == buttonTag
|| token.name() == centerTag
- || token.name() == "details"
+ || token.name() == detailsTag
|| token.name() == dirTag
|| token.name() == divTag
|| token.name() == dlTag
|| token.name() == fieldsetTag
- || token.name() == "figure"
+ || token.name() == figureTag
|| token.name() == footerTag
|| token.name() == headerTag
|| token.name() == hgroupTag
@@ -2736,11 +2736,10 @@ bool HTMLTreeBuilder::processStartTagForInHead(AtomicHTMLToken& token)
m_tree.insertHTMLHtmlStartTagInBody(token);
return true;
}
- // FIXME: Atomize "command".
if (token.name() == baseTag
|| token.name() == basefontTag
- || token.name() == "bgsound"
- || token.name() == "command"
+ || token.name() == bgsoundTag
+ || token.name() == commandTag
|| token.name() == linkTag
|| token.name() == metaTag) {
m_tree.insertSelfClosingHTMLElement(token);
--
WebKit Debian packaging
More information about the Pkg-webkit-commits
mailing list