<?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>79319</bug_id>
          
          <creation_ts>2012-02-22 19:58:55 -0800</creation_ts>
          <short_desc>Cleanup RenderBlock::moveChildrenTo</short_desc>
          <delta_ts>2012-02-23 11:11:48 -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>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P3</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Julien Chaffraix">jchaffraix</reporter>
          <assigned_to name="Julien Chaffraix">jchaffraix</assigned_to>
          <cc>eric</cc>
    
    <cc>inferno</cc>
    
    <cc>ojan</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>562739</commentid>
    <comment_count>0</comment_count>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2012-02-22 19:58:55 -0800</bug_when>
    <thetext>Seen during a review, the function is pretty difficult to read but also has some redundant code hidden in it.

Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>562748</commentid>
    <comment_count>1</comment_count>
      <attachid>128376</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2012-02-22 20:03:44 -0800</bug_when>
    <thetext>Created attachment 128376
Simple cleanup, removed unneeded inline check, while -&gt; for and use moveChildTo.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>562843</commentid>
    <comment_count>2</comment_count>
    <who name="Abhishek Arya">inferno</who>
    <bug_when>2012-02-22 22:32:50 -0800</bug_when>
    <thetext>(In reply to comment #1)
&gt; Created an attachment (id=128376) [details]
&gt; Simple cleanup, removed unneeded inline check, while -&gt; for and use moveChildTo.

Yay! now i can just fix stuff in central RenderBlock::moveChildTo</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>562846</commentid>
    <comment_count>3</comment_count>
      <attachid>128376</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-02-22 22:38:32 -0800</bug_when>
    <thetext>Comment on attachment 128376
Simple cleanup, removed unneeded inline check, while -&gt; for and use moveChildTo.

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

I wonder if this will have a performance effect.

&gt; Source/WebCore/rendering/RenderBlock.cpp:992
&gt; +    for (RenderObject* child = startChild; child &amp;&amp; child != endChild; ) {
&gt; +        // Save our next sibling as moveChildTo will clear it.
&gt; +        RenderObject* nextSibling = child-&gt;nextSibling();
&gt; +        moveChildTo(toBlock, child, beforeChild, fullRemoveInsert);
&gt; +        child = nextSibling;
&gt;      }

Just to make sure... there are no mutation events (or other JavaScript) run by moveChildTo such that we would need to hold a RefPtr for child?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>562848</commentid>
    <comment_count>4</comment_count>
    <who name="Abhishek Arya">inferno</who>
    <bug_when>2012-02-22 22:42:49 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 128376 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=128376&amp;action=review
&gt; 
&gt; I wonder if this will have a performance effect.
&gt; 
&gt; &gt; Source/WebCore/rendering/RenderBlock.cpp:992
&gt; &gt; +    for (RenderObject* child = startChild; child &amp;&amp; child != endChild; ) {
&gt; &gt; +        // Save our next sibling as moveChildTo will clear it.
&gt; &gt; +        RenderObject* nextSibling = child-&gt;nextSibling();
&gt; &gt; +        moveChildTo(toBlock, child, beforeChild, fullRemoveInsert);
&gt; &gt; +        child = nextSibling;
&gt; &gt;      }
&gt; 
&gt; Just to make sure... there are no mutation events (or other JavaScript) run by moveChildTo such that we would need to hold a RefPtr for child?

No Refptrs in the rendering world :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>563159</commentid>
    <comment_count>5</comment_count>
      <attachid>128376</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2012-02-23 09:22:49 -0800</bug_when>
    <thetext>Comment on attachment 128376
Simple cleanup, removed unneeded inline check, while -&gt; for and use moveChildTo.

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

&gt; I wonder if this will have a performance effect.

I was wondering that too. Some archaeology did not show the split was done for performance so we should be fine. In case, we can always inline moveChildTo.

&gt;&gt;&gt; Source/WebCore/rendering/RenderBlock.cpp:992
&gt;&gt;&gt;      }
&gt;&gt; 
&gt;&gt; Just to make sure... there are no mutation events (or other JavaScript) run by moveChildTo such that we would need to hold a RefPtr for child?
&gt; 
&gt; No Refptrs in the rendering world :(

Indeed, but more importantly, the operations are atomic from a JS perspective.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>563271</commentid>
    <comment_count>6</comment_count>
      <attachid>128376</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-23 11:11:43 -0800</bug_when>
    <thetext>Comment on attachment 128376
Simple cleanup, removed unneeded inline check, while -&gt; for and use moveChildTo.

Clearing flags on attachment: 128376

Committed r108645: &lt;http://trac.webkit.org/changeset/108645&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>563272</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-23 11:11:48 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>128376</attachid>
            <date>2012-02-22 20:03:44 -0800</date>
            <delta_ts>2012-02-23 11:11:43 -0800</delta_ts>
            <desc>Simple cleanup, removed unneeded inline check, while -&gt; for and use moveChildTo.</desc>
            <filename>bug-79319-20120222200343.patch</filename>
            <type>text/plain</type>
            <size>2532</size>
            <attacher name="Julien Chaffraix">jchaffraix</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA4NTkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDhjN2U1Y2ZjMDcxMzkx
OTM3N2Y2ZjJiMTUzYWEzYzc5ZGYzZGZhNS4uZTFmZGRiM2Y3OTYwNmVhYTA1NTYzMzExZDMwZGM0
MTc1OTEzYzE2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDEyLTAyLTIyICBKdWxp
ZW4gQ2hhZmZyYWl4ICA8amNoYWZmcmFpeEB3ZWJraXQub3JnPgorCisgICAgICAgIENsZWFudXAg
UmVuZGVyQmxvY2s6Om1vdmVDaGlsZHJlblRvCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD03OTMxOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFJlZmFjdG9yaW5nLCBubyBjaGFuZ2UgaW4gYmVoYXZpb3IgZXhw
ZWN0ZWQuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyQmxvY2s6Om1vdmVDaGlsZHJlblRvKToKKyAgICAgICAgUmVtb3ZlZCBp
bmxpbmUgY2hlY2sgdGhhdCB3YXMgcmVkdW5kYW50LCBzd2l0Y2hlZCB0byB8d2hpbGV8IHRvIGEg
fGZvcnwKKyAgICAgICAgdG8gc2hvdyB3aGF0J3MgZ29pbmcgb24gbW9yZSBjbG9zZWx5IGFuZCBh
ZGRzIGEgY2FsbCB0byBtb3ZlQ2hpbGRUbyB0bworICAgICAgICBzaGFyZSBtb3JlIGNvZGUgYmV0
d2VlbiB0aGUgMiBmdW5jdGlvbnMuCisKIDIwMTItMDItMjIgIEFkcmllbm5lIFdhbGtlciAgPGVu
bmVAZ29vZ2xlLmNvbT4KIAogICAgICAgICBbY2hyb21pdW1dIFVucmV2aWV3ZWQgc3BlY3VsYXRp
dmUgY2hyb21pdW0tbWFjIGJ1aWxkIGZpeC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCbG9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
QmxvY2suY3BwCmluZGV4IGM1ZTk0YzFkZGJmMWU0NGU0Zjk1N2ZmY2FhMWFjMWQwZTZkNjUwZjIu
LjM3NGRmZDlkMzQ5ODY3OTY4MDIzYTdjNmM0ZmNmMzA1ODU2YWQxMjUgMTAwNzU1Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcApAQCAtOTgzLDE4ICs5ODMsMTIgQEAgdm9pZCBS
ZW5kZXJCbG9jazo6bW92ZUNoaWxkVG8oUmVuZGVyQmxvY2sqIHRvQmxvY2ssIFJlbmRlck9iamVj
dCogY2hpbGQsIFJlbmRlck8KIHZvaWQgUmVuZGVyQmxvY2s6Om1vdmVDaGlsZHJlblRvKFJlbmRl
ckJsb2NrKiB0b0Jsb2NrLCBSZW5kZXJPYmplY3QqIHN0YXJ0Q2hpbGQsIFJlbmRlck9iamVjdCog
ZW5kQ2hpbGQsIFJlbmRlck9iamVjdCogYmVmb3JlQ2hpbGQsIGJvb2wgZnVsbFJlbW92ZUluc2Vy
dCkKIHsKICAgICBBU1NFUlQoIWJlZm9yZUNoaWxkIHx8IHRvQmxvY2sgPT0gYmVmb3JlQ2hpbGQt
PnBhcmVudCgpKTsKLSAgICBSZW5kZXJPYmplY3QqIG5leHRDaGlsZCA9IHN0YXJ0Q2hpbGQ7Ci0g
ICAgd2hpbGUgKG5leHRDaGlsZCAmJiBuZXh0Q2hpbGQgIT0gZW5kQ2hpbGQpIHsKLSAgICAgICAg
UmVuZGVyT2JqZWN0KiBjaGlsZCA9IG5leHRDaGlsZDsKLSAgICAgICAgbmV4dENoaWxkID0gY2hp
bGQtPm5leHRTaWJsaW5nKCk7Ci0gICAgICAgIGlmIChmdWxsUmVtb3ZlSW5zZXJ0KSB7Ci0gICAg
ICAgICAgICAvLyBUYWtlcyBjYXJlIG9mIGFkZGluZyB0aGUgbmV3IGNoaWxkIGNvcnJlY3RseSBp
ZiB0b0Jsb2NrIGFuZCBmcm9tQmxvY2sKLSAgICAgICAgICAgIC8vIGhhdmUgZGlmZmVyZW50IGtp
bmQgb2YgY2hpbGRyZW4gKGJsb2NrIHZzIGlubGluZSkuCi0gICAgICAgICAgICB0b0Jsb2NrLT5h
ZGRDaGlsZElnbm9yaW5nQ29udGludWF0aW9uKGNoaWxkcmVuKCktPnJlbW92ZUNoaWxkTm9kZSh0
aGlzLCBjaGlsZCksIGJlZm9yZUNoaWxkKTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICB0
b0Jsb2NrLT5jaGlsZHJlbigpLT5pbnNlcnRDaGlsZE5vZGUodG9CbG9jaywgY2hpbGRyZW4oKS0+
cmVtb3ZlQ2hpbGROb2RlKHRoaXMsIGNoaWxkLCBmYWxzZSksIGJlZm9yZUNoaWxkLCBmYWxzZSk7
Ci0gICAgICAgIGlmIChjaGlsZCA9PSBlbmRDaGlsZCkKLSAgICAgICAgICAgIHJldHVybjsKKwor
ICAgIGZvciAoUmVuZGVyT2JqZWN0KiBjaGlsZCA9IHN0YXJ0Q2hpbGQ7IGNoaWxkICYmIGNoaWxk
ICE9IGVuZENoaWxkOyApIHsKKyAgICAgICAgLy8gU2F2ZSBvdXIgbmV4dCBzaWJsaW5nIGFzIG1v
dmVDaGlsZFRvIHdpbGwgY2xlYXIgaXQuCisgICAgICAgIFJlbmRlck9iamVjdCogbmV4dFNpYmxp
bmcgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKTsKKyAgICAgICAgbW92ZUNoaWxkVG8odG9CbG9jaywg
Y2hpbGQsIGJlZm9yZUNoaWxkLCBmdWxsUmVtb3ZlSW5zZXJ0KTsKKyAgICAgICAgY2hpbGQgPSBu
ZXh0U2libGluZzsKICAgICB9CiB9CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>