<?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>88464</bug_id>
          
          <creation_ts>2012-06-06 15:32:56 -0700</creation_ts>
          <short_desc>Cache isSelfPaintingLayer() for better performance</short_desc>
          <delta_ts>2012-09-18 11:57:34 -0700</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>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>75001</blocked>
    
    <blocked>92258</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Julien Chaffraix">jchaffraix</reporter>
          <assigned_to name="Julien Chaffraix">jchaffraix</assigned_to>
          <cc>eric</cc>
    
    <cc>jamesr</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>642894</commentid>
    <comment_count>0</comment_count>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2012-06-06 15:32:56 -0700</bug_when>
    <thetext>Currently we recompute isSelfPaintingLayer() every time the function is called. I have seen this function showing up on some benchmarks when scrolling on big tables such as http://dglazkov.github.com/performance-tests/biggrid.html.

The painting code checks this boolean several time per paint phase so it should help both the self-painting and the non-self-painting layers.

Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>642909</commentid>
    <comment_count>1</comment_count>
      <attachid>146132</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2012-06-06 15:44:59 -0700</bug_when>
    <thetext>Created attachment 146132
Proposed change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>642936</commentid>
    <comment_count>2</comment_count>
      <attachid>146132</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-06-06 16:38:45 -0700</bug_when>
    <thetext>Comment on attachment 146132
Proposed change.

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

&gt; Source/WebCore/rendering/RenderLayer.cpp:4667
&gt;          || renderer()-&gt;hasReflection()

can this change after the RenderLayer is created?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>642937</commentid>
    <comment_count>3</comment_count>
      <attachid>146132</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-06-06 16:41:27 -0700</bug_when>
    <thetext>Comment on attachment 146132
Proposed change.

Seems like hasMask() could also change, as well as some of the isNormalFlowOnly() criteria.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>642938</commentid>
    <comment_count>4</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-06-06 16:41:50 -0700</bug_when>
    <thetext>You could cache it between styleChanged() calls maybe.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>642939</commentid>
    <comment_count>5</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-06-06 16:43:19 -0700</bug_when>
    <thetext>Ah, I see you&apos;ve hooked styleChanged.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>642941</commentid>
    <comment_count>6</comment_count>
      <attachid>146132</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-06-06 16:45:03 -0700</bug_when>
    <thetext>Comment on attachment 146132
Proposed change.

Oh, I see you update it in styleChanged(). Should be OK. I guess you could assert that m_isSelfPaintingLayer == shouldBeSelfPaintingLayer() in painting, but that&apos;s probably overkill.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>642944</commentid>
    <comment_count>7</comment_count>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2012-06-06 16:49:00 -0700</bug_when>
    <thetext>Please no fighting, style change is covered! :)

