<!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>[203302] trunk/Source</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/203302">203302</a></dd>
<dt>Author</dt> <dd>cdumez@apple.com</dd>
<dt>Date</dt> <dd>2016-07-15 14:35:40 -0700 (Fri, 15 Jul 2016)</dd>
</dl>

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

Reviewed by Ryosuke Niwa.

Use fastGetAttribute() / setAttributeWithoutSynchronization() when possible, for performance.

Source/WebCore:

* Modules/plugins/YouTubePluginReplacement.cpp:
(WebCore::YouTubePluginReplacement::installReplacement):
* dom/Element.h:
(WebCore::Element::setIdAttribute):
* editing/ApplyStyleCommand.cpp:
(WebCore::hasNoAttributeOrOnlyStyleAttribute):
(WebCore::createFontElement):
(WebCore::ApplyStyleCommand::applyInlineStyleChange):
* editing/EditingStyle.cpp:
(WebCore::EditingStyle::elementIsStyledSpanOrHTMLEquivalent):
* editing/Editor.cpp:
(WebCore::Editor::setBaseWritingDirection):
* editing/ReplaceSelectionCommand.cpp:
(WebCore::isMailPasteAsQuotationNode):
(WebCore::isInlineNodeWithStyle):
* editing/cocoa/DataDetection.mm:
(WebCore::DataDetection::detectContentInRange):
* editing/htmlediting.cpp:
(WebCore::createTabSpanElement):
* editing/ios/EditorIOS.mm:
(WebCore::Editor::setTextAlignmentForChangedBaseWritingDirection):
(WebCore::Editor::WebContentReader::readURL):
* editing/mac/EditorMac.mm:
(WebCore::Editor::WebContentReader::readURL):
* editing/markup.cpp:
(WebCore::createFragmentFromText):
* html/BaseButtonInputType.cpp:
(WebCore::BaseButtonInputType::setValue):
* html/BaseCheckableInputType.cpp:
(WebCore::BaseCheckableInputType::setValue):
* html/FTPDirectoryDocument.cpp:
(WebCore::FTPDirectoryDocumentParser::appendEntry):
(WebCore::FTPDirectoryDocumentParser::createTDForFilename):
(WebCore::FTPDirectoryDocumentParser::loadDocumentTemplate):
(WebCore::FTPDirectoryDocumentParser::createBasicDocument):
* html/HTMLAnchorElement.cpp:
(WebCore::HTMLAnchorElement::href):
(WebCore::HTMLAnchorElement::setHref):
(WebCore::HTMLAnchorElement::target):
* html/HTMLAreaElement.cpp:
(WebCore::HTMLAreaElement::target):
* html/HTMLBaseElement.cpp:
(WebCore::HTMLBaseElement::setHref):
* html/HTMLButtonElement.cpp:
(WebCore::HTMLButtonElement::setType):
* html/HTMLDetailsElement.cpp:
(WebCore::HTMLDetailsElement::didAddUserAgentShadowRoot):
(WebCore::HTMLDetailsElement::toggleOpen):
* html/HTMLDocument.cpp:
(WebCore::HTMLDocument::setBgColor):
(WebCore::HTMLDocument::setFgColor):
(WebCore::HTMLDocument::setAlinkColor):
(WebCore::HTMLDocument::setLinkColor):
(WebCore::HTMLDocument::setVlinkColor):
* html/HTMLElement.cpp:
(WebCore::HTMLElement::setDir):
(WebCore::HTMLElement::setContentEditable):
(WebCore::HTMLElement::setDraggable):
(WebCore::HTMLElement::setSpellcheck):
(WebCore::HTMLElement::setTranslate):
* html/HTMLFormControlElement.cpp:
(WebCore::HTMLFormControlElement::setFormEnctype):
(WebCore::HTMLFormControlElement::setFormMethod):
(WebCore::HTMLFormControlElement::setAutocorrect):
(WebCore::HTMLFormControlElement::setAutocapitalize):
(WebCore::HTMLFormControlElement::setAutocomplete):
* html/HTMLFormElement.cpp:
(WebCore::HTMLFormElement::setAutocorrect):
(WebCore::HTMLFormElement::setAutocapitalize):
(WebCore::HTMLFormElement::setAction):
(WebCore::HTMLFormElement::setEnctype):
(WebCore::HTMLFormElement::setMethod):
(WebCore::HTMLFormElement::target):
* html/HTMLImageElement.cpp:
(WebCore::HTMLImageElement::width):
(WebCore::HTMLImageElement::height):
(WebCore::HTMLImageElement::setSrc):
* html/HTMLInputElement.cpp:
(WebCore::HTMLInputElement::setType):
(WebCore::HTMLInputElement::updateType):
(WebCore::HTMLInputElement::altText):
(WebCore::HTMLInputElement::setDefaultValue):
* html/HTMLLinkElement.cpp:
(WebCore::HTMLLinkElement::href):
(WebCore::HTMLLinkElement::target):
(WebCore::HTMLLinkElement::type):
* html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::setSrc):
(WebCore::HTMLMediaElement::setPreload):
* html/HTMLMeterElement.cpp:
(WebCore::HTMLMeterElement::min):
(WebCore::HTMLMeterElement::setMin):
(WebCore::HTMLMeterElement::max):
(WebCore::HTMLMeterElement::setMax):
(WebCore::HTMLMeterElement::value):
(WebCore::HTMLMeterElement::setValue):
(WebCore::HTMLMeterElement::low):
(WebCore::HTMLMeterElement::setLow):
(WebCore::HTMLMeterElement::high):
(WebCore::HTMLMeterElement::setHigh):
(WebCore::HTMLMeterElement::optimum):
(WebCore::HTMLMeterElement::setOptimum):
* html/HTMLObjectElement.cpp:
(WebCore::HTMLObjectElement::containsJavaApplet):
* html/HTMLOptionElement.cpp:
(WebCore::HTMLOptionElement::createForJSConstructor):
(WebCore::HTMLOptionElement::setValue):
(WebCore::HTMLOptionElement::setLabel):
* html/HTMLProgressElement.cpp:
(WebCore::HTMLProgressElement::setValue):
(WebCore::HTMLProgressElement::setMax):
* html/HTMLScriptElement.cpp:
(WebCore::HTMLScriptElement::typeAttributeValue):
* html/HTMLSelectElement.cpp:
(WebCore::HTMLSelectElement::setMultiple):
* html/HTMLSourceElement.cpp:
(WebCore::HTMLSourceElement::setSrc):
(WebCore::HTMLSourceElement::media):
(WebCore::HTMLSourceElement::setMedia):
(WebCore::HTMLSourceElement::type):
(WebCore::HTMLSourceElement::setType):
* html/HTMLTableSectionElement.cpp:
(WebCore::HTMLTableSectionElement::setAlign):
(WebCore::HTMLTableSectionElement::setCh):
(WebCore::HTMLTableSectionElement::chOff):
(WebCore::HTMLTableSectionElement::setChOff):
(WebCore::HTMLTableSectionElement::setVAlign):
* html/HTMLTextFormControlElement.cpp:
(WebCore::HTMLTextFormControlElement::updateInnerTextElementEditability):
* html/HTMLVideoElement.cpp:
(WebCore::HTMLVideoElement::imageSourceURL):
* html/HiddenInputType.cpp:
(WebCore::HiddenInputType::restoreFormControlState):
(WebCore::HiddenInputType::setValue):
* html/MediaDocument.cpp:
(WebCore::MediaDocumentParser::createDocumentStructure):
(WebCore::MediaDocument::replaceMediaElementTimerFired):
* html/PluginDocument.cpp:
(WebCore::PluginDocumentParser::createDocumentStructure):
* html/TextFieldInputType.cpp:
(WebCore::TextFieldInputType::createAutoFillButton):
(WebCore::TextFieldInputType::updateAutoFillButton):
* html/parser/HTMLTreeBuilder.cpp:
(WebCore::HTMLTreeBuilder::processIsindexStartTagForInBody):
* html/shadow/MediaControlElements.cpp:
(WebCore::MediaControlClosedCaptionsContainerElement::create):
(WebCore::MediaControlTimelineElement::create):
(WebCore::MediaControlPanelVolumeSliderElement::create):
(WebCore::MediaControlFullscreenVolumeSliderElement::create):
* html/shadow/TextControlInnerElements.cpp:
(WebCore::SearchFieldCancelButtonElement::SearchFieldCancelButtonElement):
* html/shadow/mac/ImageControlsButtonElementMac.cpp:
(WebCore::ImageControlsButtonElementMac::tryCreate):
* html/shadow/mac/ImageControlsRootElementMac.cpp:
(WebCore::ImageControlsRootElement::tryCreate):
* html/track/WebVTTElement.cpp:
(WebCore::WebVTTElement::createEquivalentHTMLElement):
* html/track/WebVTTParser.cpp:
(WebCore::WebVTTTreeBuilder::constructTreeFromToken):
* inspector/InspectorCSSAgent.cpp:
(WebCore::InspectorCSSAgent::createInspectorStyleSheetForDocument):
* inspector/InspectorPageAgent.cpp:
(WebCore::InspectorPageAgent::buildObjectForFrame):
* mathml/MathMLSelectElement.cpp:
(WebCore::MathMLSelectElement::toggle):
* page/PageSerializer.cpp:
(WebCore::PageSerializer::serializeFrame):
* rendering/RenderDetailsMarker.cpp:
(WebCore::RenderDetailsMarker::isOpen):
* rendering/mathml/RenderMathMLFraction.cpp:
(WebCore::RenderMathMLFraction::updateFromElement):
* svg/SVGElement.cpp:
(WebCore::SVGElement::setXmlbase):
* svg/SVGSVGElement.cpp:
(WebCore::SVGSVGElement::setContentScriptType):
(WebCore::SVGSVGElement::setContentStyleType):
* svg/SVGStyleElement.cpp:
(WebCore::SVGStyleElement::setMedia):
(WebCore::SVGStyleElement::setTitle):

Source/WebKit/mac:

* WebView/WebHTMLRepresentation.mm:
(matchLabelsAgainstElement):

Source/WebKit/win:

* DOMHTMLClasses.cpp:
(DOMHTMLElement::idName):

Source/WebKit2:

