<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>140523</bug_id>
          
          <creation_ts>2015-01-15 15:52:17 -0800</creation_ts>
          <short_desc>Removing an HTML element spends a lot of time in adjustDirectionalityIfNeededAfterChildrenChanged</short_desc>
          <delta_ts>2015-01-15 19:45:21 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kling</cc>
    
    <cc>koivisto</cc>
    
    <cc>mitz</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1061674</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2015-01-15 15:52:17 -0800</bug_when>
    <thetext>We&apos;re spending a lot of time inside adjustDirectionalityIfNeededAfterChildrenChanged while removing a HTML element.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1061678</commentid>
    <comment_count>1</comment_count>
      <attachid>244721</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2015-01-15 16:00:14 -0800</bug_when>
    <thetext>Created attachment 244721
Fixes the bug</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1061681</commentid>
    <comment_count>2</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2015-01-15 16:06:21 -0800</bug_when>
    <thetext>&lt;rdar://problem/19464329&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1061689</commentid>
    <comment_count>3</comment_count>
      <attachid>244721</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-01-15 16:29:55 -0800</bug_when>
    <thetext>Comment on attachment 244721
Fixes the bug

View in context: https://bugs.webkit.org/attachment.cgi?id=244721&amp;action=review

&gt; Source/WebCore/html/HTMLElement.cpp:950
&gt;      if (document().renderView() &amp;&amp; (changeType == ElementRemoved || changeType == TextRemoved)) {

I think we can just remove this whole if. This code was refactored by Antti in https://bugs.webkit.org/show_bug.cgi?id=120599 and his changeling says he tried to keep the previous behavior of this function. However, if you look at the for loop before the refactoring, it is clear that it was never iterating. if (childCountDelta &lt; 0) { for() } and the for looped only until counter &lt; childCountDelta. counter started at 0.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1061690</commentid>
    <comment_count>4</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-01-15 16:31:01 -0800</bug_when>
    <thetext>and BTW, I removed this whole &quot;if&quot; block on Blink side a while back already.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1061695</commentid>
    <comment_count>5</comment_count>
      <attachid>244725</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2015-01-15 16:42:11 -0800</bug_when>
    <thetext>Created attachment 244725
Updated per Chris&apos; comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1061700</commentid>
    <comment_count>6</comment_count>
      <attachid>244725</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-01-15 16:48:47 -0800</bug_when>
    <thetext>Comment on attachment 244725
Updated per Chris&apos; comments

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1061702</commentid>
    <comment_count>7</comment_count>
      <attachid>244725</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-01-15 16:50:13 -0800</bug_when>
    <thetext>Comment on attachment 244725
Updated per Chris&apos; comments

View in context: https://bugs.webkit.org/attachment.cgi?id=244725&amp;action=review

&gt; Source/WebCore/html/HTMLElement.cpp:946
&gt;      // FIXME: This function looks suspicious.

And this comment is right. I think it is time we take a better look at this whole function and see if it makes sense.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1061751</commentid>
    <comment_count>8</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2015-01-15 19:45:21 -0800</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/178571.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>244721</attachid>
            <date>2015-01-15 16:00:14 -0800</date>
            <delta_ts>2015-01-15 16:42:06 -0800</delta_ts>
            <desc>Fixes the bug</desc>
            <filename>bug-140523-20150115160021.patch</filename>
            <type>text/plain</type>
            <size>2083</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE3ODUzNikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDE1LTAxLTE1ICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFJlbW92aW5nIGFuIEhUTUwgZWxl
bWVudCBzcGVuZHMgYSBsb3Qgb2YgdGltZSBpbiBhZGp1c3REaXJlY3Rpb25hbGl0eUlmTmVlZGVk
QWZ0ZXJDaGlsZHJlbkNoYW5nZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE0MDUyMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFRoZSBidWcgd2FzIGNhdXNlZCBieSBhZGp1c3REaXJlY3Rpb25hbGl0eUlm
TmVlZGVkQWZ0ZXJDaGlsZHJlbkNoYW5nZWQgYWx3YXlzIHRyYXZlcnNpbmcgY2hpbGRyZW4gdG8K
KyAgICAgICAgdW5zZXQgc2VsZk9yQW5jZXN0b3JIYXNEaXJBdXRvQXR0cmlidXRlIGZsYWcgd2hp
bGUgcmVtb3ZpbmcgYSBjaGlsZCBlbGVtZW50LiBGaXhlZCB0aGUgYnVnIGJ5CisgICAgICAgIGV4
aXRpbmcgZWFybHkgd2hlbiB0aGlzIGZsYWcgaXMgbm90IHNldCBvbiB0aGUgcGFyZW50IGVsZW1l
bnQgYXMgdGhlIGZsYWcgd291bGQgbm90IGhhdmUgYmVlbiBzZXQgb24KKyAgICAgICAgY2hpbGRy
ZW4gaW4gdGhhdCBjYXNlLgorCisgICAgICAgICogaHRtbC9IVE1MRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MRWxlbWVudDo6YWRqdXN0RGlyZWN0aW9uYWxpdHlJZk5lZWRlZEFm
dGVyQ2hpbGRyZW5DaGFuZ2VkKToKKwogMjAxNS0wMS0xNSAgWmFsYW4gQnVqdGFzICA8emFsYW5A
YXBwbGUuY29tPgogCiAgICAgICAgIExheWVyRnJhZ21lbnQgc2hvdWxkIGJlIGFibGUgdG8gaW50
ZXJzZWN0IHdpdGggQ2xpcFJlY3QuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVt
ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNw
cAkocmV2aXNpb24gMTc4NTI3KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTk0Myw2ICs5NDMsOSBAQCB2b2lkIEhUTUxFbGVtZW50Ojpj
YWxjdWxhdGVBbmRBZGp1c3REaXJlCiAKIHZvaWQgSFRNTEVsZW1lbnQ6OmFkanVzdERpcmVjdGlv
bmFsaXR5SWZOZWVkZWRBZnRlckNoaWxkcmVuQ2hhbmdlZChFbGVtZW50KiBiZWZvcmVDaGFuZ2Us
IENoaWxkQ2hhbmdlVHlwZSBjaGFuZ2VUeXBlKQogeworICAgIGlmICghc2VsZk9yQW5jZXN0b3JI
YXNEaXJBdXRvQXR0cmlidXRlKCkpCisgICAgICAgIHJldHVybjsKKwogICAgIC8vIEZJWE1FOiBU
aGlzIGZ1bmN0aW9uIGxvb2tzIHN1c3BpY2lvdXMuCiAgICAgaWYgKGRvY3VtZW50KCkucmVuZGVy
VmlldygpICYmIChjaGFuZ2VUeXBlID09IEVsZW1lbnRSZW1vdmVkIHx8IGNoYW5nZVR5cGUgPT0g
VGV4dFJlbW92ZWQpKSB7CiAgICAgICAgIE5vZGUqIG5vZGUgPSBiZWZvcmVDaGFuZ2UgPyBiZWZv
cmVDaGFuZ2UtPm5leHRTaWJsaW5nKCkgOiBudWxscHRyOwpAQCAtOTU0LDkgKzk1Nyw2IEBAIHZv
aWQgSFRNTEVsZW1lbnQ6OmFkanVzdERpcmVjdGlvbmFsaXR5SWYKICAgICAgICAgfQogICAgIH0K
IAotICAgIGlmICghc2VsZk9yQW5jZXN0b3JIYXNEaXJBdXRvQXR0cmlidXRlKCkpCi0gICAgICAg
IHJldHVybjsKLQogICAgIE5vZGUqIG9sZE1hcmtlZE5vZGUgPSBudWxscHRyOwogICAgIGlmIChi
ZWZvcmVDaGFuZ2UpCiAgICAgICAgIG9sZE1hcmtlZE5vZGUgPSBjaGFuZ2VUeXBlID09IEVsZW1l
bnRJbnNlcnRlZCA/IEVsZW1lbnRUcmF2ZXJzYWw6Om5leHRTaWJsaW5nKGJlZm9yZUNoYW5nZSkg
OiBiZWZvcmVDaGFuZ2UtPm5leHRTaWJsaW5nKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>244725</attachid>
            <date>2015-01-15 16:42:11 -0800</date>
            <delta_ts>2015-01-15 16:48:47 -0800</delta_ts>
            <desc>Updated per Chris&apos; comments</desc>
            <filename>bug-140523-20150115164217.patch</filename>
            <type>text/plain</type>
            <size>2149</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE3ODUzNikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIyIEBACisyMDE1LTAxLTE1ICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFJlbW92aW5nIGFuIEhUTUwgZWxl
bWVudCBzcGVuZHMgYSBsb3Qgb2YgdGltZSBpbiBhZGp1c3REaXJlY3Rpb25hbGl0eUlmTmVlZGVk
QWZ0ZXJDaGlsZHJlbkNoYW5nZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE0MDUyMworICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTk0NjQzMjk+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIGJ1ZyB3
YXMgY2F1c2VkIGJ5IGFkanVzdERpcmVjdGlvbmFsaXR5SWZOZWVkZWRBZnRlckNoaWxkcmVuQ2hh
bmdlZCBhbHdheXMgdHJhdmVyc2luZyBjaGlsZHJlbiB0bworICAgICAgICB1bnNldCBzZWxmT3JB
bmNlc3Rvckhhc0RpckF1dG9BdHRyaWJ1dGUgZmxhZyB3aGlsZSByZW1vdmluZyBhIGNoaWxkIGVs
ZW1lbnQuCisKKyAgICAgICAgRml4ZWQgdGhlIGJ1ZyBieSByZW1vdmluZyB0aGlzIGNvZGUuIFRo
aXMgY29kZSB3YXMgbm8tb3AgcHJpb3IgdG8gYmVpbmcgcmVmYWN0b3JlZCBpbiByMTU0OTU3IHNp
bmNlCisgICAgICAgIHdlIG9ubHkgZW50ZXJlZCBhIGZvciBsb29wIHdpdGggdGhlIGludmFyaWFu
dCAiY291bnRlciA8IGNoaWxkQ291bnREZWx0YSIgd2hlbiAiY2hpbGRDb3VudERlbHRhIDwgMCIu
CisKKyAgICAgICAgU2VlIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzE1NDk1Ny90
cnVuay9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcC4KKworICAgICAgICAqIGh0
bWwvSFRNTEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVsZW1lbnQ6OmFkanVz
dERpcmVjdGlvbmFsaXR5SWZOZWVkZWRBZnRlckNoaWxkcmVuQ2hhbmdlZCk6CisKIDIwMTUtMDEt
MTUgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBMYXllckZyYWdt
ZW50IHNob3VsZCBiZSBhYmxlIHRvIGludGVyc2VjdCB3aXRoIENsaXBSZWN0LgpJbmRleDogU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAJKHJldmlzaW9uIDE3ODUyNykKKysrIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NDQsMTUgKzk0
NCw2IEBAIHZvaWQgSFRNTEVsZW1lbnQ6OmNhbGN1bGF0ZUFuZEFkanVzdERpcmUKIHZvaWQgSFRN
TEVsZW1lbnQ6OmFkanVzdERpcmVjdGlvbmFsaXR5SWZOZWVkZWRBZnRlckNoaWxkcmVuQ2hhbmdl
ZChFbGVtZW50KiBiZWZvcmVDaGFuZ2UsIENoaWxkQ2hhbmdlVHlwZSBjaGFuZ2VUeXBlKQogewog
ICAgIC8vIEZJWE1FOiBUaGlzIGZ1bmN0aW9uIGxvb2tzIHN1c3BpY2lvdXMuCi0gICAgaWYgKGRv
Y3VtZW50KCkucmVuZGVyVmlldygpICYmIChjaGFuZ2VUeXBlID09IEVsZW1lbnRSZW1vdmVkIHx8
IGNoYW5nZVR5cGUgPT0gVGV4dFJlbW92ZWQpKSB7Ci0gICAgICAgIE5vZGUqIG5vZGUgPSBiZWZv
cmVDaGFuZ2UgPyBiZWZvcmVDaGFuZ2UtPm5leHRTaWJsaW5nKCkgOiBudWxscHRyOwotICAgICAg
ICBmb3IgKDsgbm9kZTsgbm9kZSA9IG5vZGUtPm5leHRTaWJsaW5nKCkpIHsKLSAgICAgICAgICAg
IGlmIChlbGVtZW50QWZmZWN0c0RpcmVjdGlvbmFsaXR5KCpub2RlKSkKLSAgICAgICAgICAgICAg
ICBjb250aW51ZTsKLQotICAgICAgICAgICAgc2V0SGFzRGlyQXV0b0ZsYWdSZWN1cnNpdmVseShu
b2RlLCBmYWxzZSk7Ci0gICAgICAgIH0KLSAgICB9CiAKICAgICBpZiAoIXNlbGZPckFuY2VzdG9y
SGFzRGlyQXV0b0F0dHJpYnV0ZSgpKQogICAgICAgICByZXR1cm47Cg==
</data>
<flag name="review"
          id="269656"
          type_id="1"
          status="+"
          setter="cdumez"
    />
          </attachment>
      

    </bug>

</bugzilla>