<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[173724] trunk/Source/WebCore</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/173724">173724</a></dd>
<dt>Author</dt> <dd>cdumez@apple.com</dd>
<dt>Date</dt> <dd>2014-09-18 09:52:10 -0700 (Thu, 18 Sep 2014)</dd>
</dl>

<h3>Log Message</h3>
<pre>Use fastHasAttribute() / fastGetAttribute() when possible
https://bugs.webkit.org/show_bug.cgi?id=136900

Reviewed by Benjamin Poulain.

Use fastHasAttribute() / fastGetAttribute() when possible, that is when
the attribute is not SVG-animated or the |style| attribute, to avoid
synchronizing attributes unnecessarily.

Also avoid calling hasAttribute(xxxAttr) then getAttribute(xxxAttr) as
it causes 2 linear searches. It is best to call getAttribute(xxxAttr)
directly and check if it returns the nullAtom.

No new tests, no behavior change. Element::fastAttributeLookupAllowed()
is there as a safety set for debug builds.

* accessibility/AccessibilityListBoxOption.cpp:
(WebCore::AccessibilityListBoxOption::isEnabled):
* accessibility/AccessibilityNodeObject.cpp:
(WebCore::AccessibilityNodeObject::alternativeTextForWebArea):
(WebCore::AccessibilityNodeObject::hierarchicalLevel):
* accessibility/AccessibilityObject.cpp:
(WebCore::AccessibilityObject::contentEditableAttributeIsEnabled):
* dom/Document.cpp:
(WebCore::Document::hasManifest):
* dom/DocumentOrderedMap.cpp:
(WebCore::keyMatchesLabelForAttribute):
* dom/DocumentStyleSheetCollection.cpp:
(WebCore::DocumentStyleSheetCollection::collectActiveStyleSheets):
* dom/Element.cpp:
(WebCore::Element::imageSourceURL):
(WebCore::Element::pseudo):
(WebCore::Element::spellcheckAttributeState):
* editing/ApplyStyleCommand.cpp:
(WebCore::ApplyStyleCommand::removeEmbeddingUpToEnclosingBlock):
* editing/EditingStyle.cpp:
(WebCore::HTMLAttributeEquivalent::attributeValueAsCSSValue):
(WebCore::HTMLFontSizeEquivalent::attributeValueAsCSSValue):
* editing/SplitElementCommand.cpp:
(WebCore::SplitElementCommand::doUnapply):
* html/HTMLAnchorElement.cpp:
(WebCore::HTMLAnchorElement::draggable):
(WebCore::HTMLAnchorElement::sendPings):
* html/HTMLAppletElement.cpp:
(WebCore::HTMLAppletElement::updateWidget):
* html/HTMLBodyElement.cpp:
(WebCore::HTMLBodyElement::addSubresourceAttributeURLs):
* html/HTMLButtonElement.cpp:
(WebCore::HTMLButtonElement::value):
* html/HTMLDocument.cpp:
(WebCore::HTMLDocument::dir):
* html/HTMLEmbedElement.cpp:
(WebCore::HTMLEmbedElement::imageSourceURL):
(WebCore::HTMLEmbedElement::addSubresourceAttributeURLs):
* html/HTMLFieldSetElement.cpp:
(WebCore::HTMLFieldSetElement::~HTMLFieldSetElement):
(WebCore::updateFromControlElementsAncestorDisabledStateUnder):
(WebCore::HTMLFieldSetElement::disabledAttributeChanged):
(WebCore::HTMLFieldSetElement::disabledStateChanged):
(WebCore::HTMLFieldSetElement::childrenChanged):
(WebCore::HTMLFieldSetElement::didMoveToNewDocument):
* html/HTMLFormControlElement.cpp:
(WebCore::HTMLFormControlElement::computeIsDisabledByFieldsetAncestor):
* html/HTMLFormElement.cpp:
(WebCore::HTMLFormElement::action):
* html/HTMLFrameElement.cpp:
(WebCore::HTMLFrameElement::noResize):
* html/HTMLFrameElementBase.cpp:
(WebCore::HTMLFrameElementBase::location):
* html/HTMLHRElement.cpp:
(WebCore::HTMLHRElement::collectStyleForPresentationAttribute):
* html/HTMLHtmlElement.cpp:
(WebCore::HTMLHtmlElement::insertedByParser):
* html/HTMLImageElement.cpp:
(WebCore::HTMLImageElement::altText):
(WebCore::HTMLImageElement::alt):
(WebCore::HTMLImageElement::draggable):
(WebCore::HTMLImageElement::src):
(WebCore::HTMLImageElement::addSubresourceAttributeURLs):
* html/HTMLInputElement.cpp:
(WebCore::HTMLInputElement::finishParsingChildren):
(WebCore::HTMLInputElement::altText):
(WebCore::HTMLInputElement::reset):
* html/HTMLLabelElement.cpp:
(WebCore::HTMLLabelElement::control):
* html/HTMLLinkElement.cpp:
(WebCore::HTMLLinkElement::process):
(WebCore::HTMLLinkElement::rel):
* html/HTMLMetaElement.cpp:
(WebCore::HTMLMetaElement::content):
(WebCore::HTMLMetaElement::httpEquiv):
* html/HTMLObjectElement.cpp:
(WebCore::HTMLObjectElement::imageSourceURL):
(WebCore::HTMLObjectElement::addSubresourceAttributeURLs):
* html/HTMLOptGroupElement.cpp:
(WebCore::HTMLOptGroupElement::groupLabelText):
* html/HTMLProgressElement.cpp:
(WebCore::HTMLProgressElement::max):
* html/HTMLScriptElement.cpp:
(WebCore::HTMLScriptElement::sourceAttributeValue):
(WebCore::HTMLScriptElement::charsetAttributeValue):
(WebCore::HTMLScriptElement::languageAttributeValue):
(WebCore::HTMLScriptElement::forAttributeValue):
(WebCore::HTMLScriptElement::eventAttributeValue):
* html/HTMLTableCellElement.cpp:
(WebCore::HTMLTableCellElement::addSubresourceAttributeURLs):
* html/HTMLTableElement.cpp:
(WebCore::HTMLTableElement::rules):
(WebCore::HTMLTableElement::summary):
(WebCore::HTMLTableElement::addSubresourceAttributeURLs):
* html/HTMLTableSectionElement.cpp:
(WebCore::HTMLTableSectionElement::align):
(WebCore::HTMLTableSectionElement::ch):
(WebCore::HTMLTableSectionElement::vAlign):
* html/HTMLTextAreaElement.cpp:
(WebCore::HTMLTextAreaElement::maxLength):
* html/SearchInputType.cpp:
(WebCore::SearchInputType::searchEventsShouldBeDispatched):
* loader/FormSubmission.cpp:
(WebCore::FormSubmission::create):
* page/Frame.cpp:
(WebCore::Frame::matchLabelsAgainstElement):
* page/PageSerializer.cpp:
(WebCore::PageSerializer::serializeFrame):
* platform/win/PasteboardWin.cpp:
(WebCore::Pasteboard::writeImageToDataObject):
* rendering/HitTestResult.cpp:
(WebCore::HitTestResult::altDisplayString):
* rendering/RenderSearchField.cpp:
(WebCore::RenderSearchField::autosaveName):
* rendering/RenderTableCell.cpp:
(WebCore::RenderTableCell::computePreferredLogicalWidths):
* rendering/svg/RenderSVGResourceClipper.cpp:
(WebCore::RenderSVGResourceClipper::drawContentIntoMaskImage):</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoreaccessibilityAccessibilityListBoxOptioncpp">trunk/Source/WebCore/accessibility/AccessibilityListBoxOption.cpp</a></li>
<li><a href="#trunkSourceWebCoreaccessibilityAccessibilityNodeObjectcpp">trunk/Source/WebCore/accessibility/AccessibilityNodeObject.cpp</a></li>
<li><a href="#trunkSourceWebCoreaccessibilityAccessibilityObjectcpp">trunk/Source/WebCore/accessibility/AccessibilityObject.cpp</a></li>
<li><a href="#trunkSourceWebCoredomDocumentcpp">trunk/Source/WebCore/dom/Document.cpp</a></li>
<li><a href="#trunkSourceWebCoredomDocumentOrderedMapcpp">trunk/Source/WebCore/dom/DocumentOrderedMap.cpp</a></li>
<li><a href="#trunkSourceWebCoredomDocumentStyleSheetCollectioncpp">trunk/Source/WebCore/dom/DocumentStyleSheetCollection.cpp</a></li>
<li><a href="#trunkSourceWebCoredomElementcpp">trunk/Source/WebCore/dom/Element.cpp</a></li>
<li><a href="#trunkSourceWebCoreeditingApplyStyleCommandcpp">trunk/Source/WebCore/editing/ApplyStyleCommand.cpp</a></li>
<li><a href="#trunkSourceWebCoreeditingEditingStylecpp">trunk/Source/WebCore/editing/EditingStyle.cpp</a></li>
<li><a href="#trunkSourceWebCoreeditingSplitElementCommandcpp">trunk/Source/WebCore/editing/SplitElementCommand.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLAnchorElementcpp">trunk/Source/WebCore/html/HTMLAnchorElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLAppletElementcpp">trunk/Source/WebCore/html/HTMLAppletElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLBodyElementcpp">trunk/Source/WebCore/html/HTMLBodyElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLButtonElementcpp">trunk/Source/WebCore/html/HTMLButtonElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLButtonElementh">trunk/Source/WebCore/html/HTMLButtonElement.h</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLDocumentcpp">trunk/Source/WebCore/html/HTMLDocument.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLEmbedElementcpp">trunk/Source/WebCore/html/HTMLEmbedElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLFieldSetElementcpp">trunk/Source/WebCore/html/HTMLFieldSetElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLFormControlElementcpp">trunk/Source/WebCore/html/HTMLFormControlElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLFormElementcpp">trunk/Source/WebCore/html/HTMLFormElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLFrameElementcpp">trunk/Source/WebCore/html/HTMLFrameElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLFrameElementBasecpp">trunk/Source/WebCore/html/HTMLFrameElementBase.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLHRElementcpp">trunk/Source/WebCore/html/HTMLHRElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLHtmlElementcpp">trunk/Source/WebCore/html/HTMLHtmlElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLImageElementcpp">trunk/Source/WebCore/html/HTMLImageElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLImageElementh">trunk/Source/WebCore/html/HTMLImageElement.h</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLInputElementcpp">trunk/Source/WebCore/html/HTMLInputElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLLabelElementcpp">trunk/Source/WebCore/html/HTMLLabelElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLLinkElementcpp">trunk/Source/WebCore/html/HTMLLinkElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLLinkElementh">trunk/Source/WebCore/html/HTMLLinkElement.h</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLMetaElementcpp">trunk/Source/WebCore/html/HTMLMetaElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLMetaElementh">trunk/Source/WebCore/html/HTMLMetaElement.h</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLObjectElementcpp">trunk/Source/WebCore/html/HTMLObjectElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLOptGroupElementcpp">trunk/Source/WebCore/html/HTMLOptGroupElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLProgressElementcpp">trunk/Source/WebCore/html/HTMLProgressElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLScriptElementcpp">trunk/Source/WebCore/html/HTMLScriptElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLTableCellElementcpp">trunk/Source/WebCore/html/HTMLTableCellElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLTableElementcpp">trunk/Source/WebCore/html/HTMLTableElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLTableElementh">trunk/Source/WebCore/html/HTMLTableElement.h</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLTableSectionElementcpp">trunk/Source/WebCore/html/HTMLTableSectionElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLTableSectionElementh">trunk/Source/WebCore/html/HTMLTableSectionElement.h</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLTextAreaElementcpp">trunk/Source/WebCore/html/HTMLTextAreaElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlSearchInputTypecpp">trunk/Source/WebCore/html/SearchInputType.cpp</a></li>
<li><a href="#trunkSourceWebCoreloaderFormSubmissioncpp">trunk/Source/WebCore/loader/FormSubmission.cpp</a></li>
<li><a href="#trunkSourceWebCorepageFramecpp">trunk/Source/WebCore/page/Frame.cpp</a></li>
<li><a href="#trunkSourceWebCorepagePageSerializercpp">trunk/Source/WebCore/page/PageSerializer.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformwinPasteboardWincpp">trunk/Source/WebCore/platform/win/PasteboardWin.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingHitTestResultcpp">trunk/Source/WebCore/rendering/HitTestResult.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderSearchFieldcpp">trunk/Source/WebCore/rendering/RenderSearchField.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderTableCellcpp">trunk/Source/WebCore/rendering/RenderTableCell.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingsvgRenderSVGResourceClippercpp">trunk/Source/WebCore/rendering/svg/RenderSVGResourceClipper.cpp</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (173723 => 173724)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2014-09-18 16:32:41 UTC (rev 173723)
+++ trunk/Source/WebCore/ChangeLog        2014-09-18 16:52:10 UTC (rev 173724)
</span><span class="lines">@@ -1,5 +1,142 @@
</span><span class="cx"> 2014-09-18  Chris Dumez  &lt;cdumez@apple.com&gt;
</span><span class="cx"> 
</span><ins>+        Use fastHasAttribute() / fastGetAttribute() when possible
+        https://bugs.webkit.org/show_bug.cgi?id=136900
+
+        Reviewed by Benjamin Poulain.
+
+        Use fastHasAttribute() / fastGetAttribute() when possible, that is when
+        the attribute is not SVG-animated or the |style| attribute, to avoid
+        synchronizing attributes unnecessarily.
+
+        Also avoid calling hasAttribute(xxxAttr) then getAttribute(xxxAttr) as
+        it causes 2 linear searches. It is best to call getAttribute(xxxAttr)
+        directly and check if it returns the nullAtom.
+
+        No new tests, no behavior change. Element::fastAttributeLookupAllowed()
+        is there as a safety set for debug builds.
+
+        * accessibility/AccessibilityListBoxOption.cpp:
+        (WebCore::AccessibilityListBoxOption::isEnabled):
+        * accessibility/AccessibilityNodeObject.cpp:
+        (WebCore::AccessibilityNodeObject::alternativeTextForWebArea):
+        (WebCore::AccessibilityNodeObject::hierarchicalLevel):
+        * accessibility/AccessibilityObject.cpp:
+        (WebCore::AccessibilityObject::contentEditableAttributeIsEnabled):
+        * dom/Document.cpp:
+        (WebCore::Document::hasManifest):
+        * dom/DocumentOrderedMap.cpp:
+        (WebCore::keyMatchesLabelForAttribute):
+        * dom/DocumentStyleSheetCollection.cpp:
+        (WebCore::DocumentStyleSheetCollection::collectActiveStyleSheets):
+        * dom/Element.cpp:
+        (WebCore::Element::imageSourceURL):
+        (WebCore::Element::pseudo):
+        (WebCore::Element::spellcheckAttributeState):
+        * editing/ApplyStyleCommand.cpp:
+        (WebCore::ApplyStyleCommand::removeEmbeddingUpToEnclosingBlock):
+        * editing/EditingStyle.cpp:
+        (WebCore::HTMLAttributeEquivalent::attributeValueAsCSSValue):
+        (WebCore::HTMLFontSizeEquivalent::attributeValueAsCSSValue):
+        * editing/SplitElementCommand.cpp:
+        (WebCore::SplitElementCommand::doUnapply):
+        * html/HTMLAnchorElement.cpp:
+        (WebCore::HTMLAnchorElement::draggable):
+        (WebCore::HTMLAnchorElement::sendPings):
+        * html/HTMLAppletElement.cpp:
+        (WebCore::HTMLAppletElement::updateWidget):
+        * html/HTMLBodyElement.cpp:
+        (WebCore::HTMLBodyElement::addSubresourceAttributeURLs):
+        * html/HTMLButtonElement.cpp:
+        (WebCore::HTMLButtonElement::value):
+        * html/HTMLDocument.cpp:
+        (WebCore::HTMLDocument::dir):
+        * html/HTMLEmbedElement.cpp:
+        (WebCore::HTMLEmbedElement::imageSourceURL):
+        (WebCore::HTMLEmbedElement::addSubresourceAttributeURLs):
+        * html/HTMLFieldSetElement.cpp:
+        (WebCore::HTMLFieldSetElement::~HTMLFieldSetElement):
+        (WebCore::updateFromControlElementsAncestorDisabledStateUnder):
+        (WebCore::HTMLFieldSetElement::disabledAttributeChanged):
+        (WebCore::HTMLFieldSetElement::disabledStateChanged):
+        (WebCore::HTMLFieldSetElement::childrenChanged):
+        (WebCore::HTMLFieldSetElement::didMoveToNewDocument):
+        * html/HTMLFormControlElement.cpp:
+        (WebCore::HTMLFormControlElement::computeIsDisabledByFieldsetAncestor):
+        * html/HTMLFormElement.cpp:
+        (WebCore::HTMLFormElement::action):
+        * html/HTMLFrameElement.cpp:
+        (WebCore::HTMLFrameElement::noResize):
+        * html/HTMLFrameElementBase.cpp:
+        (WebCore::HTMLFrameElementBase::location):
+        * html/HTMLHRElement.cpp:
+        (WebCore::HTMLHRElement::collectStyleForPresentationAttribute):
+        * html/HTMLHtmlElement.cpp:
+        (WebCore::HTMLHtmlElement::insertedByParser):
+        * html/HTMLImageElement.cpp:
+        (WebCore::HTMLImageElement::altText):
+        (WebCore::HTMLImageElement::alt):
+        (WebCore::HTMLImageElement::draggable):
+        (WebCore::HTMLImageElement::src):
+        (WebCore::HTMLImageElement::addSubresourceAttributeURLs):
+        * html/HTMLInputElement.cpp:
+        (WebCore::HTMLInputElement::finishParsingChildren):
+        (WebCore::HTMLInputElement::altText):
+        (WebCore::HTMLInputElement::reset):
+        * html/HTMLLabelElement.cpp:
+        (WebCore::HTMLLabelElement::control):
+        * html/HTMLLinkElement.cpp:
+        (WebCore::HTMLLinkElement::process):
+        (WebCore::HTMLLinkElement::rel):
+        * html/HTMLMetaElement.cpp:
+        (WebCore::HTMLMetaElement::content):
+        (WebCore::HTMLMetaElement::httpEquiv):
+        * html/HTMLObjectElement.cpp:
+        (WebCore::HTMLObjectElement::imageSourceURL):
+        (WebCore::HTMLObjectElement::addSubresourceAttributeURLs):
+        * html/HTMLOptGroupElement.cpp:
+        (WebCore::HTMLOptGroupElement::groupLabelText):
+        * html/HTMLProgressElement.cpp:
+        (WebCore::HTMLProgressElement::max):
+        * html/HTMLScriptElement.cpp:
+        (WebCore::HTMLScriptElement::sourceAttributeValue):
+        (WebCore::HTMLScriptElement::charsetAttributeValue):
+        (WebCore::HTMLScriptElement::languageAttributeValue):
+        (WebCore::HTMLScriptElement::forAttributeValue):
+        (WebCore::HTMLScriptElement::eventAttributeValue):
+        * html/HTMLTableCellElement.cpp:
+        (WebCore::HTMLTableCellElement::addSubresourceAttributeURLs):
+        * html/HTMLTableElement.cpp:
+        (WebCore::HTMLTableElement::rules):
+        (WebCore::HTMLTableElement::summary):
+        (WebCore::HTMLTableElement::addSubresourceAttributeURLs):
+        * html/HTMLTableSectionElement.cpp:
+        (WebCore::HTMLTableSectionElement::align):
+        (WebCore::HTMLTableSectionElement::ch):
+        (WebCore::HTMLTableSectionElement::vAlign):
+        * html/HTMLTextAreaElement.cpp:
+        (WebCore::HTMLTextAreaElement::maxLength):
+        * html/SearchInputType.cpp:
+        (WebCore::SearchInputType::searchEventsShouldBeDispatched):
+        * loader/FormSubmission.cpp:
+        (WebCore::FormSubmission::create):
+        * page/Frame.cpp:
+        (WebCore::Frame::matchLabelsAgainstElement):
+        * page/PageSerializer.cpp:
+        (WebCore::PageSerializer::serializeFrame):
+        * platform/win/PasteboardWin.cpp:
+        (WebCore::Pasteboard::writeImageToDataObject):
+        * rendering/HitTestResult.cpp:
+        (WebCore::HitTestResult::altDisplayString):
+        * rendering/RenderSearchField.cpp:
+        (WebCore::RenderSearchField::autosaveName):
+        * rendering/RenderTableCell.cpp:
+        (WebCore::RenderTableCell::computePreferredLogicalWidths):
+        * rendering/svg/RenderSVGResourceClipper.cpp:
+        (WebCore::RenderSVGResourceClipper::drawContentIntoMaskImage):
+
+2014-09-18  Chris Dumez  &lt;cdumez@apple.com&gt;
+
</ins><span class="cx">         Have LiveNodeLists / HTMLCollections's elementMatches() take a reference
</span><span class="cx">         https://bugs.webkit.org/show_bug.cgi?id=136902
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreaccessibilityAccessibilityListBoxOptioncpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/accessibility/AccessibilityListBoxOption.cpp (173723 => 173724)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/accessibility/AccessibilityListBoxOption.cpp        2014-09-18 16:32:41 UTC (rev 173723)
+++ trunk/Source/WebCore/accessibility/AccessibilityListBoxOption.cpp        2014-09-18 16:52:10 UTC (rev 173724)
</span><span class="lines">@@ -70,7 +70,7 @@
</span><span class="cx">     if (equalIgnoringCase(getAttribute(aria_disabledAttr), &quot;true&quot;))
</span><span class="cx">         return false;
</span><span class="cx"> 
</span><del>-    if (m_optionElement-&gt;hasAttribute(disabledAttr))
</del><ins>+    if (m_optionElement-&gt;fastHasAttribute(disabledAttr))
</ins><span class="cx">         return false;
</span><span class="cx">     
</span><span class="cx">     return true;
</span></span></pre></div>
<a id="trunkSourceWebCoreaccessibilityAccessibilityNodeObjectcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/accessibility/AccessibilityNodeObject.cpp (173723 => 173724)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/accessibility/AccessibilityNodeObject.cpp        2014-09-18 16:32:41 UTC (rev 173723)
+++ trunk/Source/WebCore/accessibility/AccessibilityNodeObject.cpp        2014-09-18 16:52:10 UTC (rev 173724)
</span><span class="lines">@@ -1456,7 +1456,7 @@
</span><span class="cx">     
</span><span class="cx">     // Check if the HTML element has an aria-label for the webpage.
</span><span class="cx">     if (Element* documentElement = document-&gt;documentElement()) {
</span><del>-        const AtomicString&amp; ariaLabel = documentElement-&gt;getAttribute(aria_labelAttr);
</del><ins>+        const AtomicString&amp; ariaLabel = documentElement-&gt;fastGetAttribute(aria_labelAttr);
</ins><span class="cx">         if (!ariaLabel.isEmpty())
</span><span class="cx">             return ariaLabel;
</span><span class="cx">     }
</span><span class="lines">@@ -1563,7 +1563,7 @@
</span><span class="cx">     if (!node || !node-&gt;isElementNode())
</span><span class="cx">         return 0;
</span><span class="cx">     Element* element = toElement(node);
</span><del>-    String ariaLevel = element-&gt;getAttribute(aria_levelAttr);
</del><ins>+    const AtomicString&amp; ariaLevel = element-&gt;fastGetAttribute(aria_levelAttr);
</ins><span class="cx">     if (!ariaLevel.isEmpty())
</span><span class="cx">         return ariaLevel.toInt();
</span><span class="cx">     
</span></span></pre></div>
<a id="trunkSourceWebCoreaccessibilityAccessibilityObjectcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/accessibility/AccessibilityObject.cpp (173723 => 173724)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/accessibility/AccessibilityObject.cpp        2014-09-18 16:32:41 UTC (rev 173723)
+++ trunk/Source/WebCore/accessibility/AccessibilityObject.cpp        2014-09-18 16:52:10 UTC (rev 173724)
</span><span class="lines">@@ -1378,10 +1378,10 @@
</span><span class="cx">     if (!element)
</span><span class="cx">         return false;
</span><span class="cx">     
</span><del>-    if (!element-&gt;hasAttribute(contenteditableAttr))
</del><ins>+    const AtomicString&amp; contentEditableValue = element-&gt;fastGetAttribute(contenteditableAttr);
+    if (contentEditableValue.isNull())
</ins><span class="cx">         return false;
</span><span class="cx">     
</span><del>-    const AtomicString&amp; contentEditableValue = element-&gt;fastGetAttribute(contenteditableAttr);
</del><span class="cx">     // Both &quot;true&quot; (case-insensitive) and the empty string count as true.
</span><span class="cx">     return contentEditableValue.isEmpty() || equalIgnoringCase(contentEditableValue, &quot;true&quot;);
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCoredomDocumentcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/Document.cpp (173723 => 173724)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/Document.cpp        2014-09-18 16:32:41 UTC (rev 173723)
+++ trunk/Source/WebCore/dom/Document.cpp        2014-09-18 16:52:10 UTC (rev 173724)
</span><span class="lines">@@ -814,7 +814,7 @@
</span><span class="cx"> 
</span><span class="cx"> bool Document::hasManifest() const
</span><span class="cx"> {
</span><del>-    return documentElement() &amp;&amp; documentElement()-&gt;hasTagName(htmlTag) &amp;&amp; documentElement()-&gt;hasAttribute(manifestAttr);
</del><ins>+    return documentElement() &amp;&amp; documentElement()-&gt;hasTagName(htmlTag) &amp;&amp; documentElement()-&gt;fastHasAttribute(manifestAttr);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> DocumentType* Document::doctype() const
</span></span></pre></div>
<a id="trunkSourceWebCoredomDocumentOrderedMapcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/DocumentOrderedMap.cpp (173723 => 173724)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/DocumentOrderedMap.cpp        2014-09-18 16:32:41 UTC (rev 173723)
+++ trunk/Source/WebCore/dom/DocumentOrderedMap.cpp        2014-09-18 16:52:10 UTC (rev 173724)
</span><span class="lines">@@ -69,7 +69,7 @@
</span><span class="cx"> 
</span><span class="cx"> inline bool keyMatchesLabelForAttribute(const AtomicStringImpl&amp; key, const Element&amp; element)
</span><span class="cx"> {
</span><del>-    return isHTMLLabelElement(element) &amp;&amp; element.getAttribute(forAttr).impl() == &amp;key;
</del><ins>+    return isHTMLLabelElement(element) &amp;&amp; element.fastGetAttribute(forAttr).impl() == &amp;key;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> inline bool keyMatchesWindowNamedItem(const AtomicStringImpl&amp; key, const Element&amp; element)
</span></span></pre></div>
<a id="trunkSourceWebCoredomDocumentStyleSheetCollectioncpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/DocumentStyleSheetCollection.cpp (173723 => 173724)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/DocumentStyleSheetCollection.cpp        2014-09-18 16:32:41 UTC (rev 173723)
+++ trunk/Source/WebCore/dom/DocumentStyleSheetCollection.cpp        2014-09-18 16:52:10 UTC (rev 173724)
</span><span class="lines">@@ -282,7 +282,7 @@
</span><span class="cx"> #endif
</span><span class="cx">         } else if ((node-&gt;isHTMLElement() &amp;&amp; (toHTMLElement(*node).hasTagName(linkTag) || toHTMLElement(*node).hasTagName(styleTag))) || (node-&gt;isSVGElement() &amp;&amp; toSVGElement(*node).hasTagName(SVGNames::styleTag))) {
</span><span class="cx">             Element&amp; element = toElement(*node);
</span><del>-            AtomicString title = element.getAttribute(titleAttr);
</del><ins>+            AtomicString title = element.fastGetAttribute(titleAttr);
</ins><span class="cx">             bool enabledViaScript = false;
</span><span class="cx">             if (isHTMLLinkElement(element)) {
</span><span class="cx">                 // &lt;LINK&gt; element
</span></span></pre></div>
<a id="trunkSourceWebCoredomElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/Element.cpp (173723 => 173724)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/Element.cpp        2014-09-18 16:32:41 UTC (rev 173723)
+++ trunk/Source/WebCore/dom/Element.cpp        2014-09-18 16:52:10 UTC (rev 173724)
</span><span class="lines">@@ -1305,7 +1305,7 @@
</span><span class="cx"> 
</span><span class="cx"> const AtomicString&amp; Element::imageSourceURL() const
</span><span class="cx"> {
</span><del>-    return getAttribute(srcAttr);
</del><ins>+    return fastGetAttribute(srcAttr);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool Element::rendererIsNeeded(const RenderStyle&amp; style)
</span><span class="lines">@@ -2045,7 +2045,7 @@
</span><span class="cx"> 
</span><span class="cx"> const AtomicString&amp; Element::pseudo() const
</span><span class="cx"> {
</span><del>-    return getAttribute(pseudoAttr);
</del><ins>+    return fastGetAttribute(pseudoAttr);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void Element::setPseudo(const AtomicString&amp; value)
</span><span class="lines">@@ -2455,7 +2455,7 @@
</span><span class="cx"> 
</span><span class="cx"> SpellcheckAttributeState Element::spellcheckAttributeState() const
</span><span class="cx"> {
</span><del>-    const AtomicString&amp; value = getAttribute(HTMLNames::spellcheckAttr);
</del><ins>+    const AtomicString&amp; value = fastGetAttribute(HTMLNames::spellcheckAttr);
</ins><span class="cx">     if (value == nullAtom)
</span><span class="cx">         return SpellcheckAttributeDefault;
</span><span class="cx">     if (equalIgnoringCase(value, &quot;true&quot;) || equalIgnoringCase(value, &quot;&quot;))
</span></span></pre></div>
<a id="trunkSourceWebCoreeditingApplyStyleCommandcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/editing/ApplyStyleCommand.cpp (173723 => 173724)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/editing/ApplyStyleCommand.cpp        2014-09-18 16:32:41 UTC (rev 173723)
+++ trunk/Source/WebCore/editing/ApplyStyleCommand.cpp        2014-09-18 16:52:10 UTC (rev 173724)
</span><span class="lines">@@ -517,7 +517,7 @@
</span><span class="cx">         // and all matching style rules in order to determine how to best set the unicode-bidi property to 'normal'.
</span><span class="cx">         // For now, it assumes that if the 'dir' attribute is present, then removing it will suffice, and
</span><span class="cx">         // otherwise it sets the property in the inline style declaration.
</span><del>-        if (element-&gt;hasAttribute(dirAttr)) {
</del><ins>+        if (element-&gt;fastHasAttribute(dirAttr)) {
</ins><span class="cx">             // FIXME: If this is a BDO element, we should probably just remove it if it has no
</span><span class="cx">             // other attributes, like we (should) do with B and I elements.
</span><span class="cx">             removeNodeAttribute(element, dirAttr);
</span></span></pre></div>
<a id="trunkSourceWebCoreeditingEditingStylecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/editing/EditingStyle.cpp (173723 => 173724)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/editing/EditingStyle.cpp        2014-09-18 16:32:41 UTC (rev 173723)
+++ trunk/Source/WebCore/editing/EditingStyle.cpp        2014-09-18 16:52:10 UTC (rev 173724)
</span><span class="lines">@@ -277,12 +277,13 @@
</span><span class="cx"> PassRefPtr&lt;CSSValue&gt; HTMLAttributeEquivalent::attributeValueAsCSSValue(Element* element) const
</span><span class="cx"> {
</span><span class="cx">     ASSERT(element);
</span><del>-    if (!element-&gt;hasAttribute(m_attrName))
</del><ins>+    const AtomicString&amp; value = element-&gt;getAttribute(m_attrName);
+    if (value.isNull())
</ins><span class="cx">         return 0;
</span><span class="cx">     
</span><span class="cx">     RefPtr&lt;MutableStyleProperties&gt; dummyStyle;
</span><span class="cx">     dummyStyle = MutableStyleProperties::create();
</span><del>-    dummyStyle-&gt;setProperty(m_propertyID, element-&gt;getAttribute(m_attrName));
</del><ins>+    dummyStyle-&gt;setProperty(m_propertyID, value);
</ins><span class="cx">     return dummyStyle-&gt;getPropertyCSSValue(m_propertyID);
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -301,10 +302,11 @@
</span><span class="cx"> PassRefPtr&lt;CSSValue&gt; HTMLFontSizeEquivalent::attributeValueAsCSSValue(Element* element) const
</span><span class="cx"> {
</span><span class="cx">     ASSERT(element);
</span><del>-    if (!element-&gt;hasAttribute(m_attrName))
</del><ins>+    const AtomicString&amp; value = element-&gt;getAttribute(m_attrName);
+    if (value.isNull())
</ins><span class="cx">         return 0;
</span><span class="cx">     CSSValueID size;
</span><del>-    if (!HTMLFontElement::cssValueFromFontSizeNumber(element-&gt;getAttribute(m_attrName), size))
</del><ins>+    if (!HTMLFontElement::cssValueFromFontSizeNumber(value, size))
</ins><span class="cx">         return 0;
</span><span class="cx">     return CSSPrimitiveValue::createIdentifier(size);
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCoreeditingSplitElementCommandcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/editing/SplitElementCommand.cpp (173723 => 173724)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/editing/SplitElementCommand.cpp        2014-09-18 16:32:41 UTC (rev 173723)
+++ trunk/Source/WebCore/editing/SplitElementCommand.cpp        2014-09-18 16:52:10 UTC (rev 173724)
</span><span class="lines">@@ -91,8 +91,9 @@
</span><span class="cx">         m_element2-&gt;insertBefore(children[i].get(), refChild.get(), IGNORE_EXCEPTION);
</span><span class="cx"> 
</span><span class="cx">     // Recover the id attribute of the original element.
</span><del>-    if (m_element1-&gt;hasAttribute(HTMLNames::idAttr))
-        m_element2-&gt;setAttribute(HTMLNames::idAttr, m_element1-&gt;getAttribute(HTMLNames::idAttr));
</del><ins>+    const AtomicString&amp; id = m_element1-&gt;fastGetAttribute(HTMLNames::idAttr);
+    if (!id.isNull())
+        m_element2-&gt;setAttribute(HTMLNames::idAttr, id);
</ins><span class="cx"> 
</span><span class="cx">     m_element1-&gt;remove(IGNORE_EXCEPTION);
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLAnchorElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLAnchorElement.cpp (173723 => 173724)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLAnchorElement.cpp        2014-09-18 16:32:41 UTC (rev 173723)
+++ trunk/Source/WebCore/html/HTMLAnchorElement.cpp        2014-09-18 16:52:10 UTC (rev 173724)
</span><span class="lines">@@ -286,7 +286,7 @@
</span><span class="cx"> bool HTMLAnchorElement::draggable() const
</span><span class="cx"> {
</span><span class="cx">     // Should be draggable if we have an href attribute.
</span><del>-    const AtomicString&amp; value = getAttribute(draggableAttr);
</del><ins>+    const AtomicString&amp; value = fastGetAttribute(draggableAttr);
</ins><span class="cx">     if (equalIgnoringCase(value, &quot;true&quot;))
</span><span class="cx">         return true;
</span><span class="cx">     if (equalIgnoringCase(value, &quot;false&quot;))
</span><span class="lines">@@ -512,10 +512,10 @@
</span><span class="cx"> 
</span><span class="cx"> void HTMLAnchorElement::sendPings(const URL&amp; destinationURL)
</span><span class="cx"> {
</span><del>-    if (!hasAttribute(pingAttr) || !document().settings() || !document().settings()-&gt;hyperlinkAuditingEnabled())
</del><ins>+    if (!fastHasAttribute(pingAttr) || !document().settings() || !document().settings()-&gt;hyperlinkAuditingEnabled())
</ins><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    SpaceSplitString pingURLs(getAttribute(pingAttr), false);
</del><ins>+    SpaceSplitString pingURLs(fastGetAttribute(pingAttr), false);
</ins><span class="cx">     for (unsigned i = 0; i &lt; pingURLs.size(); i++)
</span><span class="cx">         PingLoader::sendPing(*document().frame(), document().completeURL(pingURLs[i]), destinationURL);
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLAppletElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLAppletElement.cpp (173723 => 173724)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLAppletElement.cpp        2014-09-18 16:32:41 UTC (rev 173723)
+++ trunk/Source/WebCore/html/HTMLAppletElement.cpp        2014-09-18 16:52:10 UTC (rev 173724)
</span><span class="lines">@@ -125,11 +125,11 @@
</span><span class="cx">     Vector&lt;String&gt; paramValues;
</span><span class="cx"> 
</span><span class="cx">     paramNames.append(&quot;code&quot;);
</span><del>-    paramValues.append(getAttribute(codeAttr).string());
</del><ins>+    paramValues.append(fastGetAttribute(codeAttr).string());
</ins><span class="cx"> 
</span><del>-    const AtomicString&amp; codeBase = getAttribute(codebaseAttr);
</del><ins>+    const AtomicString&amp; codeBase = fastGetAttribute(codebaseAttr);
</ins><span class="cx">     if (!codeBase.isNull()) {
</span><del>-        paramNames.append(&quot;codeBase&quot;);
</del><ins>+        paramNames.append(ASCIILiteral(&quot;codeBase&quot;));
</ins><span class="cx">         paramValues.append(codeBase.string());
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -139,18 +139,18 @@
</span><span class="cx">         paramValues.append(name.string());
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    const AtomicString&amp; archive = getAttribute(archiveAttr);
</del><ins>+    const AtomicString&amp; archive = fastGetAttribute(archiveAttr);
</ins><span class="cx">     if (!archive.isNull()) {
</span><del>-        paramNames.append(&quot;archive&quot;);
</del><ins>+        paramNames.append(ASCIILiteral(&quot;archive&quot;));
</ins><span class="cx">         paramValues.append(archive.string());
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    paramNames.append(&quot;baseURL&quot;);
</del><ins>+    paramNames.append(ASCIILiteral(&quot;baseURL&quot;));
</ins><span class="cx">     paramValues.append(document().baseURL().string());
</span><span class="cx"> 
</span><del>-    const AtomicString&amp; mayScript = getAttribute(mayscriptAttr);
</del><ins>+    const AtomicString&amp; mayScript = fastGetAttribute(mayscriptAttr);
</ins><span class="cx">     if (!mayScript.isNull()) {
</span><del>-        paramNames.append(&quot;mayScript&quot;);
</del><ins>+        paramNames.append(ASCIILiteral(&quot;mayScript&quot;));
</ins><span class="cx">         paramValues.append(mayScript.string());
</span><span class="cx">     }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLBodyElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLBodyElement.cpp (173723 => 173724)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLBodyElement.cpp        2014-09-18 16:32:41 UTC (rev 173723)
+++ trunk/Source/WebCore/html/HTMLBodyElement.cpp        2014-09-18 16:52:10 UTC (rev 173724)
</span><span class="lines">@@ -287,7 +287,7 @@
</span><span class="cx"> {
</span><span class="cx">     HTMLElement::addSubresourceAttributeURLs(urls);
</span><span class="cx"> 
</span><del>-    addSubresourceURL(urls, document().completeURL(getAttribute(backgroundAttr)));
</del><ins>+    addSubresourceURL(urls, document().completeURL(fastGetAttribute(backgroundAttr)));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLButtonElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLButtonElement.cpp (173723 => 173724)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLButtonElement.cpp        2014-09-18 16:32:41 UTC (rev 173723)
+++ trunk/Source/WebCore/html/HTMLButtonElement.cpp        2014-09-18 16:52:10 UTC (rev 173724)
</span><span class="lines">@@ -194,9 +194,9 @@
</span><span class="cx">     return attribute.name() == formactionAttr || HTMLFormControlElement::isURLAttribute(attribute);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-String HTMLButtonElement::value() const
</del><ins>+const AtomicString&amp; HTMLButtonElement::value() const
</ins><span class="cx"> {
</span><del>-    return getAttribute(valueAttr);
</del><ins>+    return fastGetAttribute(valueAttr);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool HTMLButtonElement::recalcWillValidate() const
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLButtonElementh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLButtonElement.h (173723 => 173724)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLButtonElement.h        2014-09-18 16:32:41 UTC (rev 173723)
+++ trunk/Source/WebCore/html/HTMLButtonElement.h        2014-09-18 16:52:10 UTC (rev 173724)
</span><span class="lines">@@ -34,7 +34,7 @@
</span><span class="cx"> 
</span><span class="cx">     void setType(const AtomicString&amp;);
</span><span class="cx">     
</span><del>-    String value() const;
</del><ins>+    const AtomicString&amp; value() const;
</ins><span class="cx"> 
</span><span class="cx">     virtual bool willRespondToMouseClickEvents() override;
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLDocumentcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLDocument.cpp (173723 => 173724)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLDocument.cpp        2014-09-18 16:32:41 UTC (rev 173723)
+++ trunk/Source/WebCore/html/HTMLDocument.cpp        2014-09-18 16:52:10 UTC (rev 173724)
</span><span class="lines">@@ -107,10 +107,9 @@
</span><span class="cx"> 
</span><span class="cx"> String HTMLDocument::dir()
</span><span class="cx"> {
</span><del>-    HTMLElement* b = body();
-    if (!b)
-        return String();
-    return b-&gt;getAttribute(dirAttr);
</del><ins>+    if (auto* body = this-&gt;body())
+        return body-&gt;fastGetAttribute(dirAttr);
+    return String();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void HTMLDocument::setDir(const String&amp; value)
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLEmbedElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLEmbedElement.cpp (173723 => 173724)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLEmbedElement.cpp        2014-09-18 16:32:41 UTC (rev 173723)
+++ trunk/Source/WebCore/html/HTMLEmbedElement.cpp        2014-09-18 16:52:10 UTC (rev 173724)
</span><span class="lines">@@ -214,14 +214,14 @@
</span><span class="cx"> 
</span><span class="cx"> const AtomicString&amp; HTMLEmbedElement::imageSourceURL() const
</span><span class="cx"> {
</span><del>-    return getAttribute(srcAttr);
</del><ins>+    return fastGetAttribute(srcAttr);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void HTMLEmbedElement::addSubresourceAttributeURLs(ListHashSet&lt;URL&gt;&amp; urls) const
</span><span class="cx"> {
</span><span class="cx">     HTMLPlugInImageElement::addSubresourceAttributeURLs(urls);
</span><span class="cx"> 
</span><del>-    addSubresourceURL(urls, document().completeURL(getAttribute(srcAttr)));
</del><ins>+    addSubresourceURL(urls, document().completeURL(fastGetAttribute(srcAttr)));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLFieldSetElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLFieldSetElement.cpp (173723 => 173724)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLFieldSetElement.cpp        2014-09-18 16:32:41 UTC (rev 173723)
+++ trunk/Source/WebCore/html/HTMLFieldSetElement.cpp        2014-09-18 16:52:10 UTC (rev 173724)
</span><span class="lines">@@ -46,7 +46,7 @@
</span><span class="cx"> 
</span><span class="cx"> HTMLFieldSetElement::~HTMLFieldSetElement()
</span><span class="cx"> {
</span><del>-    if (hasAttribute(disabledAttr))
</del><ins>+    if (fastHasAttribute(disabledAttr))
</ins><span class="cx">         document().removeDisabledFieldsetElement();
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -65,7 +65,7 @@
</span><span class="cx">     while (control) {
</span><span class="cx">         control-&gt;setAncestorDisabled(isDisabled);
</span><span class="cx">         // Don't call setAncestorDisabled(false) on form contorls inside disabled fieldsets.
</span><del>-        if (isHTMLFieldSetElement(control) &amp;&amp; control-&gt;hasAttribute(disabledAttr))
</del><ins>+        if (isHTMLFieldSetElement(control) &amp;&amp; control-&gt;fastHasAttribute(disabledAttr))
</ins><span class="cx">             control = Traversal&lt;HTMLFormControlElement&gt;::nextSkippingChildren(control, &amp;startNode);
</span><span class="cx">         else
</span><span class="cx">             control = Traversal&lt;HTMLFormControlElement&gt;::next(control, &amp;startNode);
</span><span class="lines">@@ -74,7 +74,7 @@
</span><span class="cx"> 
</span><span class="cx"> void HTMLFieldSetElement::disabledAttributeChanged()
</span><span class="cx"> {
</span><del>-    if (hasAttribute(disabledAttr))
</del><ins>+    if (fastHasAttribute(disabledAttr))
</ins><span class="cx">         document().addDisabledFieldsetElement();
</span><span class="cx">     else
</span><span class="cx">         document().removeDisabledFieldsetElement();
</span><span class="lines">@@ -90,7 +90,7 @@
</span><span class="cx">     if (disabledByAncestorFieldset())
</span><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    bool thisFieldsetIsDisabled = hasAttribute(disabledAttr);
</del><ins>+    bool thisFieldsetIsDisabled = fastHasAttribute(disabledAttr);
</ins><span class="cx">     bool hasSeenFirstLegendElement = false;
</span><span class="cx">     for (HTMLElement* control = Traversal&lt;HTMLElement&gt;::firstChild(this); control; control = Traversal&lt;HTMLElement&gt;::nextSibling(control)) {
</span><span class="cx">         if (!hasSeenFirstLegendElement &amp;&amp; isHTMLLegendElement(control)) {
</span><span class="lines">@@ -105,7 +105,7 @@
</span><span class="cx"> void HTMLFieldSetElement::childrenChanged(const ChildChange&amp; change)
</span><span class="cx"> {
</span><span class="cx">     HTMLFormControlElement::childrenChanged(change);
</span><del>-    if (!hasAttribute(disabledAttr))
</del><ins>+    if (!fastHasAttribute(disabledAttr))
</ins><span class="cx">         return;
</span><span class="cx"> 
</span><span class="cx">     HTMLLegendElement* legend = Traversal&lt;HTMLLegendElement&gt;::firstChild(this);
</span><span class="lines">@@ -121,7 +121,7 @@
</span><span class="cx"> void HTMLFieldSetElement::didMoveToNewDocument(Document* oldDocument)
</span><span class="cx"> {
</span><span class="cx">     HTMLFormControlElement::didMoveToNewDocument(oldDocument);
</span><del>-    if (hasAttribute(disabledAttr)) {
</del><ins>+    if (fastHasAttribute(disabledAttr)) {
</ins><span class="cx">         if (oldDocument)
</span><span class="cx">             oldDocument-&gt;removeDisabledFieldsetElement();
</span><span class="cx">         document().addDisabledFieldsetElement();
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLFormControlElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLFormControlElement.cpp (173723 => 173724)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLFormControlElement.cpp        2014-09-18 16:32:41 UTC (rev 173723)
+++ trunk/Source/WebCore/html/HTMLFormControlElement.cpp        2014-09-18 16:52:10 UTC (rev 173724)
</span><span class="lines">@@ -103,7 +103,7 @@
</span><span class="cx"> {
</span><span class="cx">     Element* previousAncestor = nullptr;
</span><span class="cx">     for (Element* ancestor = parentElement(); ancestor; ancestor = ancestor-&gt;parentElement()) {
</span><del>-        if (isHTMLFieldSetElement(ancestor) &amp;&amp; ancestor-&gt;hasAttribute(disabledAttr)) {
</del><ins>+        if (isHTMLFieldSetElement(ancestor) &amp;&amp; ancestor-&gt;fastHasAttribute(disabledAttr)) {
</ins><span class="cx">             HTMLFieldSetElement&amp; fieldSetAncestor = toHTMLFieldSetElement(*ancestor);
</span><span class="cx">             bool isInFirstLegend = previousAncestor &amp;&amp; isHTMLLegendElement(previousAncestor) &amp;&amp; previousAncestor == fieldSetAncestor.legend();
</span><span class="cx">             return !isInFirstLegend;
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLFormElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLFormElement.cpp (173723 => 173724)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLFormElement.cpp        2014-09-18 16:32:41 UTC (rev 173723)
+++ trunk/Source/WebCore/html/HTMLFormElement.cpp        2014-09-18 16:52:10 UTC (rev 173724)
</span><span class="lines">@@ -660,7 +660,7 @@
</span><span class="cx"> // (Darin Adler) removed this, someone added it back, so I am leaving it in for now.
</span><span class="cx"> String HTMLFormElement::action() const
</span><span class="cx"> {
</span><del>-    return getAttribute(actionAttr);
</del><ins>+    return fastGetAttribute(actionAttr);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void HTMLFormElement::setAction(const String &amp;value)
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLFrameElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLFrameElement.cpp (173723 => 173724)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLFrameElement.cpp        2014-09-18 16:32:41 UTC (rev 173723)
+++ trunk/Source/WebCore/html/HTMLFrameElement.cpp        2014-09-18 16:52:10 UTC (rev 173724)
</span><span class="lines">@@ -61,7 +61,7 @@
</span><span class="cx"> 
</span><span class="cx"> bool HTMLFrameElement::noResize() const
</span><span class="cx"> {
</span><del>-    return hasAttribute(noresizeAttr);
</del><ins>+    return fastHasAttribute(noresizeAttr);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void HTMLFrameElement::didAttachRenderers()
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLFrameElementBasecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLFrameElementBase.cpp (173723 => 173724)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLFrameElementBase.cpp        2014-09-18 16:32:41 UTC (rev 173723)
+++ trunk/Source/WebCore/html/HTMLFrameElementBase.cpp        2014-09-18 16:52:10 UTC (rev 173724)
</span><span class="lines">@@ -169,7 +169,7 @@
</span><span class="cx"> {
</span><span class="cx">     if (fastHasAttribute(srcdocAttr))
</span><span class="cx">         return URL(ParsedURLString, &quot;about:srcdoc&quot;);
</span><del>-    return document().completeURL(getAttribute(srcAttr));
</del><ins>+    return document().completeURL(fastGetAttribute(srcAttr));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void HTMLFrameElementBase::setLocation(const String&amp; str)
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLHRElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLHRElement.cpp (173723 => 173724)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLHRElement.cpp        2014-09-18 16:32:41 UTC (rev 173723)
+++ trunk/Source/WebCore/html/HTMLHRElement.cpp        2014-09-18 16:52:10 UTC (rev 173724)
</span><span class="lines">@@ -82,7 +82,7 @@
</span><span class="cx">         addHTMLColorToStyle(style, CSSPropertyBorderColor, value);
</span><span class="cx">         addHTMLColorToStyle(style, CSSPropertyBackgroundColor, value);
</span><span class="cx">     } else if (name == noshadeAttr) {
</span><del>-        if (!hasAttribute(colorAttr)) {
</del><ins>+        if (!fastHasAttribute(colorAttr)) {
</ins><span class="cx">             addPropertyToPresentationAttributeStyle(style, CSSPropertyBorderStyle, CSSValueSolid);
</span><span class="cx"> 
</span><span class="cx">             RefPtr&lt;CSSPrimitiveValue&gt; darkGrayValue = cssValuePool().createColorValue(Color::darkGray);
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLHtmlElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLHtmlElement.cpp (173723 => 173724)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLHtmlElement.cpp        2014-09-18 16:32:41 UTC (rev 173723)
+++ trunk/Source/WebCore/html/HTMLHtmlElement.cpp        2014-09-18 16:52:10 UTC (rev 173724)
</span><span class="lines">@@ -70,7 +70,7 @@
</span><span class="cx">     if (!documentLoader)
</span><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    const AtomicString&amp; manifest = getAttribute(manifestAttr);
</del><ins>+    const AtomicString&amp; manifest = fastGetAttribute(manifestAttr);
</ins><span class="cx">     if (manifest.isEmpty())
</span><span class="cx">         documentLoader-&gt;applicationCacheHost()-&gt;selectCacheWithoutManifest();
</span><span class="cx">     else
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLImageElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLImageElement.cpp (173723 => 173724)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLImageElement.cpp        2014-09-18 16:32:41 UTC (rev 173723)
+++ trunk/Source/WebCore/html/HTMLImageElement.cpp        2014-09-18 16:52:10 UTC (rev 173724)
</span><span class="lines">@@ -197,16 +197,16 @@
</span><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-String HTMLImageElement::altText() const
</del><ins>+const AtomicString&amp; HTMLImageElement::altText() const
</ins><span class="cx"> {
</span><span class="cx">     // lets figure out the alt text.. magic stuff
</span><span class="cx">     // http://www.w3.org/TR/1998/REC-html40-19980424/appendix/notes.html#altgen
</span><span class="cx">     // also heavily discussed by Hixie on bugzilla
</span><del>-    String alt = getAttribute(altAttr);
</del><ins>+    const AtomicString&amp; alt = fastGetAttribute(altAttr);
+    if (!alt.isNull())
+        return alt;
</ins><span class="cx">     // fall back to title attribute
</span><del>-    if (alt.isNull())
-        alt = getAttribute(titleAttr);
-    return alt;
</del><ins>+    return fastGetAttribute(titleAttr);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> RenderPtr&lt;RenderElement&gt; HTMLImageElement::createElementRenderer(PassRef&lt;RenderStyle&gt; style)
</span><span class="lines">@@ -393,13 +393,13 @@
</span><span class="cx"> 
</span><span class="cx"> const AtomicString&amp; HTMLImageElement::alt() const
</span><span class="cx"> {
</span><del>-    return getAttribute(altAttr);
</del><ins>+    return fastGetAttribute(altAttr);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool HTMLImageElement::draggable() const
</span><span class="cx"> {
</span><span class="cx">     // Image elements are draggable by default.
</span><del>-    return !equalIgnoringCase(getAttribute(draggableAttr), &quot;false&quot;);
</del><ins>+    return !equalIgnoringCase(fastGetAttribute(draggableAttr), &quot;false&quot;);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void HTMLImageElement::setHeight(int value)
</span><span class="lines">@@ -409,7 +409,7 @@
</span><span class="cx"> 
</span><span class="cx"> URL HTMLImageElement::src() const
</span><span class="cx"> {
</span><del>-    return document().completeURL(getAttribute(srcAttr));
</del><ins>+    return document().completeURL(fastGetAttribute(srcAttr));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void HTMLImageElement::setSrc(const String&amp; value)
</span><span class="lines">@@ -455,7 +455,7 @@
</span><span class="cx"> 
</span><span class="cx">     addSubresourceURL(urls, src());
</span><span class="cx">     // FIXME: What about when the usemap attribute begins with &quot;#&quot;?
</span><del>-    addSubresourceURL(urls, document().completeURL(getAttribute(usemapAttr)));
</del><ins>+    addSubresourceURL(urls, document().completeURL(fastGetAttribute(usemapAttr)));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void HTMLImageElement::didMoveToNewDocument(Document* oldDocument)
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLImageElementh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLImageElement.h (173723 => 173724)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLImageElement.h        2014-09-18 16:32:41 UTC (rev 173723)
+++ trunk/Source/WebCore/html/HTMLImageElement.h        2014-09-18 16:52:10 UTC (rev 173724)
</span><span class="lines">@@ -54,7 +54,7 @@
</span><span class="cx"> 
</span><span class="cx">     bool isServerMap() const;
</span><span class="cx"> 
</span><del>-    String altText() const;
</del><ins>+    const AtomicString&amp; altText() const;
</ins><span class="cx"> 
</span><span class="cx">     CompositeOperator compositeOperator() const { return m_compositeOperator; }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLInputElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLInputElement.cpp (173723 => 173724)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLInputElement.cpp        2014-09-18 16:32:41 UTC (rev 173723)
+++ trunk/Source/WebCore/html/HTMLInputElement.cpp        2014-09-18 16:52:10 UTC (rev 173724)
</span><span class="lines">@@ -718,7 +718,7 @@
</span><span class="cx">     m_parsingInProgress = false;
</span><span class="cx">     HTMLTextFormControlElement::finishParsingChildren();
</span><span class="cx">     if (!m_stateRestored) {
</span><del>-        bool checked = hasAttribute(checkedAttr);
</del><ins>+        bool checked = fastHasAttribute(checkedAttr);
</ins><span class="cx">         if (checked)
</span><span class="cx">             setChecked(checked);
</span><span class="cx">         m_reflectsCheckedAttribute = true;
</span><span class="lines">@@ -767,7 +767,7 @@
</span><span class="cx">     if (alt.isNull())
</span><span class="cx">         alt = getAttribute(titleAttr);
</span><span class="cx">     if (alt.isNull())
</span><del>-        alt = getAttribute(valueAttr);
</del><ins>+        alt = fastGetAttribute(valueAttr);
</ins><span class="cx">     if (alt.isEmpty())
</span><span class="cx">         alt = inputElementAltText();
</span><span class="cx">     return alt;
</span><span class="lines">@@ -801,7 +801,7 @@
</span><span class="cx">         setValue(String());
</span><span class="cx"> 
</span><span class="cx">     setAutofilled(false);
</span><del>-    setChecked(hasAttribute(checkedAttr));
</del><ins>+    setChecked(fastHasAttribute(checkedAttr));
</ins><span class="cx">     m_reflectsCheckedAttribute = true;
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLLabelElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLLabelElement.cpp (173723 => 173724)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLLabelElement.cpp        2014-09-18 16:32:41 UTC (rev 173723)
+++ trunk/Source/WebCore/html/HTMLLabelElement.cpp        2014-09-18 16:52:10 UTC (rev 173724)
</span><span class="lines">@@ -62,7 +62,7 @@
</span><span class="cx"> 
</span><span class="cx"> LabelableElement* HTMLLabelElement::control()
</span><span class="cx"> {
</span><del>-    const AtomicString&amp; controlId = getAttribute(forAttr);
</del><ins>+    const AtomicString&amp; controlId = fastGetAttribute(forAttr);
</ins><span class="cx">     if (controlId.isNull()) {
</span><span class="cx">         // Search the children and descendants of the label element for a form element.
</span><span class="cx">         // per http://dev.w3.org/html5/spec/Overview.html#the-label-element
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLLinkElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLLinkElement.cpp (173723 => 173724)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLLinkElement.cpp        2014-09-18 16:32:41 UTC (rev 173723)
+++ trunk/Source/WebCore/html/HTMLLinkElement.cpp        2014-09-18 16:52:10 UTC (rev 173724)
</span><span class="lines">@@ -189,7 +189,7 @@
</span><span class="cx">     if (m_disabledState != Disabled &amp;&amp; (m_relAttribute.m_isStyleSheet || (acceptIfTypeContainsTextCSS &amp;&amp; type.contains(&quot;text/css&quot;)))
</span><span class="cx">         &amp;&amp; document().frame() &amp;&amp; url.isValid()) {
</span><span class="cx">         
</span><del>-        String charset = getAttribute(charsetAttr);
</del><ins>+        AtomicString charset = fastGetAttribute(charsetAttr);
</ins><span class="cx">         if (charset.isEmpty() &amp;&amp; document().frame())
</span><span class="cx">             charset = document().charset();
</span><span class="cx">         
</span><span class="lines">@@ -401,9 +401,9 @@
</span><span class="cx">     return document().completeURL(getAttribute(hrefAttr));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-String HTMLLinkElement::rel() const
</del><ins>+const AtomicString&amp; HTMLLinkElement::rel() const
</ins><span class="cx"> {
</span><del>-    return getAttribute(relAttr);
</del><ins>+    return fastGetAttribute(relAttr);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> String HTMLLinkElement::target() const
</span><span class="lines">@@ -411,7 +411,7 @@
</span><span class="cx">     return getAttribute(targetAttr);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-String HTMLLinkElement::type() const
</del><ins>+const AtomicString&amp; HTMLLinkElement::type() const
</ins><span class="cx"> {
</span><span class="cx">     return getAttribute(typeAttr);
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLLinkElementh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLLinkElement.h (173723 => 173724)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLLinkElement.h        2014-09-18 16:32:41 UTC (rev 173723)
+++ trunk/Source/WebCore/html/HTMLLinkElement.h        2014-09-18 16:52:10 UTC (rev 173724)
</span><span class="lines">@@ -48,11 +48,11 @@
</span><span class="cx">     virtual ~HTMLLinkElement();
</span><span class="cx"> 
</span><span class="cx">     URL href() const;
</span><del>-    String rel() const;
</del><ins>+    const AtomicString&amp; rel() const;
</ins><span class="cx"> 
</span><span class="cx">     virtual String target() const override;
</span><span class="cx"> 
</span><del>-    String type() const;
</del><ins>+    const AtomicString&amp; type() const;
</ins><span class="cx"> 
</span><span class="cx">     IconType iconType() const;
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLMetaElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLMetaElement.cpp (173723 => 173724)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLMetaElement.cpp        2014-09-18 16:32:41 UTC (rev 173723)
+++ trunk/Source/WebCore/html/HTMLMetaElement.cpp        2014-09-18 16:52:10 UTC (rev 173724)
</span><span class="lines">@@ -89,17 +89,17 @@
</span><span class="cx">         document().processHttpEquiv(httpEquivValue, contentValue);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-String HTMLMetaElement::content() const
</del><ins>+const AtomicString&amp; HTMLMetaElement::content() const
</ins><span class="cx"> {
</span><del>-    return getAttribute(contentAttr);
</del><ins>+    return fastGetAttribute(contentAttr);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-String HTMLMetaElement::httpEquiv() const
</del><ins>+const AtomicString&amp; HTMLMetaElement::httpEquiv() const
</ins><span class="cx"> {
</span><del>-    return getAttribute(http_equivAttr);
</del><ins>+    return fastGetAttribute(http_equivAttr);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-String HTMLMetaElement::name() const
</del><ins>+const AtomicString&amp; HTMLMetaElement::name() const
</ins><span class="cx"> {
</span><span class="cx">     return getNameAttribute();
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLMetaElementh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLMetaElement.h (173723 => 173724)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLMetaElement.h        2014-09-18 16:32:41 UTC (rev 173723)
+++ trunk/Source/WebCore/html/HTMLMetaElement.h        2014-09-18 16:52:10 UTC (rev 173724)
</span><span class="lines">@@ -31,9 +31,9 @@
</span><span class="cx"> public:
</span><span class="cx">     static PassRefPtr&lt;HTMLMetaElement&gt; create(const QualifiedName&amp;, Document&amp;);
</span><span class="cx"> 
</span><del>-    String content() const;
-    String httpEquiv() const;
-    String name() const;
</del><ins>+    const AtomicString&amp; content() const;
+    const AtomicString&amp; httpEquiv() const;
+    const AtomicString&amp; name() const;
</ins><span class="cx"> 
</span><span class="cx"> private:
</span><span class="cx">     HTMLMetaElement(const QualifiedName&amp;, Document&amp;);
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLObjectElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLObjectElement.cpp (173723 => 173724)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLObjectElement.cpp        2014-09-18 16:32:41 UTC (rev 173723)
+++ trunk/Source/WebCore/html/HTMLObjectElement.cpp        2014-09-18 16:52:10 UTC (rev 173724)
</span><span class="lines">@@ -356,7 +356,7 @@
</span><span class="cx"> 
</span><span class="cx"> const AtomicString&amp; HTMLObjectElement::imageSourceURL() const
</span><span class="cx"> {
</span><del>-    return getAttribute(dataAttr);
</del><ins>+    return fastGetAttribute(dataAttr);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void HTMLObjectElement::renderFallbackContent()
</span><span class="lines">@@ -479,11 +479,11 @@
</span><span class="cx"> {
</span><span class="cx">     HTMLPlugInImageElement::addSubresourceAttributeURLs(urls);
</span><span class="cx"> 
</span><del>-    addSubresourceURL(urls, document().completeURL(getAttribute(dataAttr)));
</del><ins>+    addSubresourceURL(urls, document().completeURL(fastGetAttribute(dataAttr)));
</ins><span class="cx"> 
</span><span class="cx">     // FIXME: Passing a string that starts with &quot;#&quot; to the completeURL function does
</span><span class="cx">     // not seem like it would work. The image element has similar but not identical code.
</span><del>-    const AtomicString&amp; useMap = getAttribute(usemapAttr);
</del><ins>+    const AtomicString&amp; useMap = fastGetAttribute(usemapAttr);
</ins><span class="cx">     if (useMap.startsWith('#'))
</span><span class="cx">         addSubresourceURL(urls, document().completeURL(useMap));
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLOptGroupElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLOptGroupElement.cpp (173723 => 173724)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLOptGroupElement.cpp        2014-09-18 16:32:41 UTC (rev 173723)
+++ trunk/Source/WebCore/html/HTMLOptGroupElement.cpp        2014-09-18 16:52:10 UTC (rev 173724)
</span><span class="lines">@@ -94,7 +94,7 @@
</span><span class="cx"> 
</span><span class="cx"> String HTMLOptGroupElement::groupLabelText() const
</span><span class="cx"> {
</span><del>-    String itemText = document().displayStringModifiedByEncoding(getAttribute(labelAttr));
</del><ins>+    String itemText = document().displayStringModifiedByEncoding(fastGetAttribute(labelAttr));
</ins><span class="cx">     
</span><span class="cx">     // In WinIE, leading and trailing whitespace is ignored in options and optgroups. We match this behavior.
</span><span class="cx">     itemText = itemText.stripWhiteSpace();
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLProgressElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLProgressElement.cpp (173723 => 173724)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLProgressElement.cpp        2014-09-18 16:32:41 UTC (rev 173723)
+++ trunk/Source/WebCore/html/HTMLProgressElement.cpp        2014-09-18 16:52:10 UTC (rev 173724)
</span><span class="lines">@@ -110,7 +110,7 @@
</span><span class="cx"> 
</span><span class="cx"> double HTMLProgressElement::max() const
</span><span class="cx"> {
</span><del>-    double max = parseToDoubleForNumberType(getAttribute(maxAttr));
</del><ins>+    double max = parseToDoubleForNumberType(fastGetAttribute(maxAttr));
</ins><span class="cx">     return !std::isfinite(max) || max &lt;= 0 ? 1 : max;
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLScriptElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLScriptElement.cpp (173723 => 173724)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLScriptElement.cpp        2014-09-18 16:32:41 UTC (rev 173723)
+++ trunk/Source/WebCore/html/HTMLScriptElement.cpp        2014-09-18 16:52:10 UTC (rev 173724)
</span><span class="lines">@@ -117,12 +117,12 @@
</span><span class="cx"> 
</span><span class="cx"> String HTMLScriptElement::sourceAttributeValue() const
</span><span class="cx"> {
</span><del>-    return getAttribute(srcAttr).string();
</del><ins>+    return fastGetAttribute(srcAttr).string();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> String HTMLScriptElement::charsetAttributeValue() const
</span><span class="cx"> {
</span><del>-    return getAttribute(charsetAttr).string();
</del><ins>+    return fastGetAttribute(charsetAttr).string();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> String HTMLScriptElement::typeAttributeValue() const
</span><span class="lines">@@ -132,17 +132,17 @@
</span><span class="cx"> 
</span><span class="cx"> String HTMLScriptElement::languageAttributeValue() const
</span><span class="cx"> {
</span><del>-    return getAttribute(languageAttr).string();
</del><ins>+    return fastGetAttribute(languageAttr).string();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> String HTMLScriptElement::forAttributeValue() const
</span><span class="cx"> {
</span><del>-    return getAttribute(forAttr).string();
</del><ins>+    return fastGetAttribute(forAttr).string();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> String HTMLScriptElement::eventAttributeValue() const
</span><span class="cx"> {
</span><del>-    return getAttribute(eventAttr).string();
</del><ins>+    return fastGetAttribute(eventAttr).string();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool HTMLScriptElement::asyncAttributeValue() const
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLTableCellElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLTableCellElement.cpp (173723 => 173724)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLTableCellElement.cpp        2014-09-18 16:32:41 UTC (rev 173723)
+++ trunk/Source/WebCore/html/HTMLTableCellElement.cpp        2014-09-18 16:52:10 UTC (rev 173724)
</span><span class="lines">@@ -160,7 +160,7 @@
</span><span class="cx"> {
</span><span class="cx">     HTMLTablePartElement::addSubresourceAttributeURLs(urls);
</span><span class="cx"> 
</span><del>-    addSubresourceURL(urls, document().completeURL(getAttribute(backgroundAttr)));
</del><ins>+    addSubresourceURL(urls, document().completeURL(fastGetAttribute(backgroundAttr)));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> HTMLTableCellElement* HTMLTableCellElement::cellAbove() const
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLTableElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLTableElement.cpp (173723 => 173724)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLTableElement.cpp        2014-09-18 16:32:41 UTC (rev 173723)
+++ trunk/Source/WebCore/html/HTMLTableElement.cpp        2014-09-18 16:52:10 UTC (rev 173724)
</span><span class="lines">@@ -560,21 +560,21 @@
</span><span class="cx">     return ensureCachedHTMLCollection(TableTBodies);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-String HTMLTableElement::rules() const
</del><ins>+const AtomicString&amp; HTMLTableElement::rules() const
</ins><span class="cx"> {
</span><del>-    return getAttribute(rulesAttr);
</del><ins>+    return fastGetAttribute(rulesAttr);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-String HTMLTableElement::summary() const
</del><ins>+const AtomicString&amp; HTMLTableElement::summary() const
</ins><span class="cx"> {
</span><del>-    return getAttribute(summaryAttr);
</del><ins>+    return fastGetAttribute(summaryAttr);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void HTMLTableElement::addSubresourceAttributeURLs(ListHashSet&lt;URL&gt;&amp; urls) const
</span><span class="cx"> {
</span><span class="cx">     HTMLElement::addSubresourceAttributeURLs(urls);
</span><span class="cx"> 
</span><del>-    addSubresourceURL(urls, document().completeURL(getAttribute(backgroundAttr)));
</del><ins>+    addSubresourceURL(urls, document().completeURL(fastGetAttribute(backgroundAttr)));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLTableElementh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLTableElement.h (173723 => 173724)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLTableElement.h        2014-09-18 16:32:41 UTC (rev 173723)
+++ trunk/Source/WebCore/html/HTMLTableElement.h        2014-09-18 16:52:10 UTC (rev 173724)
</span><span class="lines">@@ -63,8 +63,8 @@
</span><span class="cx">     PassRefPtr&lt;HTMLCollection&gt; rows();
</span><span class="cx">     PassRefPtr&lt;HTMLCollection&gt; tBodies();
</span><span class="cx"> 
</span><del>-    String rules() const;
-    String summary() const;
</del><ins>+    const AtomicString&amp; rules() const;
+    const AtomicString&amp; summary() const;
</ins><span class="cx"> 
</span><span class="cx">     const StyleProperties* additionalCellStyle();
</span><span class="cx">     const StyleProperties* additionalGroupStyle(bool rows);
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLTableSectionElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLTableSectionElement.cpp (173723 => 173724)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLTableSectionElement.cpp        2014-09-18 16:32:41 UTC (rev 173723)
+++ trunk/Source/WebCore/html/HTMLTableSectionElement.cpp        2014-09-18 16:52:10 UTC (rev 173724)
</span><span class="lines">@@ -105,42 +105,42 @@
</span><span class="cx">     return rows;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-String HTMLTableSectionElement::align() const
</del><ins>+const AtomicString&amp; HTMLTableSectionElement::align() const
</ins><span class="cx"> {
</span><del>-    return getAttribute(alignAttr);
</del><ins>+    return fastGetAttribute(alignAttr);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-void HTMLTableSectionElement::setAlign(const String &amp;value)
</del><ins>+void HTMLTableSectionElement::setAlign(const AtomicString&amp; value)
</ins><span class="cx"> {
</span><span class="cx">     setAttribute(alignAttr, value);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-String HTMLTableSectionElement::ch() const
</del><ins>+const AtomicString&amp; HTMLTableSectionElement::ch() const
</ins><span class="cx"> {
</span><del>-    return getAttribute(charAttr);
</del><ins>+    return fastGetAttribute(charAttr);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-void HTMLTableSectionElement::setCh(const String &amp;value)
</del><ins>+void HTMLTableSectionElement::setCh(const AtomicString&amp; value)
</ins><span class="cx"> {
</span><span class="cx">     setAttribute(charAttr, value);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-String HTMLTableSectionElement::chOff() const
</del><ins>+const AtomicString&amp; HTMLTableSectionElement::chOff() const
</ins><span class="cx"> {
</span><span class="cx">     return getAttribute(charoffAttr);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void HTMLTableSectionElement::setChOff(const String &amp;value)
</del><ins>+void HTMLTableSectionElement::setChOff(const AtomicString&amp; value)
</ins><span class="cx"> {
</span><span class="cx">     setAttribute(charoffAttr, value);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-String HTMLTableSectionElement::vAlign() const
</del><ins>+const AtomicString&amp; HTMLTableSectionElement::vAlign() const
</ins><span class="cx"> {
</span><del>-    return getAttribute(valignAttr);
</del><ins>+    return fastGetAttribute(valignAttr);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-void HTMLTableSectionElement::setVAlign(const String &amp;value)
</del><ins>+void HTMLTableSectionElement::setVAlign(const AtomicString&amp; value)
</ins><span class="cx"> {
</span><span class="cx">     setAttribute(valignAttr, value);
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLTableSectionElementh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLTableSectionElement.h (173723 => 173724)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLTableSectionElement.h        2014-09-18 16:32:41 UTC (rev 173723)
+++ trunk/Source/WebCore/html/HTMLTableSectionElement.h        2014-09-18 16:52:10 UTC (rev 173724)
</span><span class="lines">@@ -41,17 +41,17 @@
</span><span class="cx"> 
</span><span class="cx">     int numRows() const;
</span><span class="cx"> 
</span><del>-    String align() const;
-    void setAlign(const String&amp;);
</del><ins>+    const AtomicString&amp; align() const;
+    void setAlign(const AtomicString&amp;);
</ins><span class="cx"> 
</span><del>-    String ch() const;
-    void setCh(const String&amp;);
</del><ins>+    const AtomicString&amp; ch() const;
+    void setCh(const AtomicString&amp;);
</ins><span class="cx"> 
</span><del>-    String chOff() const;
-    void setChOff(const String&amp;);
</del><ins>+    const AtomicString&amp; chOff() const;
+    void setChOff(const AtomicString&amp;);
</ins><span class="cx"> 
</span><del>-    String vAlign() const;
-    void setVAlign(const String&amp;);
</del><ins>+    const AtomicString&amp; vAlign() const;
+    void setVAlign(const AtomicString&amp;);
</ins><span class="cx"> 
</span><span class="cx">     PassRefPtr&lt;HTMLCollection&gt; rows();
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLTextAreaElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLTextAreaElement.cpp (173723 => 173724)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLTextAreaElement.cpp        2014-09-18 16:32:41 UTC (rev 173723)
+++ trunk/Source/WebCore/html/HTMLTextAreaElement.cpp        2014-09-18 16:52:10 UTC (rev 173724)
</span><span class="lines">@@ -430,7 +430,7 @@
</span><span class="cx"> int HTMLTextAreaElement::maxLength() const
</span><span class="cx"> {
</span><span class="cx">     bool ok;
</span><del>-    int value = getAttribute(maxlengthAttr).string().toInt(&amp;ok);
</del><ins>+    int value = fastGetAttribute(maxlengthAttr).string().toInt(&amp;ok);
</ins><span class="cx">     return ok &amp;&amp; value &gt;= 0 ? value : -1;
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlSearchInputTypecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/SearchInputType.cpp (173723 => 173724)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/SearchInputType.cpp        2014-09-18 16:32:41 UTC (rev 173723)
+++ trunk/Source/WebCore/html/SearchInputType.cpp        2014-09-18 16:52:10 UTC (rev 173724)
</span><span class="lines">@@ -180,7 +180,7 @@
</span><span class="cx"> 
</span><span class="cx"> bool SearchInputType::searchEventsShouldBeDispatched() const
</span><span class="cx"> {
</span><del>-    return element().hasAttribute(incrementalAttr);
</del><ins>+    return element().fastHasAttribute(incrementalAttr);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void SearchInputType::didSetValueByUserEdit(ValueChangeState state)
</span></span></pre></div>
<a id="trunkSourceWebCoreloaderFormSubmissioncpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/loader/FormSubmission.cpp (173723 => 173724)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/loader/FormSubmission.cpp        2014-09-18 16:32:41 UTC (rev 173723)
+++ trunk/Source/WebCore/loader/FormSubmission.cpp        2014-09-18 16:52:10 UTC (rev 173724)
</span><span class="lines">@@ -154,14 +154,14 @@
</span><span class="cx">     FormSubmission::Attributes copiedAttributes;
</span><span class="cx">     copiedAttributes.copyFrom(attributes);
</span><span class="cx">     if (submitButton) {
</span><del>-        String attributeValue;
-        if (!(attributeValue = submitButton-&gt;getAttribute(formactionAttr)).isNull())
</del><ins>+        AtomicString attributeValue;
+        if (!(attributeValue = submitButton-&gt;fastGetAttribute(formactionAttr)).isNull())
</ins><span class="cx">             copiedAttributes.parseAction(attributeValue);
</span><del>-        if (!(attributeValue = submitButton-&gt;getAttribute(formenctypeAttr)).isNull())
</del><ins>+        if (!(attributeValue = submitButton-&gt;fastGetAttribute(formenctypeAttr)).isNull())
</ins><span class="cx">             copiedAttributes.updateEncodingType(attributeValue);
</span><del>-        if (!(attributeValue = submitButton-&gt;getAttribute(formmethodAttr)).isNull())
</del><ins>+        if (!(attributeValue = submitButton-&gt;fastGetAttribute(formmethodAttr)).isNull())
</ins><span class="cx">             copiedAttributes.updateMethodType(attributeValue);
</span><del>-        if (!(attributeValue = submitButton-&gt;getAttribute(formtargetAttr)).isNull())
</del><ins>+        if (!(attributeValue = submitButton-&gt;fastGetAttribute(formtargetAttr)).isNull())
</ins><span class="cx">             copiedAttributes.setTarget(attributeValue);
</span><span class="cx">     }
</span><span class="cx">     
</span></span></pre></div>
<a id="trunkSourceWebCorepageFramecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/Frame.cpp (173723 => 173724)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/Frame.cpp        2014-09-18 16:32:41 UTC (rev 173723)
+++ trunk/Source/WebCore/page/Frame.cpp        2014-09-18 16:52:10 UTC (rev 173724)
</span><span class="lines">@@ -476,7 +476,7 @@
</span><span class="cx">     if (!resultFromNameAttribute.isEmpty())
</span><span class="cx">         return resultFromNameAttribute;
</span><span class="cx">     
</span><del>-    return matchLabelsAgainstString(labels, element-&gt;getAttribute(idAttr));
</del><ins>+    return matchLabelsAgainstString(labels, element-&gt;fastGetAttribute(idAttr));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> #if PLATFORM(IOS)
</span></span></pre></div>
<a id="trunkSourceWebCorepagePageSerializercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/PageSerializer.cpp (173723 => 173724)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/PageSerializer.cpp        2014-09-18 16:32:41 UTC (rev 173723)
+++ trunk/Source/WebCore/page/PageSerializer.cpp        2014-09-18 16:52:10 UTC (rev 173724)
</span><span class="lines">@@ -232,7 +232,7 @@
</span><span class="cx"> 
</span><span class="cx">         if (isHTMLImageElement(element)) {
</span><span class="cx">             HTMLImageElement* imageElement = toHTMLImageElement(element);
</span><del>-            URL url = document-&gt;completeURL(imageElement-&gt;getAttribute(HTMLNames::srcAttr));
</del><ins>+            URL url = document-&gt;completeURL(imageElement-&gt;fastGetAttribute(HTMLNames::srcAttr));
</ins><span class="cx">             CachedImage* cachedImage = imageElement-&gt;cachedImage();
</span><span class="cx">             addImageToResources(cachedImage, imageElement-&gt;renderer(), url);
</span><span class="cx">         } else if (element-&gt;hasTagName(HTMLNames::linkTag)) {
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformwinPasteboardWincpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/win/PasteboardWin.cpp (173723 => 173724)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/win/PasteboardWin.cpp        2014-09-18 16:32:41 UTC (rev 173723)
+++ trunk/Source/WebCore/platform/win/PasteboardWin.cpp        2014-09-18 16:52:10 UTC (rev 173724)
</span><span class="lines">@@ -1034,7 +1034,7 @@
</span><span class="cx">     if (!imageBuffer || !imageBuffer-&gt;size())
</span><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    HGLOBAL imageFileDescriptor = createGlobalImageFileDescriptor(url.string(), element.getAttribute(HTMLNames::altAttr), cachedImage);
</del><ins>+    HGLOBAL imageFileDescriptor = createGlobalImageFileDescriptor(url.string(), element.fastGetAttribute(HTMLNames::altAttr), cachedImage);
</ins><span class="cx">     if (!imageFileDescriptor)
</span><span class="cx">         return;
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingHitTestResultcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/HitTestResult.cpp (173723 => 173724)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/HitTestResult.cpp        2014-09-18 16:32:41 UTC (rev 173723)
+++ trunk/Source/WebCore/rendering/HitTestResult.cpp        2014-09-18 16:52:10 UTC (rev 173724)
</span><span class="lines">@@ -274,7 +274,7 @@
</span><span class="cx">     
</span><span class="cx">     if (isHTMLImageElement(m_innerNonSharedNode.get())) {
</span><span class="cx">         HTMLImageElement* image = toHTMLImageElement(m_innerNonSharedNode.get());
</span><del>-        return displayString(image-&gt;getAttribute(altAttr), m_innerNonSharedNode.get());
</del><ins>+        return displayString(image-&gt;fastGetAttribute(altAttr), m_innerNonSharedNode.get());
</ins><span class="cx">     }
</span><span class="cx">     
</span><span class="cx">     if (isHTMLInputElement(m_innerNonSharedNode.get())) {
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderSearchFieldcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderSearchField.cpp (173723 => 173724)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderSearchField.cpp        2014-09-18 16:32:41 UTC (rev 173723)
+++ trunk/Source/WebCore/rendering/RenderSearchField.cpp        2014-09-18 16:52:10 UTC (rev 173724)
</span><span class="lines">@@ -191,7 +191,7 @@
</span><span class="cx"> 
</span><span class="cx"> const AtomicString&amp; RenderSearchField::autosaveName() const
</span><span class="cx"> {
</span><del>-    return inputElement().getAttribute(autosaveAttr);
</del><ins>+    return inputElement().fastGetAttribute(autosaveAttr);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> // PopupMenuClient methods
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderTableCellcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderTableCell.cpp (173723 => 173724)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderTableCell.cpp        2014-09-18 16:32:41 UTC (rev 173723)
+++ trunk/Source/WebCore/rendering/RenderTableCell.cpp        2014-09-18 16:52:10 UTC (rev 173724)
</span><span class="lines">@@ -178,7 +178,7 @@
</span><span class="cx">     if (element() &amp;&amp; style().autoWrap()) {
</span><span class="cx">         // See if nowrap was set.
</span><span class="cx">         Length w = styleOrColLogicalWidth();
</span><del>-        String nowrap = element()-&gt;getAttribute(nowrapAttr);
</del><ins>+        const AtomicString&amp; nowrap = element()-&gt;fastGetAttribute(nowrapAttr);
</ins><span class="cx">         if (!nowrap.isNull() &amp;&amp; w.isFixed())
</span><span class="cx">             // Nowrap is set, but we didn't actually use it because of the
</span><span class="cx">             // fixed width set on the cell.  Even so, it is a WinIE/Moz trait
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingsvgRenderSVGResourceClippercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/svg/RenderSVGResourceClipper.cpp (173723 => 173724)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/svg/RenderSVGResourceClipper.cpp        2014-09-18 16:32:41 UTC (rev 173723)
+++ trunk/Source/WebCore/rendering/svg/RenderSVGResourceClipper.cpp        2014-09-18 16:52:10 UTC (rev 173724)
</span><span class="lines">@@ -226,7 +226,7 @@
</span><span class="cx">             renderer = useElement.rendererClipChild();
</span><span class="cx">             if (!renderer)
</span><span class="cx">                 continue;
</span><del>-            if (!useElement.hasAttribute(SVGNames::clip_ruleAttr))
</del><ins>+            if (!useElement.fastHasAttribute(SVGNames::clip_ruleAttr))
</ins><span class="cx">                 newClipRule = renderer-&gt;style().svgStyle().clipRule();
</span><span class="cx">         }
</span><span class="cx"> 
</span></span></pre>
</div>
</div>

</body>
</html>