* WebProcess/Plugins/PDF/DeprecatedPDFPlugin.mm:
(WebKit::PDFPlugin::PDFPlugin):
* WebProcess/Plugins/PDF/PDFPlugin.mm:
(WebKit::PDFPlugin::createPasswordEntryForm):
* WebProcess/Plugins/PDF/PDFPluginAnnotation.mm:
(WebKit::PDFPluginAnnotation::attach):
* WebProcess/Plugins/PDF/PDFPluginChoiceAnnotation.mm:
(WebKit::PDFPluginChoiceAnnotation::createAnnotationElement):</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoreModulespluginsYouTubePluginReplacementcpp">trunk/Source/WebCore/Modules/plugins/YouTubePluginReplacement.cpp</a></li>
<li><a href="#trunkSourceWebCoredomElementh">trunk/Source/WebCore/dom/Element.h</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="#trunkSourceWebCoreeditingEditorcpp">trunk/Source/WebCore/editing/Editor.cpp</a></li>
<li><a href="#trunkSourceWebCoreeditingReplaceSelectionCommandcpp">trunk/Source/WebCore/editing/ReplaceSelectionCommand.cpp</a></li>
<li><a href="#trunkSourceWebCoreeditingcocoaDataDetectionmm">trunk/Source/WebCore/editing/cocoa/DataDetection.mm</a></li>
<li><a href="#trunkSourceWebCoreeditinghtmleditingcpp">trunk/Source/WebCore/editing/htmlediting.cpp</a></li>
<li><a href="#trunkSourceWebCoreeditingiosEditorIOSmm">trunk/Source/WebCore/editing/ios/EditorIOS.mm</a></li>
<li><a href="#trunkSourceWebCoreeditingmacEditorMacmm">trunk/Source/WebCore/editing/mac/EditorMac.mm</a></li>
<li><a href="#trunkSourceWebCoreeditingmarkupcpp">trunk/Source/WebCore/editing/markup.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlBaseButtonInputTypecpp">trunk/Source/WebCore/html/BaseButtonInputType.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlBaseCheckableInputTypecpp">trunk/Source/WebCore/html/BaseCheckableInputType.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlFTPDirectoryDocumentcpp">trunk/Source/WebCore/html/FTPDirectoryDocument.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLAnchorElementcpp">trunk/Source/WebCore/html/HTMLAnchorElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLAreaElementcpp">trunk/Source/WebCore/html/HTMLAreaElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLBaseElementcpp">trunk/Source/WebCore/html/HTMLBaseElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLButtonElementcpp">trunk/Source/WebCore/html/HTMLButtonElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLDetailsElementcpp">trunk/Source/WebCore/html/HTMLDetailsElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLDocumentcpp">trunk/Source/WebCore/html/HTMLDocument.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLElementcpp">trunk/Source/WebCore/html/HTMLElement.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="#trunkSourceWebCorehtmlHTMLImageElementcpp">trunk/Source/WebCore/html/HTMLImageElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLInputElementcpp">trunk/Source/WebCore/html/HTMLInputElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLLinkElementcpp">trunk/Source/WebCore/html/HTMLLinkElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLMediaElementcpp">trunk/Source/WebCore/html/HTMLMediaElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLMeterElementcpp">trunk/Source/WebCore/html/HTMLMeterElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLObjectElementcpp">trunk/Source/WebCore/html/HTMLObjectElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLOptionElementcpp">trunk/Source/WebCore/html/HTMLOptionElement.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="#trunkSourceWebCorehtmlHTMLSelectElementcpp">trunk/Source/WebCore/html/HTMLSelectElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLSourceElementcpp">trunk/Source/WebCore/html/HTMLSourceElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLTableSectionElementcpp">trunk/Source/WebCore/html/HTMLTableSectionElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLTextFormControlElementcpp">trunk/Source/WebCore/html/HTMLTextFormControlElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLVideoElementcpp">trunk/Source/WebCore/html/HTMLVideoElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHiddenInputTypecpp">trunk/Source/WebCore/html/HiddenInputType.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlMediaDocumentcpp">trunk/Source/WebCore/html/MediaDocument.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlPluginDocumentcpp">trunk/Source/WebCore/html/PluginDocument.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlTextFieldInputTypecpp">trunk/Source/WebCore/html/TextFieldInputType.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlparserHTMLTreeBuildercpp">trunk/Source/WebCore/html/parser/HTMLTreeBuilder.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlshadowMediaControlElementscpp">trunk/Source/WebCore/html/shadow/MediaControlElements.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlshadowTextControlInnerElementscpp">trunk/Source/WebCore/html/shadow/TextControlInnerElements.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlshadowmacImageControlsButtonElementMaccpp">trunk/Source/WebCore/html/shadow/mac/ImageControlsButtonElementMac.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlshadowmacImageControlsRootElementMaccpp">trunk/Source/WebCore/html/shadow/mac/ImageControlsRootElementMac.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmltrackWebVTTElementcpp">trunk/Source/WebCore/html/track/WebVTTElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmltrackWebVTTParsercpp">trunk/Source/WebCore/html/track/WebVTTParser.cpp</a></li>
<li><a href="#trunkSourceWebCoreinspectorInspectorCSSAgentcpp">trunk/Source/WebCore/inspector/InspectorCSSAgent.cpp</a></li>
<li><a href="#trunkSourceWebCoreinspectorInspectorPageAgentcpp">trunk/Source/WebCore/inspector/InspectorPageAgent.cpp</a></li>
<li><a href="#trunkSourceWebCoremathmlMathMLSelectElementcpp">trunk/Source/WebCore/mathml/MathMLSelectElement.cpp</a></li>
<li><a href="#trunkSourceWebCorepagePageSerializercpp">trunk/Source/WebCore/page/PageSerializer.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderDetailsMarkercpp">trunk/Source/WebCore/rendering/RenderDetailsMarker.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGElementcpp">trunk/Source/WebCore/svg/SVGElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGSVGElementcpp">trunk/Source/WebCore/svg/SVGSVGElement.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGStyleElementcpp">trunk/Source/WebCore/svg/SVGStyleElement.cpp</a></li>
<li><a href="#trunkSourceWebKitmacChangeLog">trunk/Source/WebKit/mac/ChangeLog</a></li>
<li><a href="#trunkSourceWebKitmacWebViewWebHTMLRepresentationmm">trunk/Source/WebKit/mac/WebView/WebHTMLRepresentation.mm</a></li>
<li><a href="#trunkSourceWebKitwinChangeLog">trunk/Source/WebKit/win/ChangeLog</a></li>
<li><a href="#trunkSourceWebKitwinDOMHTMLClassescpp">trunk/Source/WebKit/win/DOMHTMLClasses.cpp</a></li>
<li><a href="#trunkSourceWebKit2ChangeLog">trunk/Source/WebKit2/ChangeLog</a></li>
<li><a href="#trunkSourceWebKit2WebProcessPluginsPDFDeprecatedPDFPluginmm">trunk/Source/WebKit2/WebProcess/Plugins/PDF/DeprecatedPDFPlugin.mm</a></li>
<li><a href="#trunkSourceWebKit2WebProcessPluginsPDFPDFPluginmm">trunk/Source/WebKit2/WebProcess/Plugins/PDF/PDFPlugin.mm</a></li>
<li><a href="#trunkSourceWebKit2WebProcessPluginsPDFPDFPluginAnnotationmm">trunk/Source/WebKit2/WebProcess/Plugins/PDF/PDFPluginAnnotation.mm</a></li>
<li><a href="#trunkSourceWebKit2WebProcessPluginsPDFPDFPluginChoiceAnnotationmm">trunk/Source/WebKit2/WebProcess/Plugins/PDF/PDFPluginChoiceAnnotation.mm</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (203301 => 203302)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2016-07-15 21:34:16 UTC (rev 203301)
+++ trunk/Source/WebCore/ChangeLog        2016-07-15 21:35:40 UTC (rev 203302)
</span><span class="lines">@@ -1,5 +1,194 @@
</span><span class="cx"> 2016-07-15  Chris Dumez  &lt;cdumez@apple.com&gt;
</span><span class="cx"> 
</span><ins>+        Use fastGetAttribute() / setAttributeWithoutSynchronization() when possible
+        https://bugs.webkit.org/show_bug.cgi?id=159793
+
+        Reviewed by Ryosuke Niwa.
+
+        Use fastGetAttribute() / setAttributeWithoutSynchronization() when possible, for performance.
+
+        * Modules/plugins/YouTubePluginReplacement.cpp:
+        (WebCore::YouTubePluginReplacement::installReplacement):
+        * dom/Element.h:
+        (WebCore::Element::setIdAttribute):
+        * editing/ApplyStyleCommand.cpp:
+        (WebCore::hasNoAttributeOrOnlyStyleAttribute):
+        (WebCore::createFontElement):
+        (WebCore::ApplyStyleCommand::applyInlineStyleChange):
+        * editing/EditingStyle.cpp:
+        (WebCore::EditingStyle::elementIsStyledSpanOrHTMLEquivalent):
+        * editing/Editor.cpp:
+        (WebCore::Editor::setBaseWritingDirection):
+        * editing/ReplaceSelectionCommand.cpp:
+        (WebCore::isMailPasteAsQuotationNode):
+        (WebCore::isInlineNodeWithStyle):
+        * editing/cocoa/DataDetection.mm:
+        (WebCore::DataDetection::detectContentInRange):
+        * editing/htmlediting.cpp:
+        (WebCore::createTabSpanElement):
+        * editing/ios/EditorIOS.mm:
+        (WebCore::Editor::setTextAlignmentForChangedBaseWritingDirection):
+        (WebCore::Editor::WebContentReader::readURL):
+        * editing/mac/EditorMac.mm:
+        (WebCore::Editor::WebContentReader::readURL):
+        * editing/markup.cpp:
+        (WebCore::createFragmentFromText):
+        * html/BaseButtonInputType.cpp:
+        (WebCore::BaseButtonInputType::setValue):
+        * html/BaseCheckableInputType.cpp:
+        (WebCore::BaseCheckableInputType::setValue):
+        * html/FTPDirectoryDocument.cpp:
+        (WebCore::FTPDirectoryDocumentParser::appendEntry):
+        (WebCore::FTPDirectoryDocumentParser::createTDForFilename):
+        (WebCore::FTPDirectoryDocumentParser::loadDocumentTemplate):
+        (WebCore::FTPDirectoryDocumentParser::createBasicDocument):
+        * html/HTMLAnchorElement.cpp:
+        (WebCore::HTMLAnchorElement::href):
+        (WebCore::HTMLAnchorElement::setHref):
+        (WebCore::HTMLAnchorElement::target):
+        * html/HTMLAreaElement.cpp:
+        (WebCore::HTMLAreaElement::target):
+        * html/HTMLBaseElement.cpp:
+        (WebCore::HTMLBaseElement::setHref):
+        * html/HTMLButtonElement.cpp:
+        (WebCore::HTMLButtonElement::setType):
+        * html/HTMLDetailsElement.cpp:
+        (WebCore::HTMLDetailsElement::didAddUserAgentShadowRoot):
+        (WebCore::HTMLDetailsElement::toggleOpen):
+        * html/HTMLDocument.cpp:
+        (WebCore::HTMLDocument::setBgColor):
+        (WebCore::HTMLDocument::setFgColor):
+        (WebCore::HTMLDocument::setAlinkColor):
+        (WebCore::HTMLDocument::setLinkColor):
+        (WebCore::HTMLDocument::setVlinkColor):
+        * html/HTMLElement.cpp:
+        (WebCore::HTMLElement::setDir):
+        (WebCore::HTMLElement::setContentEditable):
+        (WebCore::HTMLElement::setDraggable):
+        (WebCore::HTMLElement::setSpellcheck):
+        (WebCore::HTMLElement::setTranslate):
+        * html/HTMLFormControlElement.cpp:
+        (WebCore::HTMLFormControlElement::setFormEnctype):
+        (WebCore::HTMLFormControlElement::setFormMethod):
+        (WebCore::HTMLFormControlElement::setAutocorrect):
+        (WebCore::HTMLFormControlElement::setAutocapitalize):
+        (WebCore::HTMLFormControlElement::setAutocomplete):
+        * html/HTMLFormElement.cpp:
+        (WebCore::HTMLFormElement::setAutocorrect):
+        (WebCore::HTMLFormElement::setAutocapitalize):
+        (WebCore::HTMLFormElement::setAction):
+        (WebCore::HTMLFormElement::setEnctype):
+        (WebCore::HTMLFormElement::setMethod):
+        (WebCore::HTMLFormElement::target):
+        * html/HTMLImageElement.cpp:
+        (WebCore::HTMLImageElement::width):
+        (WebCore::HTMLImageElement::height):
+        (WebCore::HTMLImageElement::setSrc):
+        * html/HTMLInputElement.cpp:
+        (WebCore::HTMLInputElement::setType):
+        (WebCore::HTMLInputElement::updateType):
+        (WebCore::HTMLInputElement::altText):
+        (WebCore::HTMLInputElement::setDefaultValue):
+        * html/HTMLLinkElement.cpp:
+        (WebCore::HTMLLinkElement::href):
+        (WebCore::HTMLLinkElement::target):
+        (WebCore::HTMLLinkElement::type):
+        * html/HTMLMediaElement.cpp:
+        (WebCore::HTMLMediaElement::setSrc):
+        (WebCore::HTMLMediaElement::setPreload):
+        * html/HTMLMeterElement.cpp:
+        (WebCore::HTMLMeterElement::min):
+        (WebCore::HTMLMeterElement::setMin):
+        (WebCore::HTMLMeterElement::max):
+        (WebCore::HTMLMeterElement::setMax):
+        (WebCore::HTMLMeterElement::value):
+        (WebCore::HTMLMeterElement::setValue):
+        (WebCore::HTMLMeterElement::low):
+        (WebCore::HTMLMeterElement::setLow):
+        (WebCore::HTMLMeterElement::high):
+        (WebCore::HTMLMeterElement::setHigh):
+        (WebCore::HTMLMeterElement::optimum):
+        (WebCore::HTMLMeterElement::setOptimum):
+        * html/HTMLObjectElement.cpp:
+        (WebCore::HTMLObjectElement::containsJavaApplet):
+        * html/HTMLOptionElement.cpp:
+        (WebCore::HTMLOptionElement::createForJSConstructor):
+        (WebCore::HTMLOptionElement::setValue):
+        (WebCore::HTMLOptionElement::setLabel):
+        * html/HTMLProgressElement.cpp:
+        (WebCore::HTMLProgressElement::setValue):
+        (WebCore::HTMLProgressElement::setMax):
+        * html/HTMLScriptElement.cpp:
+        (WebCore::HTMLScriptElement::typeAttributeValue):
+        * html/HTMLSelectElement.cpp:
+        (WebCore::HTMLSelectElement::setMultiple):
+        * html/HTMLSourceElement.cpp:
+        (WebCore::HTMLSourceElement::setSrc):
+        (WebCore::HTMLSourceElement::media):
+        (WebCore::HTMLSourceElement::setMedia):
+        (WebCore::HTMLSourceElement::type):
+        (WebCore::HTMLSourceElement::setType):
+        * html/HTMLTableSectionElement.cpp:
+        (WebCore::HTMLTableSectionElement::setAlign):
+        (WebCore::HTMLTableSectionElement::setCh):
+        (WebCore::HTMLTableSectionElement::chOff):
+        (WebCore::HTMLTableSectionElement::setChOff):
+        (WebCore::HTMLTableSectionElement::setVAlign):
+        * html/HTMLTextFormControlElement.cpp:
+        (WebCore::HTMLTextFormControlElement::updateInnerTextElementEditability):
+        * html/HTMLVideoElement.cpp:
+        (WebCore::HTMLVideoElement::imageSourceURL):
+        * html/HiddenInputType.cpp:
+        (WebCore::HiddenInputType::restoreFormControlState):
+        (WebCore::HiddenInputType::setValue):
+        * html/MediaDocument.cpp:
+        (WebCore::MediaDocumentParser::createDocumentStructure):
+        (WebCore::MediaDocument::replaceMediaElementTimerFired):
+        * html/PluginDocument.cpp:
+        (WebCore::PluginDocumentParser::createDocumentStructure):
+        * html/TextFieldInputType.cpp:
+        (WebCore::TextFieldInputType::createAutoFillButton):
+        (WebCore::TextFieldInputType::updateAutoFillButton):
+        * html/parser/HTMLTreeBuilder.cpp:
+        (WebCore::HTMLTreeBuilder::processIsindexStartTagForInBody):
+        * html/shadow/MediaControlElements.cpp:
+        (WebCore::MediaControlClosedCaptionsContainerElement::create):
+        (WebCore::MediaControlTimelineElement::create):
+        (WebCore::MediaControlPanelVolumeSliderElement::create):
+        (WebCore::MediaControlFullscreenVolumeSliderElement::create):
+        * html/shadow/TextControlInnerElements.cpp:
+        (WebCore::SearchFieldCancelButtonElement::SearchFieldCancelButtonElement):
+        * html/shadow/mac/ImageControlsButtonElementMac.cpp:
+        (WebCore::ImageControlsButtonElementMac::tryCreate):
+        * html/shadow/mac/ImageControlsRootElementMac.cpp:
+        (WebCore::ImageControlsRootElement::tryCreate):
+        * html/track/WebVTTElement.cpp:
+        (WebCore::WebVTTElement::createEquivalentHTMLElement):
+        * html/track/WebVTTParser.cpp:
+        (WebCore::WebVTTTreeBuilder::constructTreeFromToken):
+        * inspector/InspectorCSSAgent.cpp:
+        (WebCore::InspectorCSSAgent::createInspectorStyleSheetForDocument):
+        * inspector/InspectorPageAgent.cpp:
+        (WebCore::InspectorPageAgent::buildObjectForFrame):
+        * mathml/MathMLSelectElement.cpp:
+        (WebCore::MathMLSelectElement::toggle):
+        * page/PageSerializer.cpp:
+        (WebCore::PageSerializer::serializeFrame):
+        * rendering/RenderDetailsMarker.cpp:
+        (WebCore::RenderDetailsMarker::isOpen):
+        * rendering/mathml/RenderMathMLFraction.cpp:
+        (WebCore::RenderMathMLFraction::updateFromElement):
+        * svg/SVGElement.cpp:
+        (WebCore::SVGElement::setXmlbase):
+        * svg/SVGSVGElement.cpp:
+        (WebCore::SVGSVGElement::setContentScriptType):
+        (WebCore::SVGSVGElement::setContentStyleType):
+        * svg/SVGStyleElement.cpp:
+        (WebCore::SVGStyleElement::setMedia):
+        (WebCore::SVGStyleElement::setTitle):
+
+2016-07-15  Chris Dumez  &lt;cdumez@apple.com&gt;
+
</ins><span class="cx">         Modernize StaticNodeList / StaticElementList
</span><span class="cx">         https://bugs.webkit.org/show_bug.cgi?id=159831
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreModulespluginsYouTubePluginReplacementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/plugins/YouTubePluginReplacement.cpp (203301 => 203302)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/plugins/YouTubePluginReplacement.cpp        2016-07-15 21:34:16 UTC (rev 203301)
+++ trunk/Source/WebCore/Modules/plugins/YouTubePluginReplacement.cpp        2016-07-15 21:35:40 UTC (rev 203302)
</span><span class="lines">@@ -85,19 +85,19 @@
</span><span class="cx"> 
</span><span class="cx">     auto iframeElement = HTMLIFrameElement::create(HTMLNames::iframeTag, m_parentElement-&gt;document());
</span><span class="cx">     if (m_attributes.contains(&quot;width&quot;))
</span><del>-        iframeElement-&gt;setAttribute(HTMLNames::widthAttr, AtomicString(&quot;100%&quot;, AtomicString::ConstructFromLiteral));
</del><ins>+        iframeElement-&gt;setAttributeWithoutSynchronization(HTMLNames::widthAttr, AtomicString(&quot;100%&quot;, AtomicString::ConstructFromLiteral));
</ins><span class="cx">     
</span><span class="cx">     const auto&amp; heightValue = m_attributes.find(&quot;height&quot;);
</span><span class="cx">     if (heightValue != m_attributes.end()) {
</span><span class="cx">         iframeElement-&gt;setAttribute(HTMLNames::styleAttr, AtomicString(&quot;max-height: 100%&quot;, AtomicString::ConstructFromLiteral));
</span><del>-        iframeElement-&gt;setAttribute(HTMLNames::heightAttr, heightValue-&gt;value);
</del><ins>+        iframeElement-&gt;setAttributeWithoutSynchronization(HTMLNames::heightAttr, heightValue-&gt;value);
</ins><span class="cx">     }
</span><span class="cx"> 
</span><del>-    iframeElement-&gt;setAttribute(HTMLNames::srcAttr, youTubeURL(m_attributes.get(&quot;src&quot;)));
-    iframeElement-&gt;setAttribute(HTMLNames::frameborderAttr, AtomicString(&quot;0&quot;, AtomicString::ConstructFromLiteral));
</del><ins>+    iframeElement-&gt;setAttributeWithoutSynchronization(HTMLNames::srcAttr, youTubeURL(m_attributes.get(&quot;src&quot;)));
+    iframeElement-&gt;setAttributeWithoutSynchronization(HTMLNames::frameborderAttr, AtomicString(&quot;0&quot;, AtomicString::ConstructFromLiteral));
</ins><span class="cx">     
</span><span class="cx">     // Disable frame flattening for this iframe.
</span><del>-    iframeElement-&gt;setAttribute(HTMLNames::scrollingAttr, AtomicString(&quot;no&quot;, AtomicString::ConstructFromLiteral));
</del><ins>+    iframeElement-&gt;setAttributeWithoutSynchronization(HTMLNames::scrollingAttr, AtomicString(&quot;no&quot;, AtomicString::ConstructFromLiteral));
</ins><span class="cx">     m_embedShadowElement-&gt;appendChild(iframeElement);
</span><span class="cx"> 
</span><span class="cx">     return true;
</span></span></pre></div>
<a id="trunkSourceWebCoredomElementh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/Element.h (203301 => 203302)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/Element.h        2016-07-15 21:34:16 UTC (rev 203301)
+++ trunk/Source/WebCore/dom/Element.h        2016-07-15 21:35:40 UTC (rev 203302)
</span><span class="lines">@@ -74,7 +74,7 @@
</span><span class="cx">     WEBCORE_EXPORT bool hasAttribute(const QualifiedName&amp;) const;
</span><span class="cx">     WEBCORE_EXPORT const AtomicString&amp; getAttribute(const QualifiedName&amp;) const;
</span><span class="cx">     WEBCORE_EXPORT void setAttribute(const QualifiedName&amp;, const AtomicString&amp; value);
</span><del>-    void setAttributeWithoutSynchronization(const QualifiedName&amp;, const AtomicString&amp; value);
</del><ins>+    WEBCORE_EXPORT void setAttributeWithoutSynchronization(const QualifiedName&amp;, const AtomicString&amp; value);
</ins><span class="cx">     void setSynchronizedLazyAttribute(const QualifiedName&amp;, const AtomicString&amp; value);
</span><span class="cx">     bool removeAttribute(const QualifiedName&amp;);
</span><span class="cx"> 
</span><span class="lines">@@ -705,7 +705,7 @@
</span><span class="cx"> 
</span><span class="cx"> inline void Element::setIdAttribute(const AtomicString&amp; value)
</span><span class="cx"> {
</span><del>-    setAttribute(HTMLNames::idAttr, value);
</del><ins>+    setAttributeWithoutSynchronization(HTMLNames::idAttr, value);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> inline const SpaceSplitString&amp; Element::classNames() const
</span></span></pre></div>
<a id="trunkSourceWebCoreeditingApplyStyleCommandcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/editing/ApplyStyleCommand.cpp (203301 => 203302)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/editing/ApplyStyleCommand.cpp        2016-07-15 21:34:16 UTC (rev 203301)
+++ trunk/Source/WebCore/editing/ApplyStyleCommand.cpp        2016-07-15 21:35:40 UTC (rev 203302)
</span><span class="lines">@@ -82,7 +82,7 @@
</span><span class="cx">         return true;
</span><span class="cx"> 
</span><span class="cx">     unsigned matchedAttributes = 0;
</span><del>-    if (element-&gt;getAttribute(classAttr) == styleSpanClassString())
</del><ins>+    if (element-&gt;fastGetAttribute(classAttr) == styleSpanClassString())
</ins><span class="cx">         matchedAttributes++;
</span><span class="cx">     if (element-&gt;hasAttribute(styleAttr) &amp;&amp; (shouldStyleAttributeBeEmpty == AllowNonEmptyStyleAttribute
</span><span class="cx">         || !element-&gt;inlineStyle() || element-&gt;inlineStyle()-&gt;isEmpty()))
</span><span class="lines">@@ -114,7 +114,7 @@
</span><span class="cx">     return hasNoAttributeOrOnlyStyleAttribute(downcast&lt;HTMLFontElement&gt;(element), shouldStyleAttributeBeEmpty);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-static RefPtr&lt;Element&gt; createFontElement(Document&amp; document)
</del><ins>+static RefPtr&lt;HTMLElement&gt; createFontElement(Document&amp; document)
</ins><span class="cx"> {
</span><span class="cx">     return createHTMLElement(document, fontTag);
</span><span class="cx"> }
</span><span class="lines">@@ -1461,13 +1461,13 @@
</span><span class="cx">             if (styleChange.applyFontSize())
</span><span class="cx">                 setNodeAttribute(fontContainer, sizeAttr, styleChange.fontSize());
</span><span class="cx">         } else {
</span><del>-            RefPtr&lt;Element&gt; fontElement = createFontElement(document());
</del><ins>+            auto fontElement = createFontElement(document());
</ins><span class="cx">             if (styleChange.applyFontColor())
</span><del>-                fontElement-&gt;setAttribute(colorAttr, styleChange.fontColor());
</del><ins>+                fontElement-&gt;setAttributeWithoutSynchronization(colorAttr, styleChange.fontColor());
</ins><span class="cx">             if (styleChange.applyFontFace())
</span><del>-                fontElement-&gt;setAttribute(faceAttr, styleChange.fontFace());
</del><ins>+                fontElement-&gt;setAttributeWithoutSynchronization(faceAttr, styleChange.fontFace());
</ins><span class="cx">             if (styleChange.applyFontSize())
</span><del>-                fontElement-&gt;setAttribute(sizeAttr, styleChange.fontSize());
</del><ins>+                fontElement-&gt;setAttributeWithoutSynchronization(sizeAttr, styleChange.fontSize());
</ins><span class="cx">             surroundNodeRangeWithElement(startNode, endNode, fontElement.get());
</span><span class="cx">         }
</span><span class="cx">     }
</span></span></pre></div>
<a id="trunkSourceWebCoreeditingEditingStylecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/editing/EditingStyle.cpp (203301 => 203302)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/editing/EditingStyle.cpp        2016-07-15 21:34:16 UTC (rev 203301)
+++ trunk/Source/WebCore/editing/EditingStyle.cpp        2016-07-15 21:35:40 UTC (rev 203302)
</span><span class="lines">@@ -1050,7 +1050,7 @@
</span><span class="cx">     if (!elementIsSpanOrElementEquivalent &amp;&amp; !matchedAttributes)
</span><span class="cx">         return false; // element is not a span, a html element equivalent, or font element.
</span><span class="cx">     
</span><del>-    if (element-&gt;getAttribute(HTMLNames::classAttr) == AppleStyleSpanClass)
</del><ins>+    if (element-&gt;fastGetAttribute(HTMLNames::classAttr) == AppleStyleSpanClass)
</ins><span class="cx">         matchedAttributes++;
</span><span class="cx"> 
</span><span class="cx">     if (element-&gt;hasAttribute(HTMLNames::styleAttr)) {
</span></span></pre></div>
<a id="trunkSourceWebCoreeditingEditorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/editing/Editor.cpp (203301 => 203302)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/editing/Editor.cpp        2016-07-15 21:34:16 UTC (rev 203301)
+++ trunk/Source/WebCore/editing/Editor.cpp        2016-07-15 21:35:40 UTC (rev 203302)
</span><span class="lines">@@ -1661,7 +1661,7 @@
</span><span class="cx">     if (is&lt;HTMLTextFormControlElement&gt;(focusedElement)) {
</span><span class="cx">         if (direction == NaturalWritingDirection)
</span><span class="cx">             return;
</span><del>-        downcast&lt;HTMLTextFormControlElement&gt;(*focusedElement).setAttribute(dirAttr, direction == LeftToRightWritingDirection ? &quot;ltr&quot; : &quot;rtl&quot;);
</del><ins>+        downcast&lt;HTMLTextFormControlElement&gt;(*focusedElement).setAttributeWithoutSynchronization(dirAttr, direction == LeftToRightWritingDirection ? &quot;ltr&quot; : &quot;rtl&quot;);
</ins><span class="cx">         focusedElement-&gt;dispatchInputEvent();
</span><span class="cx">         document().updateStyleIfNeeded();
</span><span class="cx">         return;
</span></span></pre></div>
<a id="trunkSourceWebCoreeditingReplaceSelectionCommandcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/editing/ReplaceSelectionCommand.cpp (203301 => 203302)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/editing/ReplaceSelectionCommand.cpp        2016-07-15 21:34:16 UTC (rev 203301)
+++ trunk/Source/WebCore/editing/ReplaceSelectionCommand.cpp        2016-07-15 21:35:40 UTC (rev 203302)
</span><span class="lines">@@ -436,7 +436,7 @@
</span><span class="cx"> 
</span><span class="cx"> static bool isMailPasteAsQuotationNode(const Node* node)
</span><span class="cx"> {
</span><del>-    return node &amp;&amp; node-&gt;hasTagName(blockquoteTag) &amp;&amp; downcast&lt;Element&gt;(node)-&gt;getAttribute(classAttr) == ApplePasteAsQuotation;
</del><ins>+    return node &amp;&amp; node-&gt;hasTagName(blockquoteTag) &amp;&amp; downcast&lt;Element&gt;(node)-&gt;fastGetAttribute(classAttr) == ApplePasteAsQuotation;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> static bool isHeaderElement(const Node* a)
</span><span class="lines">@@ -894,7 +894,7 @@
</span><span class="cx">     // We can skip over elements whose class attribute is
</span><span class="cx">     // one of our internal classes.
</span><span class="cx">     const HTMLElement* element = static_cast&lt;const HTMLElement*&gt;(node);
</span><del>-    const AtomicString&amp; classAttributeValue = element-&gt;getAttribute(classAttr);
</del><ins>+    const AtomicString&amp; classAttributeValue = element-&gt;fastGetAttribute(classAttr);
</ins><span class="cx">     if (classAttributeValue == AppleTabSpanClass
</span><span class="cx">         || classAttributeValue == AppleConvertedSpace
</span><span class="cx">         || classAttributeValue == ApplePasteAsQuotation)
</span></span></pre></div>
<a id="trunkSourceWebCoreeditingcocoaDataDetectionmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/editing/cocoa/DataDetection.mm (203301 => 203302)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/editing/cocoa/DataDetection.mm        2016-07-15 21:34:16 UTC (rev 203301)
+++ trunk/Source/WebCore/editing/cocoa/DataDetection.mm        2016-07-15 21:35:40 UTC (rev 203302)
</span><span class="lines">@@ -634,9 +634,9 @@
</span><span class="cx">             }
</span><span class="cx">             anchorElement-&gt;appendChild(WTFMove(newTextNode));
</span><span class="cx">             // Add a special attribute to mark this URLification as the result of data detectors.
</span><del>-            anchorElement-&gt;setAttribute(x_apple_data_detectorsAttr, &quot;true&quot;);
-            anchorElement-&gt;setAttribute(x_apple_data_detectors_typeAttr, dataDetectorTypeForCategory(softLink_DataDetectorsCore_DDResultGetCategory(coreResult)));
-            anchorElement-&gt;setAttribute(x_apple_data_detectors_resultAttr, identifier);
</del><ins>+            anchorElement-&gt;setAttributeWithoutSynchronization(x_apple_data_detectorsAttr, AtomicString(&quot;true&quot;, AtomicString::ConstructFromLiteral));
+            anchorElement-&gt;setAttributeWithoutSynchronization(x_apple_data_detectors_typeAttr, dataDetectorTypeForCategory(softLink_DataDetectorsCore_DDResultGetCategory(coreResult)));
+            anchorElement-&gt;setAttributeWithoutSynchronization(x_apple_data_detectors_resultAttr, identifier);
</ins><span class="cx"> 
</span><span class="cx">             parentNode-&gt;insertBefore(WTFMove(anchorElement), &amp;currentTextNode);
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreeditinghtmleditingcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/editing/htmlediting.cpp (203301 => 203302)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/editing/htmlediting.cpp        2016-07-15 21:34:16 UTC (rev 203301)
+++ trunk/Source/WebCore/editing/htmlediting.cpp        2016-07-15 21:35:40 UTC (rev 203302)
</span><span class="lines">@@ -931,7 +931,7 @@
</span><span class="cx"> {
</span><span class="cx">     auto spanElement = document.createElement(spanTag, false);
</span><span class="cx"> 
</span><del>-    spanElement-&gt;setAttribute(classAttr, AppleTabSpanClass);
</del><ins>+    spanElement-&gt;setAttributeWithoutSynchronization(classAttr, AppleTabSpanClass);
</ins><span class="cx">     spanElement-&gt;setAttribute(styleAttr, &quot;white-space:pre&quot;);
</span><span class="cx"> 
</span><span class="cx">     spanElement-&gt;appendChild(tabTextNode, ASSERT_NO_EXCEPTION);
</span></span></pre></div>
<a id="trunkSourceWebCoreeditingiosEditorIOSmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/editing/ios/EditorIOS.mm (203301 => 203302)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/editing/ios/EditorIOS.mm        2016-07-15 21:34:16 UTC (rev 203301)
+++ trunk/Source/WebCore/editing/ios/EditorIOS.mm        2016-07-15 21:35:40 UTC (rev 203302)
</span><span class="lines">@@ -166,7 +166,7 @@
</span><span class="cx">             || downcast&lt;HTMLInputElement&gt;(*focusedElement).isSearchField())))) {
</span><span class="cx">         if (direction == NaturalWritingDirection)
</span><span class="cx">             return;
</span><del>-        downcast&lt;HTMLElement&gt;(*focusedElement).setAttribute(alignAttr, newValue);
</del><ins>+        downcast&lt;HTMLElement&gt;(*focusedElement).setAttributeWithoutSynchronization(alignAttr, newValue);
</ins><span class="cx">         m_frame.document()-&gt;updateStyleIfNeeded();
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="lines">@@ -490,7 +490,7 @@
</span><span class="cx">         }
</span><span class="cx">     } else {
</span><span class="cx">         auto anchor = frame.document()-&gt;createElement(HTMLNames::aTag, false);
</span><del>-        anchor-&gt;setAttribute(HTMLNames::hrefAttr, url.string());
</del><ins>+        anchor-&gt;setAttributeWithoutSynchronization(HTMLNames::hrefAttr, url.string());
</ins><span class="cx">         anchor-&gt;appendChild(frame.document()-&gt;createTextNode([[(NSURL *)url absoluteString] precomposedStringWithCanonicalMapping]));
</span><span class="cx"> 
</span><span class="cx">         auto newFragment = frame.document()-&gt;createDocumentFragment();
</span></span></pre></div>
<a id="trunkSourceWebCoreeditingmacEditorMacmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/editing/mac/EditorMac.mm (203301 => 203302)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/editing/mac/EditorMac.mm        2016-07-15 21:34:16 UTC (rev 203301)
+++ trunk/Source/WebCore/editing/mac/EditorMac.mm        2016-07-15 21:35:40 UTC (rev 203302)
</span><span class="lines">@@ -598,7 +598,7 @@
</span><span class="cx">         return false;
</span><span class="cx"> 
</span><span class="cx">     auto anchor = frame.document()-&gt;createElement(HTMLNames::aTag, false);
</span><del>-    anchor-&gt;setAttribute(HTMLNames::hrefAttr, url.string());
</del><ins>+    anchor-&gt;setAttributeWithoutSynchronization(HTMLNames::hrefAttr, url.string());
</ins><span class="cx">     anchor-&gt;appendChild(frame.document()-&gt;createTextNode([title precomposedStringWithCanonicalMapping]));
</span><span class="cx"> 
</span><span class="cx">     fragment = frame.document()-&gt;createDocumentFragment();
</span></span></pre></div>
<a id="trunkSourceWebCoreeditingmarkupcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/editing/markup.cpp (203301 => 203302)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/editing/markup.cpp        2016-07-15 21:34:16 UTC (rev 203301)
+++ trunk/Source/WebCore/editing/markup.cpp        2016-07-15 21:35:40 UTC (rev 203302)
</span><span class="lines">@@ -796,7 +796,7 @@
</span><span class="cx">         fragment-&gt;appendChild(document.createTextNode(string), ASSERT_NO_EXCEPTION);
</span><span class="cx">         if (string.endsWith('\n')) {
</span><span class="cx">             auto element = HTMLBRElement::create(document);
</span><del>-            element-&gt;setAttribute(classAttr, AppleInterchangeNewline);            
</del><ins>+            element-&gt;setAttributeWithoutSynchronization(classAttr, AppleInterchangeNewline);
</ins><span class="cx">             fragment-&gt;appendChild(element, ASSERT_NO_EXCEPTION);
</span><span class="cx">         }
</span><span class="cx">         return fragment;
</span><span class="lines">@@ -828,7 +828,7 @@
</span><span class="cx">         if (s.isEmpty() &amp;&amp; i + 1 == numLines) {
</span><span class="cx">             // For last line, use the &quot;magic BR&quot; rather than a P.
</span><span class="cx">             element = HTMLBRElement::create(document);
</span><del>-            element-&gt;setAttribute(classAttr, AppleInterchangeNewline);
</del><ins>+            element-&gt;setAttributeWithoutSynchronization(classAttr, AppleInterchangeNewline);
</ins><span class="cx">         } else if (useLineBreak) {
</span><span class="cx">             element = HTMLBRElement::create(document);
</span><span class="cx">             fillContainerFromString(fragment, s);
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlBaseButtonInputTypecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/BaseButtonInputType.cpp (203301 => 203302)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/BaseButtonInputType.cpp        2016-07-15 21:34:16 UTC (rev 203301)
+++ trunk/Source/WebCore/html/BaseButtonInputType.cpp        2016-07-15 21:35:40 UTC (rev 203302)
</span><span class="lines">@@ -64,7 +64,7 @@
</span><span class="cx"> 
</span><span class="cx"> void BaseButtonInputType::setValue(const String&amp; sanitizedValue, bool, TextFieldEventBehavior)
</span><span class="cx"> {
</span><del>-    element().setAttribute(valueAttr, sanitizedValue);
</del><ins>+    element().setAttributeWithoutSynchronization(valueAttr, sanitizedValue);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlBaseCheckableInputTypecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/BaseCheckableInputType.cpp (203301 => 203302)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/BaseCheckableInputType.cpp        2016-07-15 21:34:16 UTC (rev 203301)
+++ trunk/Source/WebCore/html/BaseCheckableInputType.cpp        2016-07-15 21:35:40 UTC (rev 203302)
</span><span class="lines">@@ -103,7 +103,7 @@
</span><span class="cx"> 
</span><span class="cx"> void BaseCheckableInputType::setValue(const String&amp; sanitizedValue, bool, TextFieldEventBehavior)
</span><span class="cx"> {
</span><del>-    element().setAttribute(valueAttr, sanitizedValue);
</del><ins>+    element().setAttributeWithoutSynchronization(valueAttr, sanitizedValue);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool BaseCheckableInputType::isCheckable()
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlFTPDirectoryDocumentcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/FTPDirectoryDocument.cpp (203301 => 203302)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/FTPDirectoryDocument.cpp        2016-07-15 21:34:16 UTC (rev 203301)
+++ trunk/Source/WebCore/html/FTPDirectoryDocument.cpp        2016-07-15 21:35:40 UTC (rev 203302)
</span><span class="lines">@@ -101,29 +101,29 @@
</span><span class="cx"> 
</span><span class="cx"> void FTPDirectoryDocumentParser::appendEntry(const String&amp; filename, const String&amp; size, const String&amp; date, bool isDirectory)
</span><span class="cx"> {
</span><del>-    RefPtr&lt;Element&gt; rowElement = m_tableElement-&gt;insertRow(-1, IGNORE_EXCEPTION);
-    rowElement-&gt;setAttribute(HTMLNames::classAttr, &quot;ftpDirectoryEntryRow&quot;);
</del><ins>+    auto rowElement = m_tableElement-&gt;insertRow(-1, IGNORE_EXCEPTION);
+    rowElement-&gt;setAttributeWithoutSynchronization(HTMLNames::classAttr, AtomicString(&quot;ftpDirectoryEntryRow&quot;, AtomicString::ConstructFromLiteral));
</ins><span class="cx"> 
</span><span class="cx">     auto typeElement = document()-&gt;createElement(tdTag, false);
</span><span class="cx">     typeElement-&gt;appendChild(Text::create(*document(), String(&amp;noBreakSpace, 1)), IGNORE_EXCEPTION);
</span><span class="cx">     if (isDirectory)
</span><del>-        typeElement-&gt;setAttribute(HTMLNames::classAttr, &quot;ftpDirectoryIcon ftpDirectoryTypeDirectory&quot;);
</del><ins>+        typeElement-&gt;setAttributeWithoutSynchronization(HTMLNames::classAttr, AtomicString(&quot;ftpDirectoryIcon ftpDirectoryTypeDirectory&quot;, AtomicString::ConstructFromLiteral));
</ins><span class="cx">     else
</span><del>-        typeElement-&gt;setAttribute(HTMLNames::classAttr, &quot;ftpDirectoryIcon ftpDirectoryTypeFile&quot;);
</del><ins>+        typeElement-&gt;setAttributeWithoutSynchronization(HTMLNames::classAttr, AtomicString(&quot;ftpDirectoryIcon ftpDirectoryTypeFile&quot;, AtomicString::ConstructFromLiteral));
</ins><span class="cx">     rowElement-&gt;appendChild(typeElement, IGNORE_EXCEPTION);
</span><span class="cx"> 
</span><span class="cx">     auto nameElement = createTDForFilename(filename);
</span><del>-    nameElement-&gt;setAttribute(HTMLNames::classAttr, &quot;ftpDirectoryFileName&quot;);
</del><ins>+    nameElement-&gt;setAttributeWithoutSynchronization(HTMLNames::classAttr, AtomicString(&quot;ftpDirectoryFileName&quot;, AtomicString::ConstructFromLiteral));
</ins><span class="cx">     rowElement-&gt;appendChild(nameElement, IGNORE_EXCEPTION);
</span><span class="cx"> 
</span><span class="cx">     auto dateElement = document()-&gt;createElement(tdTag, false);
</span><span class="cx">     dateElement-&gt;appendChild(Text::create(*document(), date), IGNORE_EXCEPTION);
</span><del>-    dateElement-&gt;setAttribute(HTMLNames::classAttr, &quot;ftpDirectoryFileDate&quot;);
</del><ins>+    dateElement-&gt;setAttributeWithoutSynchronization(HTMLNames::classAttr, AtomicString(&quot;ftpDirectoryFileDate&quot;, AtomicString::ConstructFromLiteral));
</ins><span class="cx">     rowElement-&gt;appendChild(dateElement, IGNORE_EXCEPTION);
</span><span class="cx"> 
</span><span class="cx">     auto sizeElement = document()-&gt;createElement(tdTag, false);
</span><span class="cx">     sizeElement-&gt;appendChild(Text::create(*document(), size), IGNORE_EXCEPTION);
</span><del>-    sizeElement-&gt;setAttribute(HTMLNames::classAttr, &quot;ftpDirectoryFileSize&quot;);
</del><ins>+    sizeElement-&gt;setAttributeWithoutSynchronization(HTMLNames::classAttr, AtomicString(&quot;ftpDirectoryFileSize&quot;, AtomicString::ConstructFromLiteral));
</ins><span class="cx">     rowElement-&gt;appendChild(sizeElement, IGNORE_EXCEPTION);
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -136,7 +136,7 @@
</span><span class="cx">         fullURL = fullURL + '/' + filename;
</span><span class="cx"> 
</span><span class="cx">     auto anchorElement = document()-&gt;createElement(aTag, false);
</span><del>-    anchorElement-&gt;setAttribute(HTMLNames::hrefAttr, fullURL);
</del><ins>+    anchorElement-&gt;setAttributeWithoutSynchronization(HTMLNames::hrefAttr, fullURL);
</ins><span class="cx">     anchorElement-&gt;appendChild(Text::create(*document(), filename), IGNORE_EXCEPTION);
</span><span class="cx"> 
</span><span class="cx">     Ref&lt;Element&gt; tdElement = document()-&gt;createElement(tdTag, false);
</span><span class="lines">@@ -306,7 +306,7 @@
</span><span class="cx">     // Otherwise create one manually
</span><span class="cx">     tableElement = document()-&gt;createElement(tableTag, false);
</span><span class="cx">     m_tableElement = downcast&lt;HTMLTableElement&gt;(tableElement.get());
</span><del>-    m_tableElement-&gt;setAttribute(HTMLNames::idAttr, &quot;ftpDirectoryTable&quot;);
</del><ins>+    m_tableElement-&gt;setAttributeWithoutSynchronization(HTMLNames::idAttr, AtomicString(&quot;ftpDirectoryTable&quot;, AtomicString::ConstructFromLiteral));
</ins><span class="cx"> 
</span><span class="cx">     // If we didn't find the table element, lets try to append our own to the body
</span><span class="cx">     // If that fails for some reason, cram it on the end of the document as a last
</span><span class="lines">@@ -331,8 +331,8 @@
</span><span class="cx"> 
</span><span class="cx">     auto tableElement = document()-&gt;createElement(tableTag, false);
</span><span class="cx">     m_tableElement = downcast&lt;HTMLTableElement&gt;(tableElement.ptr());
</span><del>-    m_tableElement-&gt;setAttribute(HTMLNames::idAttr, &quot;ftpDirectoryTable&quot;);
-    m_tableElement-&gt;setAttribute(HTMLNames::styleAttr, &quot;width:100%&quot;);
</del><ins>+    m_tableElement-&gt;setAttributeWithoutSynchronization(HTMLNames::idAttr, AtomicString(&quot;ftpDirectoryTable&quot;, AtomicString::ConstructFromLiteral));
+    m_tableElement-&gt;setAttribute(HTMLNames::styleAttr, AtomicString(&quot;width:100%&quot;, AtomicString::ConstructFromLiteral));
</ins><span class="cx"> 
</span><span class="cx">     bodyElement-&gt;appendChild(tableElement, 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 (203301 => 203302)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLAnchorElement.cpp        2016-07-15 21:34:16 UTC (rev 203301)
+++ trunk/Source/WebCore/html/HTMLAnchorElement.cpp        2016-07-15 21:35:40 UTC (rev 203302)
</span><span class="lines">@@ -286,12 +286,12 @@
</span><span class="cx"> 
</span><span class="cx"> URL HTMLAnchorElement::href() const
</span><span class="cx"> {
</span><del>-    return document().completeURL(stripLeadingAndTrailingHTMLSpaces(getAttribute(hrefAttr)));
</del><ins>+    return document().completeURL(stripLeadingAndTrailingHTMLSpaces(fastGetAttribute(hrefAttr)));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void HTMLAnchorElement::setHref(const AtomicString&amp; value)
</span><span class="cx"> {
</span><del>-    setAttribute(hrefAttr, value);
</del><ins>+    setAttributeWithoutSynchronization(hrefAttr, value);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool HTMLAnchorElement::hasRel(uint32_t relation) const
</span><span class="lines">@@ -319,7 +319,7 @@
</span><span class="cx"> 
</span><span class="cx"> String HTMLAnchorElement::target() const
</span><span class="cx"> {
</span><del>-    return getAttribute(targetAttr);
</del><ins>+    return fastGetAttribute(targetAttr);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> String HTMLAnchorElement::origin() const
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLAreaElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLAreaElement.cpp (203301 => 203302)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLAreaElement.cpp        2016-07-15 21:34:16 UTC (rev 203301)
+++ trunk/Source/WebCore/html/HTMLAreaElement.cpp        2016-07-15 21:35:40 UTC (rev 203302)
</span><span class="lines">@@ -251,7 +251,7 @@
</span><span class="cx"> 
</span><span class="cx"> String HTMLAreaElement::target() const
</span><span class="cx"> {
</span><del>-    return getAttribute(targetAttr);
</del><ins>+    return fastGetAttribute(targetAttr);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLBaseElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLBaseElement.cpp (203301 => 203302)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLBaseElement.cpp        2016-07-15 21:34:16 UTC (rev 203301)
+++ trunk/Source/WebCore/html/HTMLBaseElement.cpp        2016-07-15 21:35:40 UTC (rev 203302)
</span><span class="lines">@@ -98,7 +98,7 @@
</span><span class="cx"> 
</span><span class="cx"> void HTMLBaseElement::setHref(const AtomicString&amp; value)
</span><span class="cx"> {
</span><del>-    setAttribute(hrefAttr, value);
</del><ins>+    setAttributeWithoutSynchronization(hrefAttr, value);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLButtonElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLButtonElement.cpp (203301 => 203302)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLButtonElement.cpp        2016-07-15 21:34:16 UTC (rev 203301)
+++ trunk/Source/WebCore/html/HTMLButtonElement.cpp        2016-07-15 21:35:40 UTC (rev 203302)
</span><span class="lines">@@ -53,7 +53,7 @@
</span><span class="cx"> 
</span><span class="cx"> void HTMLButtonElement::setType(const AtomicString&amp; type)
</span><span class="cx"> {
</span><del>-    setAttribute(typeAttr, type);
</del><ins>+    setAttributeWithoutSynchronization(typeAttr, type);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> RenderPtr&lt;RenderElement&gt; HTMLButtonElement::createElementRenderer(RenderStyle&amp;&amp; style, const RenderTreePosition&amp;)
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLDetailsElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLDetailsElement.cpp (203301 => 203302)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLDetailsElement.cpp        2016-07-15 21:34:16 UTC (rev 203301)
+++ trunk/Source/WebCore/html/HTMLDetailsElement.cpp        2016-07-15 21:35:40 UTC (rev 203302)
</span><span class="lines">@@ -95,7 +95,7 @@
</span><span class="cx"> void HTMLDetailsElement::didAddUserAgentShadowRoot(ShadowRoot* root)
</span><span class="cx"> {
</span><span class="cx">     auto summarySlot = HTMLSlotElement::create(slotTag, document());
</span><del>-    summarySlot-&gt;setAttribute(nameAttr, summarySlotName());
</del><ins>+    summarySlot-&gt;setAttributeWithoutSynchronization(nameAttr, summarySlotName());
</ins><span class="cx">     m_summarySlot = summarySlot.ptr();
</span><span class="cx"> 
</span><span class="cx">     auto defaultSummary = HTMLSummaryElement::create(summaryTag, document());
</span><span class="lines">@@ -143,7 +143,7 @@
</span><span class="cx"> 
</span><span class="cx"> void HTMLDetailsElement::toggleOpen()
</span><span class="cx"> {
</span><del>-    setAttribute(openAttr, m_isOpen ? nullAtom : emptyAtom);
</del><ins>+    setAttributeWithoutSynchronization(openAttr, m_isOpen ? nullAtom : emptyAtom);
</ins><span class="cx"> 
</span><span class="cx">     // We need to post to the document because toggling this element will delete it.
</span><span class="cx">     if (AXObjectCache* cache = document().existingAXObjectCache())
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLDocumentcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLDocument.cpp (203301 => 203302)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLDocument.cpp        2016-07-15 21:34:16 UTC (rev 203301)
+++ trunk/Source/WebCore/html/HTMLDocument.cpp        2016-07-15 21:35:40 UTC (rev 203302)
</span><span class="lines">@@ -150,7 +150,7 @@
</span><span class="cx"> void HTMLDocument::setBgColor(const String&amp; value)
</span><span class="cx"> {
</span><span class="cx">     if (auto* bodyElement = body())
</span><del>-        bodyElement-&gt;setAttribute(bgcolorAttr, value);
</del><ins>+        bodyElement-&gt;setAttributeWithoutSynchronization(bgcolorAttr, value);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> const AtomicString&amp; HTMLDocument::fgColor() const
</span><span class="lines">@@ -164,7 +164,7 @@
</span><span class="cx"> void HTMLDocument::setFgColor(const String&amp; value)
</span><span class="cx"> {
</span><span class="cx">     if (auto* bodyElement = body())
</span><del>-        bodyElement-&gt;setAttribute(textAttr, value);
</del><ins>+        bodyElement-&gt;setAttributeWithoutSynchronization(textAttr, value);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> const AtomicString&amp; HTMLDocument::alinkColor() const
</span><span class="lines">@@ -178,7 +178,7 @@
</span><span class="cx"> void HTMLDocument::setAlinkColor(const String&amp; value)
</span><span class="cx"> {
</span><span class="cx">     if (auto* bodyElement = body())
</span><del>-        bodyElement-&gt;setAttribute(alinkAttr, value);
</del><ins>+        bodyElement-&gt;setAttributeWithoutSynchronization(alinkAttr, value);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> const AtomicString&amp; HTMLDocument::linkColor() const
</span><span class="lines">@@ -192,7 +192,7 @@
</span><span class="cx"> void HTMLDocument::setLinkColor(const String&amp; value)
</span><span class="cx"> {
</span><span class="cx">     if (auto* bodyElement = body())
</span><del>-        bodyElement-&gt;setAttribute(linkAttr, value);
</del><ins>+        bodyElement-&gt;setAttributeWithoutSynchronization(linkAttr, value);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> const AtomicString&amp; HTMLDocument::vlinkColor() const
</span><span class="lines">@@ -206,7 +206,7 @@
</span><span class="cx"> void HTMLDocument::setVlinkColor(const String&amp; value)
</span><span class="cx"> {
</span><span class="cx">     if (auto* bodyElement = body())
</span><del>-        bodyElement-&gt;setAttribute(vlinkAttr, value);
</del><ins>+        bodyElement-&gt;setAttributeWithoutSynchronization(vlinkAttr, value);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void HTMLDocument::captureEvents()
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLElement.cpp (203301 => 203302)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLElement.cpp        2016-07-15 21:34:16 UTC (rev 203301)
+++ trunk/Source/WebCore/html/HTMLElement.cpp        2016-07-15 21:35:40 UTC (rev 203302)
</span><span class="lines">@@ -541,7 +541,7 @@
</span><span class="cx"> 
</span><span class="cx"> void HTMLElement::setDir(const AtomicString&amp; value)
</span><span class="cx"> {
</span><del>-    setAttribute(dirAttr, value);
</del><ins>+    setAttributeWithoutSynchronization(dirAttr, value);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void HTMLElement::setInnerText(const String&amp; text, ExceptionCode&amp; ec)
</span><span class="lines">@@ -764,11 +764,11 @@
</span><span class="cx"> void HTMLElement::setContentEditable(const String&amp; enabled, ExceptionCode&amp; ec)
</span><span class="cx"> {
</span><span class="cx">     if (equalLettersIgnoringASCIICase(enabled, &quot;true&quot;))
</span><del>-        setAttribute(contenteditableAttr, AtomicString(&quot;true&quot;, AtomicString::ConstructFromLiteral));
</del><ins>+        setAttributeWithoutSynchronization(contenteditableAttr, AtomicString(&quot;true&quot;, AtomicString::ConstructFromLiteral));
</ins><span class="cx">     else if (equalLettersIgnoringASCIICase(enabled, &quot;false&quot;))
</span><del>-        setAttribute(contenteditableAttr, AtomicString(&quot;false&quot;, AtomicString::ConstructFromLiteral));
</del><ins>+        setAttributeWithoutSynchronization(contenteditableAttr, AtomicString(&quot;false&quot;, AtomicString::ConstructFromLiteral));
</ins><span class="cx">     else if (equalLettersIgnoringASCIICase(enabled, &quot;plaintext-only&quot;))
</span><del>-        setAttribute(contenteditableAttr, AtomicString(&quot;plaintext-only&quot;, AtomicString::ConstructFromLiteral));
</del><ins>+        setAttributeWithoutSynchronization(contenteditableAttr, AtomicString(&quot;plaintext-only&quot;, AtomicString::ConstructFromLiteral));
</ins><span class="cx">     else if (equalLettersIgnoringASCIICase(enabled, &quot;inherit&quot;))
</span><span class="cx">         removeAttribute(contenteditableAttr);
</span><span class="cx">     else
</span><span class="lines">@@ -782,7 +782,7 @@
</span><span class="cx"> 
</span><span class="cx"> void HTMLElement::setDraggable(bool value)
</span><span class="cx"> {
</span><del>-    setAttribute(draggableAttr, value
</del><ins>+    setAttributeWithoutSynchronization(draggableAttr, value
</ins><span class="cx">         ? AtomicString(&quot;true&quot;, AtomicString::ConstructFromLiteral)
</span><span class="cx">         : AtomicString(&quot;false&quot;, AtomicString::ConstructFromLiteral));
</span><span class="cx"> }
</span><span class="lines">@@ -794,7 +794,7 @@
</span><span class="cx"> 
</span><span class="cx"> void HTMLElement::setSpellcheck(bool enable)
</span><span class="cx"> {
</span><del>-    setAttribute(spellcheckAttr, enable
</del><ins>+    setAttributeWithoutSynchronization(spellcheckAttr, enable
</ins><span class="cx">         ? AtomicString(&quot;true&quot;, AtomicString::ConstructFromLiteral)
</span><span class="cx">         : AtomicString(&quot;false&quot;, AtomicString::ConstructFromLiteral));
</span><span class="cx"> }
</span><span class="lines">@@ -851,7 +851,7 @@
</span><span class="cx"> 
</span><span class="cx"> void HTMLElement::setTranslate(bool enable)
</span><span class="cx"> {
</span><del>-    setAttribute(translateAttr, enable ? &quot;yes&quot; : &quot;no&quot;);
</del><ins>+    setAttributeWithoutSynchronization(translateAttr, enable ? &quot;yes&quot; : &quot;no&quot;);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool HTMLElement::rendererIsNeeded(const RenderStyle&amp; style)
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLFormControlElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLFormControlElement.cpp (203301 => 203302)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLFormControlElement.cpp        2016-07-15 21:34:16 UTC (rev 203301)
+++ trunk/Source/WebCore/html/HTMLFormControlElement.cpp        2016-07-15 21:35:40 UTC (rev 203302)
</span><span class="lines">@@ -85,7 +85,7 @@
</span><span class="cx"> 
</span><span class="cx"> void HTMLFormControlElement::setFormEnctype(const String&amp; value)
</span><span class="cx"> {
</span><del>-    setAttribute(formenctypeAttr, value);
</del><ins>+    setAttributeWithoutSynchronization(formenctypeAttr, value);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> String HTMLFormControlElement::formMethod() const
</span><span class="lines">@@ -98,7 +98,7 @@
</span><span class="cx"> 
</span><span class="cx"> void HTMLFormControlElement::setFormMethod(const String&amp; value)
</span><span class="cx"> {
</span><del>-    setAttribute(formmethodAttr, value);
</del><ins>+    setAttributeWithoutSynchronization(formmethodAttr, value);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool HTMLFormControlElement::formNoValidate() const
</span><span class="lines">@@ -580,7 +580,7 @@
</span><span class="cx"> 
</span><span class="cx"> void HTMLFormControlElement::setAutocorrect(bool autocorrect)
</span><span class="cx"> {
</span><del>-    setAttribute(autocorrectAttr, autocorrect ? AtomicString(&quot;on&quot;, AtomicString::ConstructFromLiteral) : AtomicString(&quot;off&quot;, AtomicString::ConstructFromLiteral));
</del><ins>+    setAttributeWithoutSynchronization(autocorrectAttr, autocorrect ? AtomicString(&quot;on&quot;, AtomicString::ConstructFromLiteral) : AtomicString(&quot;off&quot;, AtomicString::ConstructFromLiteral));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> WebAutocapitalizeType HTMLFormControlElement::autocapitalizeType() const
</span><span class="lines">@@ -600,7 +600,7 @@
</span><span class="cx"> 
</span><span class="cx"> void HTMLFormControlElement::setAutocapitalize(const AtomicString&amp; value)
</span><span class="cx"> {
</span><del>-    setAttribute(autocapitalizeAttr, value);
</del><ins>+    setAttributeWithoutSynchronization(autocapitalizeAttr, value);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> #endif
</span><span class="lines">@@ -621,7 +621,7 @@
</span><span class="cx"> 
</span><span class="cx"> void HTMLFormControlElement::setAutocomplete(const String&amp; value)
</span><span class="cx"> {
</span><del>-    setAttribute(autocompleteAttr, value);
</del><ins>+    setAttributeWithoutSynchronization(autocompleteAttr, value);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> AutofillMantle HTMLFormControlElement::autofillMantle() const
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLFormElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLFormElement.cpp (203301 => 203302)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLFormElement.cpp        2016-07-15 21:34:16 UTC (rev 203301)
+++ trunk/Source/WebCore/html/HTMLFormElement.cpp        2016-07-15 21:35:40 UTC (rev 203302)
</span><span class="lines">@@ -406,7 +406,7 @@
</span><span class="cx"> 
</span><span class="cx"> void HTMLFormElement::setAutocorrect(bool autocorrect)
</span><span class="cx"> {
</span><del>-    setAttribute(autocorrectAttr, autocorrect ? AtomicString(&quot;on&quot;, AtomicString::ConstructFromLiteral) : AtomicString(&quot;off&quot;, AtomicString::ConstructFromLiteral));
</del><ins>+    setAttributeWithoutSynchronization(autocorrectAttr, autocorrect ? AtomicString(&quot;on&quot;, AtomicString::ConstructFromLiteral) : AtomicString(&quot;off&quot;, AtomicString::ConstructFromLiteral));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> WebAutocapitalizeType HTMLFormElement::autocapitalizeType() const
</span><span class="lines">@@ -421,7 +421,7 @@
</span><span class="cx"> 
</span><span class="cx"> void HTMLFormElement::setAutocapitalize(const AtomicString&amp; value)
</span><span class="cx"> {
</span><del>-    setAttribute(autocapitalizeAttr, value);
</del><ins>+    setAttributeWithoutSynchronization(autocapitalizeAttr, value);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> #endif
</span><span class="lines">@@ -687,12 +687,12 @@
</span><span class="cx"> 
</span><span class="cx"> void HTMLFormElement::setAction(const String &amp;value)
</span><span class="cx"> {
</span><del>-    setAttribute(actionAttr, value);
</del><ins>+    setAttributeWithoutSynchronization(actionAttr, value);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void HTMLFormElement::setEnctype(const String &amp;value)
</span><span class="cx"> {
</span><del>-    setAttribute(enctypeAttr, value);
</del><ins>+    setAttributeWithoutSynchronization(enctypeAttr, value);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> String HTMLFormElement::method() const
</span><span class="lines">@@ -702,12 +702,12 @@
</span><span class="cx"> 
</span><span class="cx"> void HTMLFormElement::setMethod(const String &amp;value)
</span><span class="cx"> {
</span><del>-    setAttribute(methodAttr, value);
</del><ins>+    setAttributeWithoutSynchronization(methodAttr, value);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> String HTMLFormElement::target() const
</span><span class="cx"> {
</span><del>-    return getAttribute(targetAttr);
</del><ins>+    return fastGetAttribute(targetAttr);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool HTMLFormElement::wasUserSubmitted() const
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLImageElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLImageElement.cpp (203301 => 203302)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLImageElement.cpp        2016-07-15 21:34:16 UTC (rev 203301)
+++ trunk/Source/WebCore/html/HTMLImageElement.cpp        2016-07-15 21:35:40 UTC (rev 203302)
</span><span class="lines">@@ -375,7 +375,7 @@
</span><span class="cx">     if (!renderer()) {
</span><span class="cx">         // check the attribute first for an explicit pixel value
</span><span class="cx">         bool ok;
</span><del>-        int width = getAttribute(widthAttr).toInt(&amp;ok);
</del><ins>+        int width = fastGetAttribute(widthAttr).toInt(&amp;ok);
</ins><span class="cx">         if (ok)
</span><span class="cx">             return width;
</span><span class="cx"> 
</span><span class="lines">@@ -401,7 +401,7 @@
</span><span class="cx">     if (!renderer()) {
</span><span class="cx">         // check the attribute first for an explicit pixel value
</span><span class="cx">         bool ok;
</span><del>-        int height = getAttribute(heightAttr).toInt(&amp;ok);
</del><ins>+        int height = fastGetAttribute(heightAttr).toInt(&amp;ok);
</ins><span class="cx">         if (ok)
</span><span class="cx">             return height;
</span><span class="cx"> 
</span><span class="lines">@@ -507,7 +507,7 @@
</span><span class="cx"> 
</span><span class="cx"> void HTMLImageElement::setSrc(const String&amp; value)
</span><span class="cx"> {
</span><del>-    setAttribute(srcAttr, value);
</del><ins>+    setAttributeWithoutSynchronization(srcAttr, value);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void HTMLImageElement::setWidth(int value)
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLInputElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLInputElement.cpp (203301 => 203302)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLInputElement.cpp        2016-07-15 21:34:16 UTC (rev 203301)
+++ trunk/Source/WebCore/html/HTMLInputElement.cpp        2016-07-15 21:35:40 UTC (rev 203302)
</span><span class="lines">@@ -441,7 +441,7 @@
</span><span class="cx"> 
</span><span class="cx"> void HTMLInputElement::setType(const AtomicString&amp; type)
</span><span class="cx"> {
</span><del>-    setAttribute(typeAttr, type);
</del><ins>+    setAttributeWithoutSynchronization(typeAttr, type);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void HTMLInputElement::updateType()
</span><span class="lines">@@ -456,7 +456,7 @@
</span><span class="cx">     if (hadType &amp;&amp; !newType-&gt;canChangeFromAnotherType()) {
</span><span class="cx">         // Set the attribute back to the old value.
</span><span class="cx">         // Useful in case we were called from inside parseAttribute.
</span><del>-        setAttribute(typeAttr, type());
</del><ins>+        setAttributeWithoutSynchronization(typeAttr, type());
</ins><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -478,7 +478,7 @@
</span><span class="cx">     bool willStoreValue = m_inputType-&gt;storesValueSeparateFromAttribute();
</span><span class="cx"> 
</span><span class="cx">     if (didStoreValue &amp;&amp; !willStoreValue &amp;&amp; hasDirtyValue()) {
</span><del>-        setAttribute(valueAttr, m_valueIfDirty);
</del><ins>+        setAttributeWithoutSynchronization(valueAttr, m_valueIfDirty);
</ins><span class="cx">         m_valueIfDirty = String();
</span><span class="cx">     }
</span><span class="cx">     if (!didStoreValue &amp;&amp; willStoreValue) {
</span><span class="lines">@@ -808,7 +808,7 @@
</span><span class="cx">     String alt = fastGetAttribute(altAttr);
</span><span class="cx">     // fall back to title attribute
</span><span class="cx">     if (alt.isNull())
</span><del>-        alt = getAttribute(titleAttr);
</del><ins>+        alt = fastGetAttribute(titleAttr);
</ins><span class="cx">     if (alt.isNull())
</span><span class="cx">         alt = fastGetAttribute(valueAttr);
</span><span class="cx">     if (alt.isEmpty())
</span><span class="lines">@@ -1207,7 +1207,7 @@
</span><span class="cx"> 
</span><span class="cx"> void HTMLInputElement::setDefaultValue(const String &amp;value)
</span><span class="cx"> {
</span><del>-    setAttribute(valueAttr, value);
</del><ins>+    setAttributeWithoutSynchronization(valueAttr, value);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> static inline bool isRFC2616TokenCharacter(UChar ch)
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLLinkElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLLinkElement.cpp (203301 => 203302)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLLinkElement.cpp        2016-07-15 21:34:16 UTC (rev 203301)
+++ trunk/Source/WebCore/html/HTMLLinkElement.cpp        2016-07-15 21:35:40 UTC (rev 203302)
</span><span class="lines">@@ -478,7 +478,7 @@
</span><span class="cx"> 
</span><span class="cx"> URL HTMLLinkElement::href() const
</span><span class="cx"> {
</span><del>-    return document().completeURL(getAttribute(hrefAttr));
</del><ins>+    return document().completeURL(fastGetAttribute(hrefAttr));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> const AtomicString&amp; HTMLLinkElement::rel() const
</span><span class="lines">@@ -488,12 +488,12 @@
</span><span class="cx"> 
</span><span class="cx"> String HTMLLinkElement::target() const
</span><span class="cx"> {
</span><del>-    return getAttribute(targetAttr);
</del><ins>+    return fastGetAttribute(targetAttr);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> const AtomicString&amp; HTMLLinkElement::type() const
</span><span class="cx"> {
</span><del>-    return getAttribute(typeAttr);
</del><ins>+    return fastGetAttribute(typeAttr);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> Optional&lt;LinkIconType&gt; HTMLLinkElement::iconType() const
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLMediaElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLMediaElement.cpp (203301 => 203302)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLMediaElement.cpp        2016-07-15 21:34:16 UTC (rev 203301)
+++ trunk/Source/WebCore/html/HTMLMediaElement.cpp        2016-07-15 21:35:40 UTC (rev 203302)
</span><span class="lines">@@ -996,7 +996,7 @@
</span><span class="cx"> 
</span><span class="cx"> void HTMLMediaElement::setSrc(const String&amp; url)
</span><span class="cx"> {
</span><del>-    setAttribute(srcAttr, url);
</del><ins>+    setAttributeWithoutSynchronization(srcAttr, url);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(MEDIA_STREAM)
</span><span class="lines">@@ -3047,7 +3047,7 @@
</span><span class="cx">         return;
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-    setAttribute(preloadAttr, preload);
</del><ins>+    setAttributeWithoutSynchronization(preloadAttr, preload);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void HTMLMediaElement::play(PlayPromise&amp;&amp; promise)
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLMeterElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLMeterElement.cpp (203301 => 203302)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLMeterElement.cpp        2016-07-15 21:34:16 UTC (rev 203301)
+++ trunk/Source/WebCore/html/HTMLMeterElement.cpp        2016-07-15 21:35:40 UTC (rev 203302)
</span><span class="lines">@@ -80,7 +80,7 @@
</span><span class="cx"> 
</span><span class="cx"> double HTMLMeterElement::min() const
</span><span class="cx"> {
</span><del>-    return parseToDoubleForNumberType(getAttribute(minAttr), 0);
</del><ins>+    return parseToDoubleForNumberType(fastGetAttribute(minAttr), 0);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void HTMLMeterElement::setMin(double min, ExceptionCode&amp; ec)
</span><span class="lines">@@ -89,12 +89,12 @@
</span><span class="cx">         ec = NOT_SUPPORTED_ERR;
</span><span class="cx">         return;
</span><span class="cx">     }
</span><del>-    setAttribute(minAttr, AtomicString::number(min));
</del><ins>+    setAttributeWithoutSynchronization(minAttr, AtomicString::number(min));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> double HTMLMeterElement::max() const
</span><span class="cx"> {
</span><del>-    return std::max(parseToDoubleForNumberType(getAttribute(maxAttr), std::max(1.0, min())), min());
</del><ins>+    return std::max(parseToDoubleForNumberType(fastGetAttribute(maxAttr), std::max(1.0, min())), min());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void HTMLMeterElement::setMax(double max, ExceptionCode&amp; ec)
</span><span class="lines">@@ -103,12 +103,12 @@
</span><span class="cx">         ec = NOT_SUPPORTED_ERR;
</span><span class="cx">         return;
</span><span class="cx">     }
</span><del>-    setAttribute(maxAttr, AtomicString::number(max));
</del><ins>+    setAttributeWithoutSynchronization(maxAttr, AtomicString::number(max));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> double HTMLMeterElement::value() const
</span><span class="cx"> {
</span><del>-    double value = parseToDoubleForNumberType(getAttribute(valueAttr), 0);
</del><ins>+    double value = parseToDoubleForNumberType(fastGetAttribute(valueAttr), 0);
</ins><span class="cx">     return std::min(std::max(value, min()), max());
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -118,12 +118,12 @@
</span><span class="cx">         ec = NOT_SUPPORTED_ERR;
</span><span class="cx">         return;
</span><span class="cx">     }
</span><del>-    setAttribute(valueAttr, AtomicString::number(value));
</del><ins>+    setAttributeWithoutSynchronization(valueAttr, AtomicString::number(value));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> double HTMLMeterElement::low() const
</span><span class="cx"> {
</span><del>-    double low = parseToDoubleForNumberType(getAttribute(lowAttr), min());
</del><ins>+    double low = parseToDoubleForNumberType(fastGetAttribute(lowAttr), min());
</ins><span class="cx">     return std::min(std::max(low, min()), max());
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -133,12 +133,12 @@
</span><span class="cx">         ec = NOT_SUPPORTED_ERR;
</span><span class="cx">         return;
</span><span class="cx">     }
</span><del>-    setAttribute(lowAttr, AtomicString::number(low));
</del><ins>+    setAttributeWithoutSynchronization(lowAttr, AtomicString::number(low));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> double HTMLMeterElement::high() const
</span><span class="cx"> {
</span><del>-    double high = parseToDoubleForNumberType(getAttribute(highAttr), max());
</del><ins>+    double high = parseToDoubleForNumberType(fastGetAttribute(highAttr), max());
</ins><span class="cx">     return std::min(std::max(high, low()), max());
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -148,12 +148,12 @@
</span><span class="cx">         ec = NOT_SUPPORTED_ERR;
</span><span class="cx">         return;
</span><span class="cx">     }
</span><del>-    setAttribute(highAttr, AtomicString::number(high));
</del><ins>+    setAttributeWithoutSynchronization(highAttr, AtomicString::number(high));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> double HTMLMeterElement::optimum() const
</span><span class="cx"> {
</span><del>-    double optimum = parseToDoubleForNumberType(getAttribute(optimumAttr), (max() + min()) / 2);
</del><ins>+    double optimum = parseToDoubleForNumberType(fastGetAttribute(optimumAttr), (max() + min()) / 2);
</ins><span class="cx">     return std::min(std::max(optimum, min()), max());
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -163,7 +163,7 @@
</span><span class="cx">         ec = NOT_SUPPORTED_ERR;
</span><span class="cx">         return;
</span><span class="cx">     }
</span><del>-    setAttribute(optimumAttr, AtomicString::number(optimum));
</del><ins>+    setAttributeWithoutSynchronization(optimumAttr, AtomicString::number(optimum));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> HTMLMeterElement::GaugeRegion HTMLMeterElement::gaugeRegion() const
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLObjectElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLObjectElement.cpp (203301 => 203302)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLObjectElement.cpp        2016-07-15 21:34:16 UTC (rev 203301)
+++ trunk/Source/WebCore/html/HTMLObjectElement.cpp        2016-07-15 21:35:40 UTC (rev 203302)
</span><span class="lines">@@ -470,12 +470,12 @@
</span><span class="cx"> 
</span><span class="cx"> bool HTMLObjectElement::containsJavaApplet() const
</span><span class="cx"> {
</span><del>-    if (MIMETypeRegistry::isJavaAppletMIMEType(getAttribute(typeAttr)))
</del><ins>+    if (MIMETypeRegistry::isJavaAppletMIMEType(fastGetAttribute(typeAttr)))
</ins><span class="cx">         return true;
</span><span class="cx"> 
</span><span class="cx">     for (auto&amp; child : childrenOfType&lt;Element&gt;(*this)) {
</span><span class="cx">         if (child.hasTagName(paramTag) &amp;&amp; equalLettersIgnoringASCIICase(child.getNameAttribute(), &quot;type&quot;)
</span><del>-            &amp;&amp; MIMETypeRegistry::isJavaAppletMIMEType(child.getAttribute(valueAttr).string()))
</del><ins>+            &amp;&amp; MIMETypeRegistry::isJavaAppletMIMEType(child.fastGetAttribute(valueAttr).string()))
</ins><span class="cx">             return true;
</span><span class="cx">         if (child.hasTagName(objectTag) &amp;&amp; downcast&lt;HTMLObjectElement&gt;(child).containsJavaApplet())
</span><span class="cx">             return true;
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLOptionElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLOptionElement.cpp (203301 => 203302)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLOptionElement.cpp        2016-07-15 21:34:16 UTC (rev 203301)
+++ trunk/Source/WebCore/html/HTMLOptionElement.cpp        2016-07-15 21:35:40 UTC (rev 203302)
</span><span class="lines">@@ -81,7 +81,7 @@
</span><span class="cx">     if (!value.isNull())
</span><span class="cx">         element-&gt;setValue(value);
</span><span class="cx">     if (defaultSelected)
</span><del>-        element-&gt;setAttribute(selectedAttr, emptyAtom);
</del><ins>+        element-&gt;setAttributeWithoutSynchronization(selectedAttr, emptyAtom);
</ins><span class="cx">     element-&gt;setSelected(selected);
</span><span class="cx"> 
</span><span class="cx">     return WTFMove(element);
</span><span class="lines">@@ -202,7 +202,7 @@
</span><span class="cx"> 
</span><span class="cx"> void HTMLOptionElement::setValue(const String&amp; value)
</span><span class="cx"> {
</span><del>-    setAttribute(valueAttr, value);
</del><ins>+    setAttributeWithoutSynchronization(valueAttr, value);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool HTMLOptionElement::selected()
</span><span class="lines">@@ -280,7 +280,7 @@
</span><span class="cx"> 
</span><span class="cx"> void HTMLOptionElement::setLabel(const String&amp; label)
</span><span class="cx"> {
</span><del>-    setAttribute(labelAttr, label);
</del><ins>+    setAttributeWithoutSynchronization(labelAttr, label);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void HTMLOptionElement::willResetComputedStyle()
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLProgressElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLProgressElement.cpp (203301 => 203302)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLProgressElement.cpp        2016-07-15 21:34:16 UTC (rev 203301)
+++ trunk/Source/WebCore/html/HTMLProgressElement.cpp        2016-07-15 21:35:40 UTC (rev 203302)
</span><span class="lines">@@ -104,7 +104,7 @@
</span><span class="cx">         ec = NOT_SUPPORTED_ERR;
</span><span class="cx">         return;
</span><span class="cx">     }
</span><del>-    setAttribute(valueAttr, AtomicString::number(value &gt;= 0 ? value : 0));
</del><ins>+    setAttributeWithoutSynchronization(valueAttr, AtomicString::number(value &gt;= 0 ? value : 0));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> double HTMLProgressElement::max() const
</span><span class="lines">@@ -119,7 +119,7 @@
</span><span class="cx">         ec = NOT_SUPPORTED_ERR;
</span><span class="cx">         return;
</span><span class="cx">     }
</span><del>-    setAttribute(maxAttr, AtomicString::number(max &gt; 0 ? max : 1));
</del><ins>+    setAttributeWithoutSynchronization(maxAttr, AtomicString::number(max &gt; 0 ? max : 1));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> double HTMLProgressElement::position() const
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLScriptElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLScriptElement.cpp (203301 => 203302)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLScriptElement.cpp        2016-07-15 21:34:16 UTC (rev 203301)
+++ trunk/Source/WebCore/html/HTMLScriptElement.cpp        2016-07-15 21:35:40 UTC (rev 203302)
</span><span class="lines">@@ -139,7 +139,7 @@
</span><span class="cx"> 
</span><span class="cx"> String HTMLScriptElement::typeAttributeValue() const
</span><span class="cx"> {
</span><del>-    return getAttribute(typeAttr).string();
</del><ins>+    return fastGetAttribute(typeAttr).string();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> String HTMLScriptElement::languageAttributeValue() const
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLSelectElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLSelectElement.cpp (203301 => 203302)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLSelectElement.cpp        2016-07-15 21:34:16 UTC (rev 203301)
+++ trunk/Source/WebCore/html/HTMLSelectElement.cpp        2016-07-15 21:35:40 UTC (rev 203302)
</span><span class="lines">@@ -405,7 +405,7 @@
</span><span class="cx"> {
</span><span class="cx">     bool oldMultiple = this-&gt;multiple();
</span><span class="cx">     int oldSelectedIndex = selectedIndex();
</span><del>-    setAttribute(multipleAttr, multiple ? &quot;&quot; : 0);
</del><ins>+    setAttributeWithoutSynchronization(multipleAttr, multiple ? emptyAtom : nullAtom);
</ins><span class="cx"> 
</span><span class="cx">     // Restore selectedIndex after changing the multiple flag to preserve
</span><span class="cx">     // selection as single-line and multi-line has different defaults.
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLSourceElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLSourceElement.cpp (203301 => 203302)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLSourceElement.cpp        2016-07-15 21:34:16 UTC (rev 203301)
+++ trunk/Source/WebCore/html/HTMLSourceElement.cpp        2016-07-15 21:35:40 UTC (rev 203302)
</span><span class="lines">@@ -91,27 +91,27 @@
</span><span class="cx"> 
</span><span class="cx"> void HTMLSourceElement::setSrc(const String&amp; url)
</span><span class="cx"> {
</span><del>-    setAttribute(srcAttr, url);
</del><ins>+    setAttributeWithoutSynchronization(srcAttr, url);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> String HTMLSourceElement::media() const
</span><span class="cx"> {
</span><del>-    return getAttribute(mediaAttr);
</del><ins>+    return fastGetAttribute(mediaAttr);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void HTMLSourceElement::setMedia(const String&amp; media)
</span><span class="cx"> {
</span><del>-    setAttribute(mediaAttr, media);
</del><ins>+    setAttributeWithoutSynchronization(mediaAttr, media);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> String HTMLSourceElement::type() const
</span><span class="cx"> {
</span><del>-    return getAttribute(typeAttr);
</del><ins>+    return fastGetAttribute(typeAttr);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void HTMLSourceElement::setType(const String&amp; type)
</span><span class="cx"> {
</span><del>-    setAttribute(typeAttr, type);
</del><ins>+    setAttributeWithoutSynchronization(typeAttr, type);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void HTMLSourceElement::scheduleErrorEvent()
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLTableSectionElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLTableSectionElement.cpp (203301 => 203302)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLTableSectionElement.cpp        2016-07-15 21:34:16 UTC (rev 203301)
+++ trunk/Source/WebCore/html/HTMLTableSectionElement.cpp        2016-07-15 21:35:40 UTC (rev 203302)
</span><span class="lines">@@ -117,7 +117,7 @@
</span><span class="cx"> 
</span><span class="cx"> void HTMLTableSectionElement::setAlign(const AtomicString&amp; value)
</span><span class="cx"> {
</span><del>-    setAttribute(alignAttr, value);
</del><ins>+    setAttributeWithoutSynchronization(alignAttr, value);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> const AtomicString&amp; HTMLTableSectionElement::ch() const
</span><span class="lines">@@ -127,17 +127,17 @@
</span><span class="cx"> 
</span><span class="cx"> void HTMLTableSectionElement::setCh(const AtomicString&amp; value)
</span><span class="cx"> {
</span><del>-    setAttribute(charAttr, value);
</del><ins>+    setAttributeWithoutSynchronization(charAttr, value);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> const AtomicString&amp; HTMLTableSectionElement::chOff() const
</span><span class="cx"> {
</span><del>-    return getAttribute(charoffAttr);
</del><ins>+    return fastGetAttribute(charoffAttr);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void HTMLTableSectionElement::setChOff(const AtomicString&amp; value)
</span><span class="cx"> {
</span><del>-    setAttribute(charoffAttr, value);
</del><ins>+    setAttributeWithoutSynchronization(charoffAttr, value);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> const AtomicString&amp; HTMLTableSectionElement::vAlign() const
</span><span class="lines">@@ -147,7 +147,7 @@
</span><span class="cx"> 
</span><span class="cx"> void HTMLTableSectionElement::setVAlign(const AtomicString&amp; value)
</span><span class="cx"> {
</span><del>-    setAttribute(valignAttr, value);
</del><ins>+    setAttributeWithoutSynchronization(valignAttr, value);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> Ref&lt;HTMLCollection&gt; HTMLTableSectionElement::rows()
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLTextFormControlElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLTextFormControlElement.cpp (203301 => 203302)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLTextFormControlElement.cpp        2016-07-15 21:34:16 UTC (rev 203301)
+++ trunk/Source/WebCore/html/HTMLTextFormControlElement.cpp        2016-07-15 21:35:40 UTC (rev 203302)
</span><span class="lines">@@ -506,7 +506,7 @@
</span><span class="cx"> void HTMLTextFormControlElement::updateInnerTextElementEditability()
</span><span class="cx"> {
</span><span class="cx">     if (TextControlInnerTextElement* innerText = innerTextElement())
</span><del>-        innerText-&gt;setAttribute(contenteditableAttr, isDisabledOrReadOnly() ? &quot;false&quot; : &quot;plaintext-only&quot;);
</del><ins>+        innerText-&gt;setAttributeWithoutSynchronization(contenteditableAttr, isDisabledOrReadOnly() ? &quot;false&quot; : &quot;plaintext-only&quot;);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool HTMLTextFormControlElement::lastChangeWasUserEdit() const
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLVideoElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLVideoElement.cpp (203301 => 203302)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLVideoElement.cpp        2016-07-15 21:34:16 UTC (rev 203301)
+++ trunk/Source/WebCore/html/HTMLVideoElement.cpp        2016-07-15 21:35:40 UTC (rev 203302)
</span><span class="lines">@@ -213,7 +213,7 @@
</span><span class="cx"> 
</span><span class="cx"> const AtomicString&amp; HTMLVideoElement::imageSourceURL() const
</span><span class="cx"> {
</span><del>-    const AtomicString&amp; url = getAttribute(posterAttr);
</del><ins>+    const AtomicString&amp; url = fastGetAttribute(posterAttr);
</ins><span class="cx">     if (!stripLeadingAndTrailingHTMLSpaces(url).isEmpty())
</span><span class="cx">         return url;
</span><span class="cx">     return m_defaultPosterURL;
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHiddenInputTypecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HiddenInputType.cpp (203301 => 203302)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HiddenInputType.cpp        2016-07-15 21:34:16 UTC (rev 203301)
+++ trunk/Source/WebCore/html/HiddenInputType.cpp        2016-07-15 21:35:40 UTC (rev 203302)
</span><span class="lines">@@ -59,7 +59,7 @@
</span><span class="cx"> 
</span><span class="cx"> void HiddenInputType::restoreFormControlState(const FormControlState&amp; state)
</span><span class="cx"> {
</span><del>-    element().setAttribute(valueAttr, state[0]);
</del><ins>+    element().setAttributeWithoutSynchronization(valueAttr, state[0]);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool HiddenInputType::supportsValidation() const
</span><span class="lines">@@ -89,7 +89,7 @@
</span><span class="cx"> 
</span><span class="cx"> void HiddenInputType::setValue(const String&amp; sanitizedValue, bool, TextFieldEventBehavior)
</span><span class="cx"> {
</span><del>-    element().setAttribute(valueAttr, sanitizedValue);
</del><ins>+    element().setAttributeWithoutSynchronization(valueAttr, sanitizedValue);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool HiddenInputType::isHiddenType() const
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlMediaDocumentcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/MediaDocument.cpp (203301 => 203302)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/MediaDocument.cpp        2016-07-15 21:34:16 UTC (rev 203301)
+++ trunk/Source/WebCore/html/MediaDocument.cpp        2016-07-15 21:35:40 UTC (rev 203302)
</span><span class="lines">@@ -92,8 +92,8 @@
</span><span class="cx">     rootElement-&gt;appendChild(headElement, IGNORE_EXCEPTION);
</span><span class="cx"> 
</span><span class="cx">     auto metaElement = document()-&gt;createElement(metaTag, false);
</span><del>-    metaElement-&gt;setAttribute(nameAttr, &quot;viewport&quot;);
-    metaElement-&gt;setAttribute(contentAttr, &quot;width=device-width,initial-scale=1,user-scalable=no&quot;);
</del><ins>+    metaElement-&gt;setAttributeWithoutSynchronization(nameAttr, AtomicString(&quot;viewport&quot;, AtomicString::ConstructFromLiteral));
+    metaElement-&gt;setAttributeWithoutSynchronization(contentAttr, AtomicString(&quot;width=device-width,initial-scale=1,user-scalable=no&quot;, AtomicString::ConstructFromLiteral));
</ins><span class="cx">     headElement-&gt;appendChild(metaElement, IGNORE_EXCEPTION);
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="lines">@@ -103,10 +103,10 @@
</span><span class="cx">     auto mediaElement = document()-&gt;createElement(videoTag, false);
</span><span class="cx"> 
</span><span class="cx">     m_mediaElement = downcast&lt;HTMLVideoElement&gt;(mediaElement.ptr());
</span><del>-    m_mediaElement-&gt;setAttribute(controlsAttr, emptyAtom);
-    m_mediaElement-&gt;setAttribute(autoplayAttr, emptyAtom);
</del><ins>+    m_mediaElement-&gt;setAttributeWithoutSynchronization(controlsAttr, emptyAtom);
+    m_mediaElement-&gt;setAttributeWithoutSynchronization(autoplayAttr, emptyAtom);
</ins><span class="cx"> 
</span><del>-    m_mediaElement-&gt;setAttribute(nameAttr, &quot;media&quot;);
</del><ins>+    m_mediaElement-&gt;setAttributeWithoutSynchronization(nameAttr, AtomicString(&quot;media&quot;, AtomicString::ConstructFromLiteral));
</ins><span class="cx"> 
</span><span class="cx">     StringBuilder elementStyle;
</span><span class="cx">     elementStyle.appendLiteral(&quot;max-width: 100%; max-height: 100%;&quot;);
</span><span class="lines">@@ -237,22 +237,22 @@
</span><span class="cx">         return;
</span><span class="cx"> 
</span><span class="cx">     // Set body margin width and height to 0 as that is what a PluginDocument uses.
</span><del>-    htmlBody-&gt;setAttribute(marginwidthAttr, &quot;0&quot;);
-    htmlBody-&gt;setAttribute(marginheightAttr, &quot;0&quot;);
</del><ins>+    htmlBody-&gt;setAttributeWithoutSynchronization(marginwidthAttr, AtomicString(&quot;0&quot;, AtomicString::ConstructFromLiteral));
+    htmlBody-&gt;setAttributeWithoutSynchronization(marginheightAttr, AtomicString(&quot;0&quot;, AtomicString::ConstructFromLiteral));
</ins><span class="cx"> 
</span><span class="cx">     if (HTMLVideoElement* videoElement = descendantVideoElement(*htmlBody)) {
</span><span class="cx">         RefPtr&lt;Element&gt; element = Document::createElement(embedTag, false);
</span><span class="cx">         HTMLEmbedElement&amp; embedElement = downcast&lt;HTMLEmbedElement&gt;(*element);
</span><span class="cx"> 
</span><del>-        embedElement.setAttribute(widthAttr, &quot;100%&quot;);
-        embedElement.setAttribute(heightAttr, &quot;100%&quot;);
-        embedElement.setAttribute(nameAttr, &quot;plugin&quot;);
-        embedElement.setAttribute(srcAttr, url().string());
</del><ins>+        embedElement.setAttributeWithoutSynchronization(widthAttr, AtomicString(&quot;100%&quot;, AtomicString::ConstructFromLiteral));
+        embedElement.setAttributeWithoutSynchronization(heightAttr, AtomicString(&quot;100%&quot;, AtomicString::ConstructFromLiteral));
+        embedElement.setAttributeWithoutSynchronization(nameAttr, AtomicString(&quot;plugin&quot;, AtomicString::ConstructFromLiteral));
+        embedElement.setAttributeWithoutSynchronization(srcAttr, url().string());
</ins><span class="cx"> 
</span><span class="cx">         DocumentLoader* documentLoader = loader();
</span><span class="cx">         ASSERT(documentLoader);
</span><span class="cx">         if (documentLoader)
</span><del>-            embedElement.setAttribute(typeAttr, documentLoader-&gt;writer().mimeType());
</del><ins>+            embedElement.setAttributeWithoutSynchronization(typeAttr, documentLoader-&gt;writer().mimeType());
</ins><span class="cx"> 
</span><span class="cx">         videoElement-&gt;parentNode()-&gt;replaceChild(embedElement, *videoElement, IGNORE_EXCEPTION);
</span><span class="cx">     }
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlPluginDocumentcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/PluginDocument.cpp (203301 => 203302)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/PluginDocument.cpp        2016-07-15 21:34:16 UTC (rev 203301)
+++ trunk/Source/WebCore/html/PluginDocument.cpp        2016-07-15 21:35:40 UTC (rev 203302)
</span><span class="lines">@@ -80,8 +80,8 @@
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx">     auto body = document()-&gt;createElement(bodyTag, false);
</span><del>-    body-&gt;setAttribute(marginwidthAttr, AtomicString(&quot;0&quot;, AtomicString::ConstructFromLiteral));
-    body-&gt;setAttribute(marginheightAttr, AtomicString(&quot;0&quot;, AtomicString::ConstructFromLiteral));
</del><ins>+    body-&gt;setAttributeWithoutSynchronization(marginwidthAttr, AtomicString(&quot;0&quot;, AtomicString::ConstructFromLiteral));
+    body-&gt;setAttributeWithoutSynchronization(marginheightAttr, AtomicString(&quot;0&quot;, AtomicString::ConstructFromLiteral));
</ins><span class="cx"> #if PLATFORM(IOS)
</span><span class="cx">     body-&gt;setAttribute(styleAttr, AtomicString(&quot;background-color: rgb(217,224,233)&quot;, AtomicString::ConstructFromLiteral));
</span><span class="cx"> #else
</span><span class="lines">@@ -93,16 +93,16 @@
</span><span class="cx">     auto embedElement = document()-&gt;createElement(embedTag, false);
</span><span class="cx">         
</span><span class="cx">     m_embedElement = downcast&lt;HTMLEmbedElement&gt;(embedElement.ptr());
</span><del>-    m_embedElement-&gt;setAttribute(widthAttr, &quot;100%&quot;);
-    m_embedElement-&gt;setAttribute(heightAttr, &quot;100%&quot;);
</del><ins>+    m_embedElement-&gt;setAttributeWithoutSynchronization(widthAttr, AtomicString(&quot;100%&quot;, AtomicString::ConstructFromLiteral));
+    m_embedElement-&gt;setAttributeWithoutSynchronization(heightAttr, AtomicString(&quot;100%&quot;, AtomicString::ConstructFromLiteral));
</ins><span class="cx">     
</span><del>-    m_embedElement-&gt;setAttribute(nameAttr, &quot;plugin&quot;);
-    m_embedElement-&gt;setAttribute(srcAttr, document()-&gt;url().string());
</del><ins>+    m_embedElement-&gt;setAttributeWithoutSynchronization(nameAttr, AtomicString(&quot;plugin&quot;, AtomicString::ConstructFromLiteral));
+    m_embedElement-&gt;setAttributeWithoutSynchronization(srcAttr, document()-&gt;url().string());
</ins><span class="cx">     
</span><span class="cx">     DocumentLoader* loader = document()-&gt;loader();
</span><span class="cx">     ASSERT(loader);
</span><span class="cx">     if (loader)
</span><del>-        m_embedElement-&gt;setAttribute(typeAttr, loader-&gt;writer().mimeType());
</del><ins>+        m_embedElement-&gt;setAttributeWithoutSynchronization(typeAttr, loader-&gt;writer().mimeType());
</ins><span class="cx"> 
</span><span class="cx">     downcast&lt;PluginDocument&gt;(*document()).setPluginElement(m_embedElement);
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlTextFieldInputTypecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/TextFieldInputType.cpp (203301 => 203302)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/TextFieldInputType.cpp        2016-07-15 21:34:16 UTC (rev 203301)
+++ trunk/Source/WebCore/html/TextFieldInputType.cpp        2016-07-15 21:35:40 UTC (rev 203302)
</span><span class="lines">@@ -664,8 +664,8 @@
</span><span class="cx"> 
</span><span class="cx">     m_autoFillButton = AutoFillButtonElement::create(element().document(), *this);
</span><span class="cx">     m_autoFillButton-&gt;setPseudo(autoFillButtonTypeToAutoFillButtonPseudoClassName(autoFillButtonType));
</span><del>-    m_autoFillButton-&gt;setAttribute(roleAttr, &quot;button&quot;);
-    m_autoFillButton-&gt;setAttribute(aria_labelAttr, autoFillButtonTypeToAccessibilityLabel(autoFillButtonType));
</del><ins>+    m_autoFillButton-&gt;setAttributeWithoutSynchronization(roleAttr, AtomicString(&quot;button&quot;, AtomicString::ConstructFromLiteral));
+    m_autoFillButton-&gt;setAttributeWithoutSynchronization(aria_labelAttr, autoFillButtonTypeToAccessibilityLabel(autoFillButtonType));
</ins><span class="cx">     m_container-&gt;appendChild(*m_autoFillButton, IGNORE_EXCEPTION);
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -682,7 +682,7 @@
</span><span class="cx">         bool shouldUpdateAutoFillButtonType = isAutoFillButtonTypeChanged(attribute, element().autoFillButtonType());
</span><span class="cx">         if (shouldUpdateAutoFillButtonType) {
</span><span class="cx">             m_autoFillButton-&gt;setPseudo(autoFillButtonTypeToAutoFillButtonPseudoClassName(element().autoFillButtonType()));
</span><del>-            m_autoFillButton-&gt;setAttribute(aria_labelAttr, autoFillButtonTypeToAccessibilityLabel(element().autoFillButtonType()));
</del><ins>+            m_autoFillButton-&gt;setAttributeWithoutSynchronization(aria_labelAttr, autoFillButtonTypeToAccessibilityLabel(element().autoFillButtonType()));
</ins><span class="cx">         }
</span><span class="cx">         m_autoFillButton-&gt;setInlineStyleProperty(CSSPropertyDisplay, CSSValueBlock, true);
</span><span class="cx">         return;
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlparserHTMLTreeBuildercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/parser/HTMLTreeBuilder.cpp (203301 => 203302)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/parser/HTMLTreeBuilder.cpp        2016-07-15 21:34:16 UTC (rev 203301)
+++ trunk/Source/WebCore/html/parser/HTMLTreeBuilder.cpp        2016-07-15 21:35:40 UTC (rev 203302)
</span><span class="lines">@@ -470,7 +470,7 @@
</span><span class="cx">     notImplemented(); // Acknowledge self-closing flag
</span><span class="cx">     processFakeStartTag(formTag);
</span><span class="cx">     if (Attribute* actionAttribute = findAttribute(token.attributes(), actionAttr))
</span><del>-        m_tree.form()-&gt;setAttribute(actionAttr, actionAttribute-&gt;value());
</del><ins>+        m_tree.form()-&gt;setAttributeWithoutSynchronization(actionAttr, actionAttribute-&gt;value());
</ins><span class="cx">     processFakeStartTag(hrTag);
</span><span class="cx">     processFakeStartTag(labelTag);
</span><span class="cx">     if (Attribute* promptAttribute = findAttribute(token.attributes(), promptAttr))
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlshadowMediaControlElementscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/shadow/MediaControlElements.cpp (203301 => 203302)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/shadow/MediaControlElements.cpp        2016-07-15 21:34:16 UTC (rev 203301)
+++ trunk/Source/WebCore/html/shadow/MediaControlElements.cpp        2016-07-15 21:35:40 UTC (rev 203302)
</span><span class="lines">@@ -656,7 +656,7 @@
</span><span class="cx"> Ref&lt;MediaControlClosedCaptionsContainerElement&gt; MediaControlClosedCaptionsContainerElement::create(Document&amp; document)
</span><span class="cx"> {
</span><span class="cx">     Ref&lt;MediaControlClosedCaptionsContainerElement&gt; element = adoptRef(*new MediaControlClosedCaptionsContainerElement(document));
</span><del>-    element-&gt;setAttribute(dirAttr, &quot;auto&quot;);
</del><ins>+    element-&gt;setAttributeWithoutSynchronization(dirAttr, AtomicString(&quot;auto&quot;, AtomicString::ConstructFromLiteral));
</ins><span class="cx">     element-&gt;hide();
</span><span class="cx">     return element;
</span><span class="cx"> }
</span><span class="lines">@@ -838,7 +838,7 @@
</span><span class="cx">     Ref&lt;MediaControlTimelineElement&gt; timeline = adoptRef(*new MediaControlTimelineElement(document, controls));
</span><span class="cx">     timeline-&gt;ensureUserAgentShadowRoot();
</span><span class="cx">     timeline-&gt;setType(&quot;range&quot;);
</span><del>-    timeline-&gt;setAttribute(precisionAttr, &quot;float&quot;);
</del><ins>+    timeline-&gt;setAttributeWithoutSynchronization(precisionAttr, AtomicString(&quot;float&quot;, AtomicString::ConstructFromLiteral));
</ins><span class="cx">     return timeline;
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -904,8 +904,8 @@
</span><span class="cx">     Ref&lt;MediaControlPanelVolumeSliderElement&gt; slider = adoptRef(*new MediaControlPanelVolumeSliderElement(document));
</span><span class="cx">     slider-&gt;ensureUserAgentShadowRoot();
</span><span class="cx">     slider-&gt;setType(&quot;range&quot;);
</span><del>-    slider-&gt;setAttribute(precisionAttr, &quot;float&quot;);
-    slider-&gt;setAttribute(maxAttr, &quot;1&quot;);
</del><ins>+    slider-&gt;setAttributeWithoutSynchronization(precisionAttr, AtomicString(&quot;float&quot;, AtomicString::ConstructFromLiteral));
+    slider-&gt;setAttributeWithoutSynchronization(maxAttr, AtomicString(&quot;1&quot;, AtomicString::ConstructFromLiteral));
</ins><span class="cx">     return slider;
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -922,8 +922,8 @@
</span><span class="cx">     Ref&lt;MediaControlFullscreenVolumeSliderElement&gt; slider = adoptRef(*new MediaControlFullscreenVolumeSliderElement(document));
</span><span class="cx">     slider-&gt;ensureUserAgentShadowRoot();
</span><span class="cx">     slider-&gt;setType(&quot;range&quot;);
</span><del>-    slider-&gt;setAttribute(precisionAttr, &quot;float&quot;);
-    slider-&gt;setAttribute(maxAttr, &quot;1&quot;);
</del><ins>+    slider-&gt;setAttributeWithoutSynchronization(precisionAttr, AtomicString(&quot;float&quot;, AtomicString::ConstructFromLiteral));
+    slider-&gt;setAttributeWithoutSynchronization(maxAttr, AtomicString(&quot;1&quot;, AtomicString::ConstructFromLiteral));
</ins><span class="cx">     return slider;
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlshadowTextControlInnerElementscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/shadow/TextControlInnerElements.cpp (203301 => 203302)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/shadow/TextControlInnerElements.cpp        2016-07-15 21:34:16 UTC (rev 203301)
+++ trunk/Source/WebCore/html/shadow/TextControlInnerElements.cpp        2016-07-15 21:35:40 UTC (rev 203302)
</span><span class="lines">@@ -212,9 +212,9 @@
</span><span class="cx"> {
</span><span class="cx">     setPseudo(AtomicString(&quot;-webkit-search-cancel-button&quot;, AtomicString::ConstructFromLiteral));
</span><span class="cx"> #if !PLATFORM(IOS)
</span><del>-    setAttribute(aria_labelAttr, AXSearchFieldCancelButtonText());
</del><ins>+    setAttributeWithoutSynchronization(aria_labelAttr, AXSearchFieldCancelButtonText());
</ins><span class="cx"> #endif
</span><del>-    setAttribute(roleAttr, AtomicString(&quot;button&quot;, AtomicString::ConstructFromLiteral));
</del><ins>+    setAttributeWithoutSynchronization(roleAttr, AtomicString(&quot;button&quot;, AtomicString::ConstructFromLiteral));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> Ref&lt;SearchFieldCancelButtonElement&gt; SearchFieldCancelButtonElement::create(Document&amp; document)
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlshadowmacImageControlsButtonElementMaccpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/shadow/mac/ImageControlsButtonElementMac.cpp (203301 => 203302)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/shadow/mac/ImageControlsButtonElementMac.cpp        2016-07-15 21:34:16 UTC (rev 203301)
+++ trunk/Source/WebCore/html/shadow/mac/ImageControlsButtonElementMac.cpp        2016-07-15 21:35:40 UTC (rev 203302)
</span><span class="lines">@@ -96,7 +96,7 @@
</span><span class="cx">         return nullptr;
</span><span class="cx"> 
</span><span class="cx">     auto button = adoptRef(*new ImageControlsButtonElementMac(document));
</span><del>-    button-&gt;setAttribute(HTMLNames::classAttr, &quot;x-webkit-image-controls-button&quot;);
</del><ins>+    button-&gt;setAttributeWithoutSynchronization(HTMLNames::classAttr, AtomicString(&quot;x-webkit-image-controls-button&quot;, AtomicString::ConstructFromLiteral));
</ins><span class="cx"> 
</span><span class="cx">     IntSize positionOffset = document.page()-&gt;theme().imageControlsButtonPositionOffset();
</span><span class="cx">     button-&gt;setInlineStyleProperty(CSSPropertyTop, positionOffset.height(), CSSPrimitiveValue::CSS_PX);
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlshadowmacImageControlsRootElementMaccpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/shadow/mac/ImageControlsRootElementMac.cpp (203301 => 203302)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/shadow/mac/ImageControlsRootElementMac.cpp        2016-07-15 21:34:16 UTC (rev 203301)
+++ trunk/Source/WebCore/html/shadow/mac/ImageControlsRootElementMac.cpp        2016-07-15 21:35:40 UTC (rev 203302)
</span><span class="lines">@@ -86,7 +86,7 @@
</span><span class="cx">         return nullptr;
</span><span class="cx"> 
</span><span class="cx">     Ref&lt;ImageControlsRootElementMac&gt; controls = adoptRef(*new ImageControlsRootElementMac(document));
</span><del>-    controls-&gt;setAttribute(HTMLNames::classAttr, &quot;x-webkit-image-controls&quot;);
</del><ins>+    controls-&gt;setAttributeWithoutSynchronization(HTMLNames::classAttr, AtomicString(&quot;x-webkit-image-controls&quot;, AtomicString::ConstructFromLiteral));
</ins><span class="cx"> 
</span><span class="cx">     if (RefPtr&lt;ImageControlsButtonElementMac&gt; button = ImageControlsButtonElementMac::tryCreate(document))
</span><span class="cx">         controls-&gt;appendChild(*button);
</span></span></pre></div>
<a id="trunkSourceWebCorehtmltrackWebVTTElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/track/WebVTTElement.cpp (203301 => 203302)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/track/WebVTTElement.cpp        2016-07-15 21:34:16 UTC (rev 203301)
+++ trunk/Source/WebCore/html/track/WebVTTElement.cpp        2016-07-15 21:35:40 UTC (rev 203302)
</span><span class="lines">@@ -96,8 +96,8 @@
</span><span class="cx">     case WebVTTNodeTypeLanguage:
</span><span class="cx">     case WebVTTNodeTypeVoice:
</span><span class="cx">         htmlElement = HTMLElementFactory::createElement(HTMLNames::spanTag, document);
</span><del>-        htmlElement-&gt;setAttribute(HTMLNames::titleAttr, getAttribute(voiceAttributeName()));
-        htmlElement-&gt;setAttribute(HTMLNames::langAttr, getAttribute(langAttributeName()));
</del><ins>+        htmlElement-&gt;setAttributeWithoutSynchronization(HTMLNames::titleAttr, fastGetAttribute(voiceAttributeName()));
+        htmlElement-&gt;setAttributeWithoutSynchronization(HTMLNames::langAttr, fastGetAttribute(langAttributeName()));
</ins><span class="cx">         break;
</span><span class="cx">     case WebVTTNodeTypeItalic:
</span><span class="cx">         htmlElement = HTMLElementFactory::createElement(HTMLNames::iTag, document);
</span><span class="lines">@@ -118,7 +118,7 @@
</span><span class="cx"> 
</span><span class="cx">     ASSERT(htmlElement);
</span><span class="cx">     if (htmlElement)
</span><del>-        htmlElement-&gt;setAttribute(HTMLNames::classAttr, fastGetAttribute(HTMLNames::classAttr));
</del><ins>+        htmlElement-&gt;setAttributeWithoutSynchronization(HTMLNames::classAttr, fastGetAttribute(HTMLNames::classAttr));
</ins><span class="cx">     return htmlElement.releaseNonNull();
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorehtmltrackWebVTTParsercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/track/WebVTTParser.cpp (203301 => 203302)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/track/WebVTTParser.cpp        2016-07-15 21:34:16 UTC (rev 203301)
+++ trunk/Source/WebCore/html/track/WebVTTParser.cpp        2016-07-15 21:35:40 UTC (rev 203302)
</span><span class="lines">@@ -551,13 +551,13 @@
</span><span class="cx"> 
</span><span class="cx">         auto child = WebVTTElement::create(nodeType, document);
</span><span class="cx">         if (!m_token.classes().isEmpty())
</span><del>-            child-&gt;setAttribute(classAttr, m_token.classes());
</del><ins>+            child-&gt;setAttributeWithoutSynchronization(classAttr, m_token.classes());
</ins><span class="cx"> 
</span><span class="cx">         if (nodeType == WebVTTNodeTypeVoice)
</span><del>-            child-&gt;setAttribute(WebVTTElement::voiceAttributeName(), m_token.annotation());
</del><ins>+            child-&gt;setAttributeWithoutSynchronization(WebVTTElement::voiceAttributeName(), m_token.annotation());
</ins><span class="cx">         else if (nodeType == WebVTTNodeTypeLanguage) {
</span><span class="cx">             m_languageStack.append(m_token.annotation());
</span><del>-            child-&gt;setAttribute(WebVTTElement::langAttributeName(), m_languageStack.last());
</del><ins>+            child-&gt;setAttributeWithoutSynchronization(WebVTTElement::langAttributeName(), m_languageStack.last());
</ins><span class="cx">         }
</span><span class="cx">         if (!m_languageStack.isEmpty())
</span><span class="cx">             child-&gt;setLanguage(m_languageStack.last());
</span></span></pre></div>
<a id="trunkSourceWebCoreinspectorInspectorCSSAgentcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/inspector/InspectorCSSAgent.cpp (203301 => 203302)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/inspector/InspectorCSSAgent.cpp        2016-07-15 21:34:16 UTC (rev 203301)
+++ trunk/Source/WebCore/inspector/InspectorCSSAgent.cpp        2016-07-15 21:35:40 UTC (rev 203302)
</span><span class="lines">@@ -779,7 +779,7 @@
</span><span class="cx">         return nullptr;
</span><span class="cx"> 
</span><span class="cx">     Ref&lt;Element&gt; styleElement = document.createElement(HTMLNames::styleTag, false);
</span><del>-    styleElement-&gt;setAttribute(HTMLNames::typeAttr, &quot;text/css&quot;);
</del><ins>+    styleElement-&gt;setAttributeWithoutSynchronization(HTMLNames::typeAttr, AtomicString(&quot;text/css&quot;, AtomicString::ConstructFromLiteral));
</ins><span class="cx"> 
</span><span class="cx">     ContainerNode* targetNode;
</span><span class="cx">     // HEAD is absent in ImageDocuments, for example.
</span></span></pre></div>
<a id="trunkSourceWebCoreinspectorInspectorPageAgentcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/inspector/InspectorPageAgent.cpp (203301 => 203302)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/inspector/InspectorPageAgent.cpp        2016-07-15 21:34:16 UTC (rev 203301)
+++ trunk/Source/WebCore/inspector/InspectorPageAgent.cpp        2016-07-15 21:35:40 UTC (rev 203302)
</span><span class="lines">@@ -926,7 +926,7 @@
</span><span class="cx">     if (frame-&gt;ownerElement()) {
</span><span class="cx">         String name = frame-&gt;ownerElement()-&gt;getNameAttribute();
</span><span class="cx">         if (name.isEmpty())
</span><del>-            name = frame-&gt;ownerElement()-&gt;getAttribute(HTMLNames::idAttr);
</del><ins>+            name = frame-&gt;ownerElement()-&gt;fastGetAttribute(HTMLNames::idAttr);
</ins><span class="cx">         frameObject-&gt;setName(name);
</span><span class="cx">     }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoremathmlMathMLSelectElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/mathml/MathMLSelectElement.cpp (203301 => 203302)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/mathml/MathMLSelectElement.cpp        2016-07-15 21:34:16 UTC (rev 203301)
+++ trunk/Source/WebCore/mathml/MathMLSelectElement.cpp        2016-07-15 21:35:40 UTC (rev 203302)
</span><span class="lines">@@ -238,7 +238,7 @@
</span><span class="cx"> 
</span><span class="cx">     // We update the attribute value of the selection attribute.
</span><span class="cx">     // This will also call MathMLSelectElement::attributeChanged to update the selected child.
</span><del>-    setAttribute(MathMLNames::selectionAttr, AtomicString::number(newSelectedChildIndex));
</del><ins>+    setAttributeWithoutSynchronization(MathMLNames::selectionAttr, AtomicString::number(newSelectedChildIndex));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorepagePageSerializercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/PageSerializer.cpp (203301 => 203302)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/PageSerializer.cpp        2016-07-15 21:34:16 UTC (rev 203301)
+++ trunk/Source/WebCore/page/PageSerializer.cpp        2016-07-15 21:35:40 UTC (rev 203302)
</span><span class="lines">@@ -239,7 +239,7 @@
</span><span class="cx">         } else if (is&lt;HTMLLinkElement&gt;(element)) {
</span><span class="cx">             HTMLLinkElement&amp; linkElement = downcast&lt;HTMLLinkElement&gt;(element);
</span><span class="cx">             if (CSSStyleSheet* sheet = linkElement.sheet()) {
</span><del>-                URL url = document-&gt;completeURL(linkElement.getAttribute(HTMLNames::hrefAttr));
</del><ins>+                URL url = document-&gt;completeURL(linkElement.fastGetAttribute(HTMLNames::hrefAttr));
</ins><span class="cx">                 serializeCSSStyleSheet(sheet, url);
</span><span class="cx">                 ASSERT(m_resourceURLs.contains(url));
</span><span class="cx">             }
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderDetailsMarkercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderDetailsMarker.cpp (203301 => 203302)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderDetailsMarker.cpp        2016-07-15 21:34:16 UTC (rev 203301)
+++ trunk/Source/WebCore/rendering/RenderDetailsMarker.cpp        2016-07-15 21:35:40 UTC (rev 203302)
</span><span class="lines">@@ -144,7 +144,7 @@
</span><span class="cx">         if (!renderer-&gt;node())
</span><span class="cx">             continue;
</span><span class="cx">         if (is&lt;HTMLDetailsElement&gt;(*renderer-&gt;node()))
</span><del>-            return !downcast&lt;HTMLDetailsElement&gt;(*renderer-&gt;node()).getAttribute(openAttr).isNull();
</del><ins>+            return !downcast&lt;HTMLDetailsElement&gt;(*renderer-&gt;node()).fastGetAttribute(openAttr).isNull();
</ins><span class="cx">         if (is&lt;HTMLInputElement&gt;(*renderer-&gt;node()))
</span><span class="cx">             return true;
</span><span class="cx">     }
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGElement.cpp (203301 => 203302)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGElement.cpp        2016-07-15 21:34:16 UTC (rev 203301)
+++ trunk/Source/WebCore/svg/SVGElement.cpp        2016-07-15 21:35:40 UTC (rev 203302)
</span><span class="lines">@@ -374,7 +374,7 @@
</span><span class="cx"> 
</span><span class="cx"> void SVGElement::setXmlbase(const String&amp; value, ExceptionCode&amp;)
</span><span class="cx"> {
</span><del>-    setAttribute(XMLNames::baseAttr, value);
</del><ins>+    setAttributeWithoutSynchronization(XMLNames::baseAttr, value);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void SVGElement::removedFrom(ContainerNode&amp; rootParent)
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGSVGElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGSVGElement.cpp (203301 => 203302)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGSVGElement.cpp        2016-07-15 21:34:16 UTC (rev 203301)
+++ trunk/Source/WebCore/svg/SVGSVGElement.cpp        2016-07-15 21:35:40 UTC (rev 203302)
</span><span class="lines">@@ -107,7 +107,7 @@
</span><span class="cx"> 
</span><span class="cx"> void SVGSVGElement::setContentScriptType(const AtomicString&amp; type)
</span><span class="cx"> {
</span><del>-    setAttribute(SVGNames::contentScriptTypeAttr, type);
</del><ins>+    setAttributeWithoutSynchronization(SVGNames::contentScriptTypeAttr, type);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> const AtomicString&amp; SVGSVGElement::contentStyleType() const
</span><span class="lines">@@ -119,7 +119,7 @@
</span><span class="cx"> 
</span><span class="cx"> void SVGSVGElement::setContentStyleType(const AtomicString&amp; type)
</span><span class="cx"> {
</span><del>-    setAttribute(SVGNames::contentStyleTypeAttr, type);
</del><ins>+    setAttributeWithoutSynchronization(SVGNames::contentStyleTypeAttr, type);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> FloatRect SVGSVGElement::viewport() const
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGStyleElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGStyleElement.cpp (203301 => 203302)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGStyleElement.cpp        2016-07-15 21:34:16 UTC (rev 203301)
+++ trunk/Source/WebCore/svg/SVGStyleElement.cpp        2016-07-15 21:35:40 UTC (rev 203302)
</span><span class="lines">@@ -81,7 +81,7 @@
</span><span class="cx"> 
</span><span class="cx"> void SVGStyleElement::setMedia(const AtomicString&amp; media, ExceptionCode&amp;)
</span><span class="cx"> {
</span><del>-    setAttribute(SVGNames::mediaAttr, media);
</del><ins>+    setAttributeWithoutSynchronization(SVGNames::mediaAttr, media);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> String SVGStyleElement::title() const
</span><span class="lines">@@ -91,7 +91,7 @@
</span><span class="cx"> 
</span><span class="cx"> void SVGStyleElement::setTitle(const AtomicString&amp; title, ExceptionCode&amp;)
</span><span class="cx"> {
</span><del>-    setAttribute(SVGNames::titleAttr, title);
</del><ins>+    setAttributeWithoutSynchronization(SVGNames::titleAttr, title);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void SVGStyleElement::parseAttribute(const QualifiedName&amp; name, const AtomicString&amp; value)
</span></span></pre></div>
<a id="trunkSourceWebKitmacChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/mac/ChangeLog (203301 => 203302)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/mac/ChangeLog        2016-07-15 21:34:16 UTC (rev 203301)
+++ trunk/Source/WebKit/mac/ChangeLog        2016-07-15 21:35:40 UTC (rev 203302)
</span><span class="lines">@@ -1,3 +1,15 @@
</span><ins>+2016-07-15  Chris Dumez  &lt;cdumez@apple.com&gt;
+
+        Use fastGetAttribute() / setAttributeWithoutSynchronization() when possible
+        https://bugs.webkit.org/show_bug.cgi?id=159793
+
+        Reviewed by Ryosuke Niwa.
+
+        Use fastGetAttribute() / setAttributeWithoutSynchronization() when possible, for performance.
+
+        * WebView/WebHTMLRepresentation.mm:
+        (matchLabelsAgainstElement):
+
</ins><span class="cx"> 2016-07-14  Alex Christensen  &lt;achristensen@webkit.org&gt;
</span><span class="cx"> 
</span><span class="cx">         Use SocketProvider to create SocketStreamHandles
</span></span></pre></div>
<a id="trunkSourceWebKitmacWebViewWebHTMLRepresentationmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/mac/WebView/WebHTMLRepresentation.mm (203301 => 203302)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/mac/WebView/WebHTMLRepresentation.mm        2016-07-15 21:34:16 UTC (rev 203301)
+++ trunk/Source/WebKit/mac/WebView/WebHTMLRepresentation.mm        2016-07-15 21:35:40 UTC (rev 203302)
</span><span class="lines">@@ -520,11 +520,11 @@
</span><span class="cx"> {
</span><span class="cx">     // Match against the name element, then against the id element if no match is found for the name element.
</span><span class="cx">     // See 7538330 for one popular site that benefits from the id element check.
</span><del>-    String resultFromNameAttribute = matchLabelsAgainstString(labels, element-&gt;getAttribute(nameAttr));
</del><ins>+    String resultFromNameAttribute = matchLabelsAgainstString(labels, element-&gt;fastGetAttribute(nameAttr));
</ins><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"> 
</span></span></pre></div>
<a id="trunkSourceWebKitwinChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/win/ChangeLog (203301 => 203302)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/win/ChangeLog        2016-07-15 21:34:16 UTC (rev 203301)
+++ trunk/Source/WebKit/win/ChangeLog        2016-07-15 21:35:40 UTC (rev 203302)
</span><span class="lines">@@ -1,3 +1,15 @@
</span><ins>+2016-07-15  Chris Dumez  &lt;cdumez@apple.com&gt;
+
+        Use fastGetAttribute() / setAttributeWithoutSynchronization() when possible
+        https://bugs.webkit.org/show_bug.cgi?id=159793
+
+        Reviewed by Ryosuke Niwa.
+
+        Use fastGetAttribute() / setAttributeWithoutSynchronization() when possible, for performance.
+
+        * DOMHTMLClasses.cpp:
+        (DOMHTMLElement::idName):
+
</ins><span class="cx"> 2016-07-14  Chris Dumez  &lt;cdumez@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Use emptyString() instead of &quot;&quot; when possible
</span></span></pre></div>
<a id="trunkSourceWebKitwinDOMHTMLClassescpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/win/DOMHTMLClasses.cpp (203301 => 203302)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/win/DOMHTMLClasses.cpp        2016-07-15 21:34:16 UTC (rev 203301)
+++ trunk/Source/WebKit/win/DOMHTMLClasses.cpp        2016-07-15 21:35:40 UTC (rev 203302)
</span><span class="lines">@@ -429,7 +429,7 @@
</span><span class="cx">         return E_POINTER;
</span><span class="cx"> 
</span><span class="cx">     ASSERT(is&lt;HTMLElement&gt;(m_element));
</span><del>-    String idString = downcast&lt;HTMLElement&gt;(m_element)-&gt;getAttribute(idAttr);
</del><ins>+    String idString = downcast&lt;HTMLElement&gt;(m_element)-&gt;fastGetAttribute(idAttr);
</ins><span class="cx">     *result = BString(idString).release();
</span><span class="cx">     return S_OK;
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebKit2ChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/ChangeLog (203301 => 203302)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/ChangeLog        2016-07-15 21:34:16 UTC (rev 203301)
+++ trunk/Source/WebKit2/ChangeLog        2016-07-15 21:35:40 UTC (rev 203302)
</span><span class="lines">@@ -1,3 +1,21 @@
</span><ins>+2016-07-15  Chris Dumez  &lt;cdumez@apple.com&gt;
+
+        Use fastGetAttribute() / setAttributeWithoutSynchronization() when possible
+        https://bugs.webkit.org/show_bug.cgi?id=159793
+
+        Reviewed by Ryosuke Niwa.
+
+        Use fastGetAttribute() / setAttributeWithoutSynchronization() when possible, for performance.
+
+        * WebProcess/Plugins/PDF/DeprecatedPDFPlugin.mm:
+        (WebKit::PDFPlugin::PDFPlugin):
+        * WebProcess/Plugins/PDF/PDFPlugin.mm:
+        (WebKit::PDFPlugin::createPasswordEntryForm):
+        * WebProcess/Plugins/PDF/PDFPluginAnnotation.mm:
+        (WebKit::PDFPluginAnnotation::attach):
+        * WebProcess/Plugins/PDF/PDFPluginChoiceAnnotation.mm:
+        (WebKit::PDFPluginChoiceAnnotation::createAnnotationElement):
+
</ins><span class="cx"> 2016-07-15  Ryosuke Niwa  &lt;rniwa@webkit.org&gt;
</span><span class="cx"> 
</span><span class="cx">         Disable custom elements in Safari Tech Preview
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessPluginsPDFDeprecatedPDFPluginmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/Plugins/PDF/DeprecatedPDFPlugin.mm (203301 => 203302)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/Plugins/PDF/DeprecatedPDFPlugin.mm        2016-07-15 21:34:16 UTC (rev 203301)
+++ trunk/Source/WebKit2/WebProcess/Plugins/PDF/DeprecatedPDFPlugin.mm        2016-07-15 21:35:40 UTC (rev 203302)
</span><span class="lines">@@ -523,7 +523,7 @@
</span><span class="cx">     if (supportsForms()) {
</span><span class="cx">         Document* document = webFrame()-&gt;coreFrame()-&gt;document();
</span><span class="cx">         m_annotationContainer = document-&gt;createElement(divTag, false);
</span><del>-        m_annotationContainer-&gt;setAttribute(idAttr, &quot;annotationContainer&quot;);
</del><ins>+        m_annotationContainer-&gt;setAttributeWithoutSynchronization(idAttr, AtomicString(&quot;annotationContainer&quot;, AtomicString::ConstructFromLiteral));
</ins><span class="cx"> 
</span><span class="cx">         auto annotationStyleElement = document-&gt;createElement(styleTag, false);
</span><span class="cx">         annotationStyleElement-&gt;setTextContent(annotationStyle, ASSERT_NO_EXCEPTION);
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessPluginsPDFPDFPluginmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/Plugins/PDF/PDFPlugin.mm (203301 => 203302)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/Plugins/PDF/PDFPlugin.mm        2016-07-15 21:34:16 UTC (rev 203301)
+++ trunk/Source/WebKit2/WebProcess/Plugins/PDF/PDFPlugin.mm        2016-07-15 21:35:40 UTC (rev 203302)
</span><span class="lines">@@ -795,7 +795,7 @@
</span><span class="cx"> 
</span><span class="cx">     Document* document = webFrame()-&gt;coreFrame()-&gt;document();
</span><span class="cx">     m_passwordContainer = document-&gt;createElement(divTag, false);
</span><del>-    m_passwordContainer-&gt;setAttribute(idAttr, &quot;passwordContainer&quot;);
</del><ins>+    m_passwordContainer-&gt;setAttributeWithoutSynchronization(idAttr, AtomicString(&quot;passwordContainer&quot;, AtomicString::ConstructFromLiteral));
</ins><span class="cx"> 
</span><span class="cx">     m_passwordField = PDFPluginPasswordField::create(m_pdfLayerController.get(), this);
</span><span class="cx">     m_passwordField-&gt;attach(m_passwordContainer.get());
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessPluginsPDFPDFPluginAnnotationmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/Plugins/PDF/PDFPluginAnnotation.mm (203301 => 203302)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/Plugins/PDF/PDFPluginAnnotation.mm        2016-07-15 21:34:16 UTC (rev 203301)
+++ trunk/Source/WebKit2/WebProcess/Plugins/PDF/PDFPluginAnnotation.mm        2016-07-15 21:35:40 UTC (rev 203302)
</span><span class="lines">@@ -69,7 +69,7 @@
</span><span class="cx">     m_parent = parent;
</span><span class="cx">     m_element = createAnnotationElement();
</span><span class="cx"> 
</span><del>-    m_element-&gt;setAttribute(classAttr, &quot;annotation&quot;);
</del><ins>+    m_element-&gt;setAttributeWithoutSynchronization(classAttr, AtomicString(&quot;annotation&quot;, AtomicString::ConstructFromLiteral));
</ins><span class="cx">     m_element-&gt;addEventListener(eventNames().changeEvent, *m_eventListener, false);
</span><span class="cx">     m_element-&gt;addEventListener(eventNames().blurEvent, *m_eventListener, false);
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessPluginsPDFPDFPluginChoiceAnnotationmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/Plugins/PDF/PDFPluginChoiceAnnotation.mm (203301 => 203302)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/Plugins/PDF/PDFPluginChoiceAnnotation.mm        2016-07-15 21:34:16 UTC (rev 203301)
+++ trunk/Source/WebKit2/WebProcess/Plugins/PDF/PDFPluginChoiceAnnotation.mm        2016-07-15 21:35:40 UTC (rev 203302)
</span><span class="lines">@@ -87,11 +87,11 @@
</span><span class="cx"> 
</span><span class="cx">     for (NSString *choice in choices) {
</span><span class="cx">         auto choiceOption = document.createElement(optionTag, false);
</span><del>-        choiceOption-&gt;setAttribute(valueAttr, choice);
</del><ins>+        choiceOption-&gt;setAttributeWithoutSynchronization(valueAttr, choice);
</ins><span class="cx">         choiceOption-&gt;setTextContent(choice, ASSERT_NO_EXCEPTION);
</span><span class="cx"> 
</span><span class="cx">         if (choice == selectedChoice)
</span><del>-            choiceOption-&gt;setAttribute(selectedAttr, &quot;selected&quot;);
</del><ins>+            choiceOption-&gt;setAttributeWithoutSynchronization(selectedAttr, AtomicString(&quot;selected&quot;, AtomicString::ConstructFromLiteral));
</ins><span class="cx"> 
</span><span class="cx">         styledElement-&gt;appendChild(choiceOption);
</span><span class="cx">     }
</span></span></pre>
</div>
</div>

</body>
</html>