<?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>236486</bug_id>
          
          <creation_ts>2022-02-10 23:15:10 -0800</creation_ts>
          <short_desc>Make WidgetHierarchyUpdatesSuspensionScope cheaper if it has nothing to do</short_desc>
          <delta_ts>2022-02-12 07:31:17 -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>WebKit 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="Cameron McCormack (:heycam)">heycam</reporter>
          <assigned_to name="Cameron McCormack (:heycam)">heycam</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>changseok</cc>
    
    <cc>darin</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>pdr</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1840221</commentid>
    <comment_count>0</comment_count>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2022-02-10 23:15:10 -0800</bug_when>
    <thetext>With content that does a lot of DOM manipulation, we can create and destroy a WidgetHierarchyUpdatesSuspensionScope on the stack many times.  When this object has nothing to do, it calls an out of line function.  We can pull out the check for whether it needs to call moveWidgets() into the inline destructor.

This is a 1% saving on the jQuery-TodoMVC subtest of Speedometer 2, though the effect on the top line score is minimal.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1840222</commentid>
    <comment_count>1</comment_count>
      <attachid>451648</attachid>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2022-02-10 23:17:15 -0800</bug_when>
    <thetext>Created attachment 451648
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1840472</commentid>
    <comment_count>2</comment_count>
      <attachid>451648</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-02-11 11:36:27 -0800</bug_when>
    <thetext>Comment on attachment 451648
Patch

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

&gt; Source/WebCore/rendering/RenderWidget.h:60
&gt; +    widgetNewParentMap().set(&amp;widget, frame);

