[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