Changeset 64018 in webkit


Ignore:
Timestamp:
Jul 24, 2010 6:03:15 PM (14 years ago)
Author:
abarth@webkit.org
Message:

2010-07-24 Adam Barth <abarth@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):
Location:
trunk/WebCore
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/WebCore/ChangeLog

    r64015 r64018  
     12010-07-24  Adam Barth  <abarth@webkit.org>
     2
     3        Reviewed by Eric Seidel.
     4
     5        Atomize strings used by the HTML5 tree builder
     6        https://bugs.webkit.org/show_bug.cgi?id=42875
     7
     8        This is about a 1% improvement to the parsing benchmark.
     9
     10        * html/HTMLTagNames.in:
     11        * html/HTMLTreeBuilder.cpp:
     12        (WebCore::HTMLTreeBuilder::processStartTagForInBody):
     13        (WebCore::HTMLTreeBuilder::processStartTag):
     14        (WebCore::HTMLTreeBuilder::processEndTagForInBody):
     15        (WebCore::HTMLTreeBuilder::processStartTagForInHead):
     16
    1172010-07-24  Patrick Gansterer  <paroga@paroga.com>
    218
  • trunk/WebCore/html/HTMLElement.cpp

    r62398 r64018  
    789789        size_t tagCount = 0;
    790790        WebCore::QualifiedName** tags = HTMLNames::getHTMLTags(&tagCount);
    791         for (size_t i = 0; i < tagCount; i++)
     791        for (size_t i = 0; i < tagCount; i++) {
     792            if (*tags[i] == bgsoundTag
     793                || *tags[i] == commandTag
     794                || *tags[i] == detailsTag
     795                || *tags[i] == figcaptionTag
     796                || *tags[i] == figureTag
     797                || *tags[i] == summaryTag
     798                || *tags[i] == trackTag) {
     799                // Even though we have atoms for these tags, we don't want to
     800                // treat them as "recognized tags" for the purpose of parsing
     801                // because that changes how we parse documents.
     802                continue;
     803            }
    792804            tagList.add(tags[i]->localName().impl());
     805        }
    793806    }
    794807    return tagList.contains(tagName.localName().impl());
  • trunk/WebCore/html/HTMLTagNames.in

    r62418 r64018  
    1616basefont interfaceName=HTMLBaseFontElement
    1717bdo interfaceName=HTMLElement
     18bgsound interfaceName=HTMLElement
    1819big interfaceName=HTMLElement
    1920blockquote
     
    2829col interfaceName=HTMLTableColElement
    2930colgroup interfaceName=HTMLTableColElement
     31command interfaceName=HTMLElement
    3032datagrid interfaceName=HTMLDataGridElement, conditional=DATAGRID
    3133datalist interfaceName=HTMLDataListElement, conditional=DATALIST
     
    3537dd interfaceName=HTMLElement
    3638del interfaceName=HTMLModElement
     39details interfaceName=HTMLElement
    3740dfn interfaceName=HTMLElement
    3841dir interfaceName=HTMLDirectoryElement
     
    4346embed
    4447fieldset interfaceName=HTMLFieldSetElement, constructorNeedsFormElement
     48figcaption interfaceName=HTMLElement
     49figure interfaceName=HTMLElement
    4550font
    4651footer interfaceName=HTMLElement
     
    110115style constructorNeedsCreatedByParser
    111116sub interfaceName=HTMLElement
     117summary interfaceName=HTMLElement
    112118sup interfaceName=HTMLElement
    113119table
     
    120126title
    121127tr interfaceName=HTMLTableRowElement
     128track interfaceName=HTMLElement
    122129tt interfaceName=HTMLElement
    123130u interfaceName=HTMLElement
  • trunk/WebCore/html/HTMLTreeBuilder.cpp

    r64001 r64018  
    120120        || tagName == baseTag
    121121        || tagName == basefontTag
    122         || tagName == "bgsound"
     122        || tagName == bgsoundTag
    123123        || tagName == blockquoteTag
    124124        || tagName == bodyTag
     
    128128        || tagName == colTag
    129129        || tagName == colgroupTag
    130         || tagName == "command"
     130        || tagName == commandTag
    131131        || tagName == ddTag
    132         || tagName == "details"
     132        || tagName == detailsTag
    133133        || tagName == dirTag
    134134        || tagName == divTag
     
    137137        || tagName == embedTag
    138138        || tagName == fieldsetTag
    139         || tagName == "figure"
     139        || tagName == figureTag
    140140        || tagName == footerTag
    141141        || tagName == formTag
     
    771771    if (token.name() == baseTag
    772772        || token.name() == basefontTag
    773         || token.name() == "bgsound"
    774         || token.name() == "command"
     773        || token.name() == bgsoundTag
     774        || token.name() == commandTag
    775775        || token.name() == linkTag
    776776        || token.name() == metaTag
     
    807807        || token.name() == blockquoteTag
    808808        || token.name() == centerTag
    809         || token.name() == "details"
     809        || token.name() == detailsTag
    810810        || token.name() == dirTag
    811811        || token.name() == divTag
    812812        || token.name() == dlTag
    813813        || token.name() == fieldsetTag
    814         || token.name() == "figcaption"
    815         || token.name() == "figure"
     814        || token.name() == figcaptionTag
     815        || token.name() == figureTag
    816816        || token.name() == footerTag
    817817        || token.name() == headerTag
     
    822822        || token.name() == pTag
    823823        || token.name() == sectionTag
    824         || token.name() == "summary"
     824        || token.name() == summaryTag
    825825        || token.name() == ulTag) {
    826826        processFakePEndTagIfPInButtonScope();
     
    944944    if (token.name() == paramTag
    945945        || token.name() == sourceTag
    946         || token.name() == "track") {
     946        || token.name() == trackTag) {
    947947        m_tree.insertSelfClosingHTMLElement(token);
    948948        return;
     
    12341234        if (token.name() == baseTag
    12351235            || token.name() == basefontTag
    1236             || token.name() == "bgsound"
     1236            || token.name() == bgsoundTag
    12371237            || token.name() == linkTag
    12381238            || token.name() == metaTag
     
    13811381        }
    13821382        if (token.name() == basefontTag
    1383             || token.name() == "bgsound"
     1383            || token.name() == bgsoundTag
    13841384            || token.name() == linkTag
    13851385            || token.name() == metaTag
     
    19411941        || token.name() == buttonTag
    19421942        || token.name() == centerTag
    1943         || token.name() == "details"
     1943        || token.name() == detailsTag
    19441944        || token.name() == dirTag
    19451945        || token.name() == divTag
    19461946        || token.name() == dlTag
    19471947        || token.name() == fieldsetTag
    1948         || token.name() == "figure"
     1948        || token.name() == figureTag
    19491949        || token.name() == footerTag
    19501950        || token.name() == headerTag
     
    27372737        return true;
    27382738    }
    2739     // FIXME: Atomize "command".
    27402739    if (token.name() == baseTag
    27412740        || token.name() == basefontTag
    2742         || token.name() == "bgsound"
    2743         || token.name() == "command"
     2741        || token.name() == bgsoundTag
     2742        || token.name() == commandTag
    27442743        || token.name() == linkTag
    27452744        || token.name() == metaTag) {
Note: See TracChangeset for help on using the changeset viewer.