For maps, please keep in mind that add is the slightly more efficient operation. The difference is that add will not overwrite the value in an existing map entry, whereas set will overwrite it. If either is OK, then add is preferred for slightly better performance and code size.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1840496</commentid>
    <comment_count>3</comment_count>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2022-02-11 12:50:07 -0800</bug_when>
    <thetext>(In reply to Darin Adler from comment #2)
&gt; For maps, please keep in mind that add is the slightly more efficient
&gt; operation. The difference is that add will not overwrite the value in an
&gt; existing map entry, whereas set will overwrite it. If either is OK, then add
&gt; is preferred for slightly better performance and code size.

This is existing code, and I am not entirely sure whether it is expected that scheduleWidgetToMove will only ever be called for a given Widget once before the moves are effected and the map is cleared.  But the add vs set distinction is a good nugget of knowledge to learn, thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1840693</commentid>
    <comment_count>4</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-02-12 07:30:17 -0800</bug_when>
    <thetext>Committed r289692 (247177@main): &lt;https://commits.webkit.org/247177@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 451648.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1840694</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-02-12 07:31:17 -0800</bug_when>
    <thetext>&lt;rdar://problem/88855693&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451648</attachid>
            <date>2022-02-10 23:17:15 -0800</date>
            <delta_ts>2022-02-12 07:30:18 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236486-20220211181714.patch</filename>
            <type>text/plain</type>
            <size>4230</size>
            <attacher name="Cameron McCormack (:heycam)">heycam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5NDExCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzJhYmZhMzJmYjNkMjc0
MzM3NjZhNTM3ZTkxYTg5OTdlMTJiZjA4Yi4uMjc0MGVhMjAwNTg2NDIzYzkzMWY1NmQ4MDBjYmM2
ODMxNWM5MzYxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDIyLTAyLTEwICBDYW1l
cm9uIE1jQ29ybWFjayAgPGhleWNhbUBhcHBsZS5jb20+CisKKyAgICAgICAgTWFrZSBXaWRnZXRI
aWVyYXJjaHlVcGRhdGVzU3VzcGVuc2lvblNjb3BlIGNoZWFwZXIgaWYgaXQgaGFzIG5vdGhpbmcg
dG8gZG8KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIz
NjQ4NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdp
dGggY29udGVudCB0aGF0IGRvZXMgYSBsb3Qgb2YgRE9NIG1hbmlwdWxhdGlvbiwgd2UgY2FuIGNy
ZWF0ZSBhbmQKKyAgICAgICAgZGVzdHJveSBhIFdpZGdldEhpZXJhcmNoeVVwZGF0ZXNTdXNwZW5z
aW9uU2NvcGUgb24gdGhlIHN0YWNrIG1hbnkgdGltZXMuCisgICAgICAgIFdoZW4gdGhpcyBvYmpl
Y3QgaGFzIG5vdGhpbmcgdG8gZG8sIGl0IGNhbGxzIGFuIG91dCBvZiBsaW5lIGZ1bmN0aW9uLgor
ICAgICAgICBUaGlzIHBhdGNoIHB1bGxzIG91dCB0aGUgY2hlY2sgZm9yIHdoZXRoZXIgaXQgbmVl
ZHMgdG8gY2FsbAorICAgICAgICBtb3ZlV2lkZ2V0cygpIGludG8gdGhlIGlubGluZSBkZXN0cnVj
dG9yLgorCisgICAgICAgIFRoaXMgaXMgYSAxJSBzYXZpbmcgb24gdGhlIGpRdWVyeS1Ub2RvTVZD
IHN1YnRlc3Qgb2YgU3BlZWRvbWV0ZXIgMiwKKyAgICAgICAgdGhvdWdoIHRoZSBlZmZlY3Qgb24g
dGhlIHRvcCBsaW5lIHNjb3JlIGlzIG1pbmltYWwuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyV2lkZ2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldpZGdldEhpZXJhcmNoeVVwZGF0ZXNT
dXNwZW5zaW9uU2NvcGU6Om1vdmVXaWRnZXRzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
V2lkZ2V0Lmg6CisgICAgICAgIChXZWJDb3JlOjpXaWRnZXRIaWVyYXJjaHlVcGRhdGVzU3VzcGVu
c2lvblNjb3BlOjp+V2lkZ2V0SGllcmFyY2h5VXBkYXRlc1N1c3BlbnNpb25TY29wZSk6CisgICAg
ICAgIChXZWJDb3JlOjpXaWRnZXRIaWVyYXJjaHlVcGRhdGVzU3VzcGVuc2lvblNjb3BlOjpzY2hl
ZHVsZVdpZGdldFRvTW92ZSk6CisKIDIwMjItMDItMDggIENhbWVyb24gTWNDb3JtYWNrICA8aGV5
Y2FtQGFwcGxlLmNvbT4KIAogICAgICAgICBNYWtlIEhUTUxUb2tlbjo6YmVnaW5TdGFydFRhZyB0
YWcgYW4gOCBiaXQgY2hhcmFjdGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyV2lkZ2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRn
ZXQuY3BwCmluZGV4IDZkZmU4MGEyNjI4MWI5Y2U2Mjk5ZGJmNjFlNjA2MjdkZDU2NmU4YzcuLmVm
YjNhOGJlMGNlMmQwMDIxMzRjZjI4M2QzOGQ5NDBiZjQwMjMxNTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwCkBAIC00OSw2ICs0OSw3IEBAIHN0YXRpYyBIYXNo
TWFwPGNvbnN0IFdpZGdldCosIFJlbmRlcldpZGdldCo+JiB3aWRnZXRSZW5kZXJlck1hcCgpCiB9
CiAKIHVuc2lnbmVkIFdpZGdldEhpZXJhcmNoeVVwZGF0ZXNTdXNwZW5zaW9uU2NvcGU6OnNfd2lk
Z2V0SGllcmFyY2h5VXBkYXRlU3VzcGVuZENvdW50ID0gMDsKK2Jvb2wgV2lkZ2V0SGllcmFyY2h5
VXBkYXRlc1N1c3BlbnNpb25TY29wZTo6c19oYXZlU2NoZWR1bGVkV2lkZ2V0VG9Nb3ZlID0gZmFs
c2U7CiAKIFdpZGdldEhpZXJhcmNoeVVwZGF0ZXNTdXNwZW5zaW9uU2NvcGU6OldpZGdldFRvUGFy
ZW50TWFwJiBXaWRnZXRIaWVyYXJjaHlVcGRhdGVzU3VzcGVuc2lvblNjb3BlOjp3aWRnZXROZXdQ
YXJlbnRNYXAoKQogewpAQCAtNTgsNiArNTksNyBAQCBXaWRnZXRIaWVyYXJjaHlVcGRhdGVzU3Vz
cGVuc2lvblNjb3BlOjpXaWRnZXRUb1BhcmVudE1hcCYgV2lkZ2V0SGllcmFyY2h5VXBkYXRlcwog
CiB2b2lkIFdpZGdldEhpZXJhcmNoeVVwZGF0ZXNTdXNwZW5zaW9uU2NvcGU6Om1vdmVXaWRnZXRz
KCkKIHsKKyAgICBBU1NFUlQoc19oYXZlU2NoZWR1bGVkV2lkZ2V0VG9Nb3ZlKTsKICAgICB3aGls
ZSAoIXdpZGdldE5ld1BhcmVudE1hcCgpLmlzRW1wdHkoKSkgewogICAgICAgICBhdXRvIG1hcCA9
IHN0ZDo6ZXhjaGFuZ2Uod2lkZ2V0TmV3UGFyZW50TWFwKCksIHsgfSk7CiAgICAgICAgIGZvciAo
YXV0byYgZW50cnkgOiBtYXApIHsKQEAgLTcyLDYgKzc0LDcgQEAgdm9pZCBXaWRnZXRIaWVyYXJj
aHlVcGRhdGVzU3VzcGVuc2lvblNjb3BlOjptb3ZlV2lkZ2V0cygpCiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0KICAgICB9CisgICAgc19oYXZlU2NoZWR1bGVkV2lkZ2V0VG9Nb3ZlID0gZmFsc2U7
CiB9CiAKIHN0YXRpYyB2b2lkIG1vdmVXaWRnZXRUb1BhcmVudFNvb24oV2lkZ2V0JiBjaGlsZCwg
RnJhbWVWaWV3KiBwYXJlbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyV2lkZ2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmgK
aW5kZXggMDg4M2QxMDU5MTU2NzU0NTg1M2I5NmViOWVlMDhlYTBjNmVkYTU3MS4uOTJlYTc0YjZj
M2QxNWM5YmVkMTY5MTI1NTQzNjQ3YTQwMjdlMTJlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJXaWRnZXQuaApAQCAtMzcsMTMgKzM3LDEzIEBAIHB1YmxpYzoKICAgICB+V2lkZ2V0
SGllcmFyY2h5VXBkYXRlc1N1c3BlbnNpb25TY29wZSgpCiAgICAgewogICAgICAgICBBU1NFUlQo
c193aWRnZXRIaWVyYXJjaHlVcGRhdGVTdXNwZW5kQ291bnQpOwotICAgICAgICBpZiAoc193aWRn
ZXRIaWVyYXJjaHlVcGRhdGVTdXNwZW5kQ291bnQgPT0gMSkKKyAgICAgICAgaWYgKHNfd2lkZ2V0
SGllcmFyY2h5VXBkYXRlU3VzcGVuZENvdW50ID09IDEgJiYgc19oYXZlU2NoZWR1bGVkV2lkZ2V0
VG9Nb3ZlKQogICAgICAgICAgICAgbW92ZVdpZGdldHMoKTsKICAgICAgICAgc193aWRnZXRIaWVy
YXJjaHlVcGRhdGVTdXNwZW5kQ291bnQtLTsKICAgICB9CiAKICAgICBzdGF0aWMgYm9vbCBpc1N1
c3BlbmRlZCgpIHsgcmV0dXJuIHNfd2lkZ2V0SGllcmFyY2h5VXBkYXRlU3VzcGVuZENvdW50OyB9
Ci0gICAgc3RhdGljIHZvaWQgc2NoZWR1bGVXaWRnZXRUb01vdmUoV2lkZ2V0JiB3aWRnZXQsIEZy
YW1lVmlldyogZnJhbWUpIHsgd2lkZ2V0TmV3UGFyZW50TWFwKCkuc2V0KCZ3aWRnZXQsIGZyYW1l
KTsgfQorICAgIHN0YXRpYyB2b2lkIHNjaGVkdWxlV2lkZ2V0VG9Nb3ZlKFdpZGdldCYsIEZyYW1l
VmlldyopOwogCiBwcml2YXRlOgogICAgIHVzaW5nIFdpZGdldFRvUGFyZW50TWFwID0gSGFzaE1h
cDxSZWZQdHI8V2lkZ2V0PiwgRnJhbWVWaWV3Kj47CkBAIC01MSw4ICs1MSwxNSBAQCBwcml2YXRl
OgogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBtb3ZlV2lkZ2V0cygpOwogICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyB1bnNpZ25lZCBzX3dpZGdldEhpZXJhcmNoeVVwZGF0ZVN1c3BlbmRDb3Vu
dDsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBzX2hhdmVTY2hlZHVsZWRXaWRnZXRU
b01vdmU7CiB9OwotICAgIAorCitpbmxpbmUgdm9pZCBXaWRnZXRIaWVyYXJjaHlVcGRhdGVzU3Vz
cGVuc2lvblNjb3BlOjpzY2hlZHVsZVdpZGdldFRvTW92ZShXaWRnZXQmIHdpZGdldCwgRnJhbWVW
aWV3KiBmcmFtZSkKK3sKKyAgICBzX2hhdmVTY2hlZHVsZWRXaWRnZXRUb01vdmUgPSB0cnVlOwor
ICAgIHdpZGdldE5ld1BhcmVudE1hcCgpLnNldCgmd2lkZ2V0LCBmcmFtZSk7Cit9CisKIGNsYXNz
IFJlbmRlcldpZGdldCA6IHB1YmxpYyBSZW5kZXJSZXBsYWNlZCwgcHJpdmF0ZSBPdmVybGFwVGVz
dFJlcXVlc3RDbGllbnQgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoUmVuZGVyV2lkZ2V0
KTsKIHB1YmxpYzoK
</data>

          </attachment>
      

    </bug>

</bugzilla>