(In reply to comment #6)
&gt; (From update of attachment 146132 [details])
&gt; Oh, I see you update it in styleChanged(). Should be OK. I guess you could assert that m_isSelfPaintingLayer == shouldBeSelfPaintingLayer() in painting, but that&apos;s probably overkill.

It&apos;s possible but if this were to happen I would expect a lot of the code to break pretty badly (it would mean we start mutating the style without notifying us). Also shouldBeNormalFlowOnly has been working pretty well for some time without bug that I know of.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>643168</commentid>
    <comment_count>8</comment_count>
      <attachid>146132</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-06 21:21:03 -0700</bug_when>
    <thetext>Comment on attachment 146132
Proposed change.

Clearing flags on attachment: 146132

Committed r119676: &lt;http://trac.webkit.org/changeset/119676&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>643169</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-06 21:21:07 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>146132</attachid>
            <date>2012-06-06 15:44:59 -0700</date>
            <delta_ts>2012-06-06 21:21:03 -0700</delta_ts>
            <desc>Proposed change.</desc>
            <filename>bug-88464-20120606154458.patch</filename>
            <type>text/plain</type>
            <size>5260</size>
            <attacher name="Julien Chaffraix">jchaffraix</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE5NTIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTBiZTZmYmUwNzMwNTll
ZmFhOTJhOTI4NzIwM2MwYjYyYzQyYmQ4Ny4uNmMxZWYzM2E5YTMyODhmMWRhOTU1MWQwY2U3Y2Qw
ZDY2NDNjZjNlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDEyLTA2LTA2ICBKdWxp
ZW4gQ2hhZmZyYWl4ICA8amNoYWZmcmFpeEB3ZWJraXQub3JnPgorCisgICAgICAgIENhY2hlIGlz
U2VsZlBhaW50aW5nTGF5ZXIoKSBmb3IgYmV0dGVyIHBlcmZvcm1hbmNlCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04ODQ2NAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENvdmVyZWQgYnkgZXhpc3RpbmcgdGVz
dHMgKHJlcGFpbnQgdGVzdHMgYW1vbmcgdGhlbSkuCisKKyAgICAgICAgaXNTZWxmUGFpbnRpbmdM
YXllcigpIGhhcyBzaG93biB1cCBzZXZlcmFsIHRpbWVzIG9uIHNvbWUgc2Nyb2xsaW5nIGJlbmNo
bWFya3MgZHVlCisgICAgICAgIHRvIHRoZSBmdW5jdGlvbiBiZWluZyBjYWxsZWQgc2V2ZXJhbCB0
aW1lIHBlciBwYWludCBwaGFzZS4gVGhpcyBjaGFuZ2UgY2FjaGVzIHRoZQorICAgICAgICBib29s
ZWFuIGF0IHN0eWxlIGNoYW5nZSB0aW1lLgorICAgICAgICAKKyAgICAgICAgT24gaHR0cDovL2Rn
bGF6a292LmdpdGh1Yi5jb20vcGVyZm9ybWFuY2UtdGVzdHMvYmlnZ3JpZC5odG1sLCB0aGlzIG5l
YXJseSBzcGVlZC11cAorICAgICAgICBwYWludGluZyBieSAyIChsb3dlcmluZyB0aGUgdGltZSB0
YWtlbiB0byBwYWludCB0aGUgbmV3bHkgZXhwb3NlZCBhcmVhIHdoZW4gc2Nyb2xsaW5nCisgICAg
ICAgIG9uIGEgMTAsMDAwICogMTAwIHRhYmxlIGZyb20gOTVtcyB0byA1MG1zKS4KKworICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJM
YXllcjo6UmVuZGVyTGF5ZXIpOgorICAgICAgICBJbml0aWFsaXplZCBtX2lzU2VsZlBhaW50aW5n
TGF5ZXIgaGVyZS4KKworICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXIp
OgorICAgICAgICBDaGFuZ2VkIHRoZSBvcmRlciBvZiB0aGUgY2hlY2tzIHRvIGdldCB0aGUgbW9y
ZSBsaWtlbHkgY2hlY2sgZmlyc3QuCisKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpz
aG91bGRCZVNlbGZQYWludGluZ0xheWVyKToKKyAgICAgICAgUmVuYW1lZCBmcm9tIGlzU2VsZlBh
aW50aW5nTGF5ZXIgdG8gbWFrZSBtX2lzTm9ybWFsRmxvd09ubHkuCisKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckxheWVyOjpzdHlsZUNoYW5nZWQpOgorICAgICAgICBBZGRlZCBjb2RlIHRvIHVw
ZGF0ZSBvdXIgY2FjaGVkIG1faXNTZWxmUGFpbnRpbmdMYXllci4KKworICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJMYXllci5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmlzU2Vs
ZlBhaW50aW5nTGF5ZXIpOgorICAgICAgICBDaGFuZ2VkIHRvIHJldHVybiBtX2lzU2VsZlBhaW50
aW5nTGF5ZXIuCisKIDIwMTItMDYtMDUgIEVyaWsgQXJ2aWRzc29uICA8YXJ2QGNocm9taXVtLm9y
Zz4KIAogICAgICAgICBbVjhdIEltcHJvdmUgdmFyaWFibGUgcmVzb2x1dGlvbiBvcmRlciBvbiB3
aW5kb3cKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCmluZGV4IDA1ZDli
YTU3N2UyNmI0OTcwZGU0ZTBjNGYxMmMzMzczMWE0MTUyMzguLjA4NmI4MGJhMWY1MzY0YjBkYTkx
ZmY4ZDAyNGM4MmRkODVhZmFiYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyLmNwcApAQCAtMTY5LDYgKzE2OSw4IEBAIFJlbmRlckxheWVyOjpSZW5kZXJMYXllcihSZW5k
ZXJCb3hNb2RlbE9iamVjdCogcmVuZGVyZXIpCiAgICAgLCBtX3Jlc2l6ZXIoMCkKIHsKICAgICBt
X2lzTm9ybWFsRmxvd09ubHkgPSBzaG91bGRCZU5vcm1hbEZsb3dPbmx5KCk7CisgICAgbV9pc1Nl
bGZQYWludGluZ0xheWVyID0gc2hvdWxkQmVTZWxmUGFpbnRpbmdMYXllcigpOworCiAgICAgLy8g
Tm9uLXN0YWNraW5nIGNvbnRleHRzIHNob3VsZCBoYXZlIGVtcHR5IHotb3JkZXIgbGlzdHMuIEFz
IHRoaXMgaXMgYWxyZWFkeSB0aGUgY2FzZSwKICAgICAvLyB0aGVyZSBpcyBubyBuZWVkIHRvIGRp
cnR5IC8gcmVjb21wdXRlIHRoZXNlIGxpc3RzLgogICAgIG1fek9yZGVyTGlzdHNEaXJ0eSA9IGlz
U3RhY2tpbmdDb250ZXh0KCk7CkBAIC0yODc5LDYgKzI4ODEsMTAgQEAgdm9pZCBSZW5kZXJMYXll
cjo6cGFpbnRMYXllcihSZW5kZXJMYXllciogcm9vdExheWVyLCBHcmFwaGljc0NvbnRleHQqIGNv
bnRleHQsCiAgICAgfQogI2VuZGlmCiAKKyAgICAvLyBOb24gc2VsZi1wYWludGluZyBsZWFmIGxh
eWVycyBkb24ndCBuZWVkIHRvIGJlIHBhaW50ZWQgYXMgdGhlaXIgcmVuZGVyZXIoKSBzaG91bGQg
cHJvcGVybHkgcGFpbnQgaXRzZWxmLgorICAgIGlmICghaXNTZWxmUGFpbnRpbmdMYXllcigpICYm
ICFmaXJzdENoaWxkKCkpCisgICAgICAgIHJldHVybjsKKwogICAgIGlmIChzaG91bGRTdXBwcmVz
c1BhaW50aW5nTGF5ZXIodGhpcykpCiAgICAgICAgIHJldHVybjsKICAgICAKQEAgLTI4ODYsMTAg
KzI4OTIsNiBAQCB2b2lkIFJlbmRlckxheWVyOjpwYWludExheWVyKFJlbmRlckxheWVyKiByb290
TGF5ZXIsIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwKICAgICBpZiAoIXJlbmRlcmVyKCktPm9w
YWNpdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgLy8gTm9uIHNlbGYtcGFpbnRpbmcgbGVh
ZiBsYXllcnMgZG9uJ3QgbmVlZCB0byBiZSBwYWludGVkIGFzIHRoZWlyIHJlbmRlcmVyKCkgc2hv
dWxkIHByb3Blcmx5IHBhaW50IGl0c2VsZi4KLSAgICBpZiAoIWlzU2VsZlBhaW50aW5nTGF5ZXIo
KSAmJiAhZmlyc3RDaGlsZCgpKQotICAgICAgICByZXR1cm47Ci0KICAgICBpZiAocGFpbnRzV2l0
aFRyYW5zcGFyZW5jeShwYWludEJlaGF2aW9yKSkKICAgICAgICAgcGFpbnRGbGFncyB8PSBQYWlu
dExheWVySGF2ZVRyYW5zcGFyZW5jeTsKIApAQCAtNDY1OSw3ICs0NjYxLDcgQEAgYm9vbCBSZW5k
ZXJMYXllcjo6c2hvdWxkQmVOb3JtYWxGbG93T25seSgpIGNvbnN0CiAgICAgICAgICAgICAmJiAh
aXNUcmFuc3BhcmVudCgpOwogfQogCi1ib29sIFJlbmRlckxheWVyOjppc1NlbGZQYWludGluZ0xh
eWVyKCkgY29uc3QKK2Jvb2wgUmVuZGVyTGF5ZXI6OnNob3VsZEJlU2VsZlBhaW50aW5nTGF5ZXIo
KSBjb25zdAogewogICAgIHJldHVybiAhaXNOb3JtYWxGbG93T25seSgpCiAgICAgICAgIHx8IHJl
bmRlcmVyKCktPmhhc1JlZmxlY3Rpb24oKQpAQCAtNDc0Miw2ICs0NzQ0LDggQEAgdm9pZCBSZW5k
ZXJMYXllcjo6c3R5bGVDaGFuZ2VkKFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUq
IG9sZFN0eWxlKQogICAgICAgICBkaXJ0eVN0YWNraW5nQ29udGV4dFpPcmRlckxpc3RzKCk7CiAg
ICAgfQogCisgICAgbV9pc1NlbGZQYWludGluZ0xheWVyID0gc2hvdWxkQmVTZWxmUGFpbnRpbmdM
YXllcigpOworCiAgICAgaWYgKHJlbmRlcmVyKCktPnN0eWxlKCktPm92ZXJmbG93WCgpID09IE9N
QVJRVUVFICYmIHJlbmRlcmVyKCktPnN0eWxlKCktPm1hcnF1ZWVCZWhhdmlvcigpICE9IE1OT05F
ICYmIHJlbmRlcmVyKCktPmlzQm94KCkpIHsKICAgICAgICAgaWYgKCFtX21hcnF1ZWUpCiAgICAg
ICAgICAgICBtX21hcnF1ZWUgPSBuZXcgUmVuZGVyTWFycXVlZSh0aGlzKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyLmgKaW5kZXggNDg1MmZmMGI0YWQwOGMyMGMzZjVlOGY0YTJl
NmE3ZWFhYjQ4YzFiMi4uZTg5NGZjYWQ2MzBlMzFlM2E3ZGZmZmFhNGQ5M2E0OGUzOTg5NDBlZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgKQEAgLTI3NSw3ICsyNzUsNyBA
QCBwdWJsaWM6CiAgICAgUmVuZGVyTWFycXVlZSogbWFycXVlZSgpIGNvbnN0IHsgcmV0dXJuIG1f
bWFycXVlZTsgfQogCiAgICAgYm9vbCBpc05vcm1hbEZsb3dPbmx5KCkgY29uc3QgeyByZXR1cm4g
bV9pc05vcm1hbEZsb3dPbmx5OyB9Ci0gICAgYm9vbCBpc1NlbGZQYWludGluZ0xheWVyKCkgY29u
c3Q7CisgICAgYm9vbCBpc1NlbGZQYWludGluZ0xheWVyKCkgY29uc3QgeyByZXR1cm4gbV9pc1Nl
bGZQYWludGluZ0xheWVyOyB9CiAKICAgICBib29sIGNhbm5vdEJsaXRUb1dpbmRvdygpIGNvbnN0
OwogCkBAIC03MjksNyArNzI5LDkgQEAgcHJpdmF0ZToKICAgICBib29sIGhhc0hvcml6b250YWxP
dmVyZmxvdygpIGNvbnN0OwogICAgIGJvb2wgaGFzVmVydGljYWxPdmVyZmxvdygpIGNvbnN0Owog
Ci0gICAgYm9vbCBzaG91bGRCZU5vcm1hbEZsb3dPbmx5KCkgY29uc3Q7IAorICAgIGJvb2wgc2hv
dWxkQmVOb3JtYWxGbG93T25seSgpIGNvbnN0OworCisgICAgYm9vbCBzaG91bGRCZVNlbGZQYWlu
dGluZ0xheWVyKCkgY29uc3Q7CiAKICAgICBpbnQgc2Nyb2xsUG9zaXRpb24oU2Nyb2xsYmFyKikg
Y29uc3Q7CiAgICAgCkBAIC04NTYsNiArODU4LDggQEAgcHJvdGVjdGVkOgogICAgIGJvb2wgbV9u
b3JtYWxGbG93TGlzdERpcnR5OiAxOwogICAgIGJvb2wgbV9pc05vcm1hbEZsb3dPbmx5IDogMTsK
IAorICAgIGJvb2wgbV9pc1NlbGZQYWludGluZ0xheWVyIDogMTsKKwogICAgIGJvb2wgbV91c2Vk
VHJhbnNwYXJlbmN5IDogMTsgLy8gVHJhY2tzIHdoZXRoZXIgd2UgbmVlZCB0byBjbG9zZSBhIHRy
YW5zcGFyZW50IGxheWVyLCBpLmUuLCB3aGV0aGVyCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyB3ZSBlbmRlZCB1cCBwYWludGluZyB0aGlzIGxheWVyIG9yIGFueSBkZXNjZW5k
YW50cyAoYW5kIHRoZXJlZm9yZSBuZWVkIHRvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyBibGVuZCkuCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>