<?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>64862</bug_id>
          
          <creation_ts>2011-07-20 04:32:40 -0700</creation_ts>
          <short_desc>Switch isFixedSize() virtual function to inline one.</short_desc>
          <delta_ts>2012-01-08 15:28:52 -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>CSS</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>DUPLICATE</resolution>
          <dup_id>71824</dup_id>
          
          <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>64262</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Tamas Czene">tczene</reporter>
          <assigned_to name="David Barr">davidbarr</assigned_to>
          <cc>davidbarr</cc>
    
    <cc>hyatt</cc>
    
    <cc>loki</cc>
    
    <cc>shanestephens</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>439737</commentid>
    <comment_count>0</comment_count>
    <who name="Tamas Czene">tczene</who>
    <bug_when>2011-07-20 04:32:40 -0700</bug_when>
    <thetext>Removing the virtual functions - removing the calls - makes measurable performance progression on CSS.

We measured the following performance progressions on some very popular websites, for example:
msn.com: 33,6%
yandex.ru: 3%</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>439739</commentid>
    <comment_count>1</comment_count>
      <attachid>101448</attachid>
    <who name="Tamas Czene">tczene</who>
    <bug_when>2011-07-20 04:38:03 -0700</bug_when>
    <thetext>Created attachment 101448
Switch isFixedSize virtual function to inline one.

The number of variables created during the test.
m_isFixedSize 725
The max number of variables in the memory during the test.
m_isFixedsize 57</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>439968</commentid>
    <comment_count>2</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2011-07-20 13:25:31 -0700</bug_when>
    <thetext>See my comments in https://bugs.webkit.org/show_bug.cgi?id=64262.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>465966</commentid>
    <comment_count>3</comment_count>
      <attachid>101448</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-09-12 17:01:08 -0700</bug_when>
    <thetext>Comment on attachment 101448
Switch isFixedSize virtual function to inline one.

Please respond to Dave Hyatt.  Again, memory hit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>482055</commentid>
    <comment_count>4</comment_count>
    <who name="David Barr">davidbarr</who>
    <bug_when>2011-10-11 17:09:37 -0700</bug_when>
    <thetext>I believe there are some wasted bits that could be put to good use for a perf enhancement without increasing the memory overhead. Please give a chance to upload an RFC patch and some repeatable numbers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>487036</commentid>
    <comment_count>5</comment_count>
    <who name="David Barr">davidbarr</who>
    <bug_when>2011-10-19 14:55:38 -0700</bug_when>
    <thetext>View in context: https://bugs.webkit.org/attachment.cgi?id=101448&amp;action=review

Does this change result in a measurable performance progression? 
After cleaning up, try PerformanceTests/Parser/html5-full-render.html
with 20 runs on tip of tree (ToT) with and without the patch.

&gt; Source/WebCore/css/CSSCanvasValue.h:52
&gt; +        m_isFixedSize = true;

I believe the preference is for a protected setter.

&gt; Source/WebCore/css/CSSImageGeneratorValue.h:31
&gt; +#include &lt;wtf/AlwaysInline.h&gt;

As mentioned on the related bugs, no need for AlwaysInline because the accessors are trivial functions.

&gt; Source/WebCore/css/CSSImageGeneratorValue.h:52
&gt; -    virtual bool isFixedSize() const { return false; }
&gt; +    ALWAYS_INLINE bool isFixedSize() const { return m_isFixedSize; }

Ditto.

&gt; Source/WebCore/css/CSSImageGeneratorValue.h:71
&gt;      RefPtr&lt;StyleGeneratedImage&gt; m_image;
&gt;      bool m_accessedImage;
&gt; +    bool m_isFixedSize;
&gt;  

As with https://bugs.webkit.org/show_bug.cgi?id=64865 there is almost a whole word of wasted bits in this structure already.
I suggest amending this patch to ensure that the bools are part of the same bitfield.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>493737</commentid>
    <comment_count>6</comment_count>
    <who name="David Barr">davidbarr</who>
    <bug_when>2011-10-31 21:44:58 -0700</bug_when>
    <thetext>Testing 20 runs with PerformanceTests/Parser/html5-full-render.html

At ToT:
Testing 6092696 byte document in 13 500000 byte chunks.
Running 20 times
Ignoring warm-up run (18914)
18792 18919 19019 19500 19449 19532 19488 19498 19525 19518
19451 19620 19572 19560 19372 19037 18872 18780 18834 19016

avg 19267.7
median 19450
stdev 303.52728048727346
min 18780
max 19620

With amended patch:
Testing 6092696 byte document in 13 500000 byte chunks.
Running 20 times
Ignoring warm-up run (20471)
18841 18862 18914 18809 19376 19510 19461 19442 19559 19440
19457 19532 19467 19506 19492 19050 18856 18782 18874 18791

avg 19201.05
median 19408
stdev 310.9341529970614
min 18782
max 19559

Parsing speeds at ToT seem to have doubled since the last time I ran this test.
Unfortunately, the variance also seems to have increased now swamping any
minor performance increment.
The progression between ToT and this patch is just 0.3% or 0.2 stdevs, so it
is not a clear winner.

It is worth noting that the only consumer of CSSImageGeneratorValue::isFixedSize()
is CSSImageGeneratorValue::generatedImage().
I would not expect it to be called often enough to produce a measurable penalty.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>531835</commentid>
    <comment_count>7</comment_count>
    <who name="David Barr">davidbarr</who>
    <bug_when>2012-01-08 15:22:25 -0800</bug_when>
    <thetext>The action requested in this bug was taken in:
http://trac.webkit.org/changeset/99577</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>531842</commentid>
    <comment_count>8</comment_count>
    <who name="David Barr">davidbarr</who>
    <bug_when>2012-01-08 15:28:52 -0800</bug_when>
    <thetext>

*** This bug has been marked as a duplicate of bug 71824 ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>101448</attachid>
            <date>2011-07-20 04:38:03 -0700</date>
            <delta_ts>2011-09-12 17:01:08 -0700</delta_ts>
            <desc>Switch isFixedSize virtual function to inline one.</desc>
            <filename>0001-Switch-isFixedSize-virtual-function-to-inline-one.patch</filename>
            <type>text/plain</type>
            <size>3581</size>
            <attacher name="Tamas Czene">tczene</attacher>
            
              <data encoding="base64">RnJvbSA0MTM3ZjI1ZTJiY2I0NjRiNGM5OThlMTAyZmI1ODdlOTY5Mzc4NWFlIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBUYW1hcyBDemVuZSA8Q3plbmUuVGFtYXNAc3R1ZC51LXN6ZWdl
ZC5odT4KRGF0ZTogV2VkLCAyMCBKdWwgMjAxMSAxMzozMzo1NiArMDIwMApTdWJqZWN0OiBbUEFU
Q0hdIFN3aXRjaCBpc0ZpeGVkU2l6ZSgpIHZpcnR1YWwgZnVuY3Rpb24gdG8gaW5saW5lIG9uZS4K
Ci0tLQogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgIHwgICAx
NiArKysrKysrKysrKysrKysrCiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FudmFzVmFsdWUuaCAg
ICAgICAgICAgfCAgICAyICstCiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VHZW5lcmF0b3JW
YWx1ZS5jcHAgfCAgICAxICsKIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZUdlbmVyYXRvclZh
bHVlLmggICB8ICAgIDQgKysrLQogNCBmaWxlcyBjaGFuZ2VkLCAyMSBpbnNlcnRpb25zKCspLCAy
IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBmZDZhNzVkLi5kMjMwMGFlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTkgQEAKKzIwMTEtMDctMjAgIFRhbWFzIEN6ZW5lICA8Q3plbmUuVGFtYXNA
c3R1ZC51LXN6ZWdlZC5odT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBTd2l0Y2ggaXNGaXhlZFNpemUoKSB2aXJ0dWFsIGZ1bmN0aW9uIHRvIGlubGlu
ZSBvbmUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02
NDg2MgorCisgICAgICAgIFJlbW92aW5nIHRoZSB2aXJ0dWFsIGZ1bmN0aW9ucyAtIHJlbW92aW5n
IHRoZSBjYWxscyAtIG1ha2VzIG1lYXN1cmFibGUgcGVyZm9ybWFuY2UgcHJvZ3Jlc3Npb24gb24g
Q1NTLgorCisgICAgICAgICogY3NzL0NTU0NhbnZhc1ZhbHVlLmg6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NDYW52YXNWYWx1ZTo6Q1NTQ2FudmFzVmFsdWUpOlJlbW92ZSB2aXJ0dWFsIGZ1bmN0aW9u
LCBhZGQgYWRkaXRpb25hbCB2YWx1ZSB0byB0aGUgdmFyaWFibGUuCisgICAgICAgICogY3NzL0NT
U0ltYWdlR2VuZXJhdG9yVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTSW1hZ2VHZW5l
cmF0b3JWYWx1ZTo6Q1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZSk6SW5pdGlhbGl6ZSB0aGUgdmFyaWFi
bGUuCisgICAgICAgICogY3NzL0NTU0ltYWdlR2VuZXJhdG9yVmFsdWUuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkNTU0ltYWdlR2VuZXJhdG9yVmFsdWU6OmlzRml4ZWRTaXplKTpTd2l0Y2ggdmlydHVh
bCBmdW5jdGlvbiB0byBpbmxpbmUgZnVuY3Rpb24uCisKIDIwMTEtMDctMjAgIFNoZXJpZmYgQm90
ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJv
bGxpbmcgb3V0IHI5MTI4NS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDYW52
YXNWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbnZhc1ZhbHVlLmgKaW5kZXggMjdi
OGYyYi4uYjZjNmE5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbnZhc1Zh
bHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbnZhc1ZhbHVlLmgKQEAgLTQxLDcg
KzQxLDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgU3RyaW5nIGNzc1RleHQoKSBjb25zdDsKIAog
ICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJbWFnZT4gaW1hZ2UoUmVuZGVyT2JqZWN0KiwgY29uc3Qg
SW50U2l6ZSYpOwotICAgIHZpcnR1YWwgYm9vbCBpc0ZpeGVkU2l6ZSgpIGNvbnN0IHsgcmV0dXJu
IHRydWU7IH0KICAgICB2aXJ0dWFsIEludFNpemUgZml4ZWRTaXplKGNvbnN0IFJlbmRlck9iamVj
dCopOwogCiAgICAgdm9pZCBzZXROYW1lKGNvbnN0IFN0cmluZyYgbmFtZSkgeyBtX25hbWUgPSBu
YW1lOyB9CkBAIC01MCw2ICs0OSw3IEBAIHByaXZhdGU6CiAgICAgQ1NTQ2FudmFzVmFsdWUoKQog
ICAgICAgICA6IG1fZWxlbWVudCgwKQogICAgIHsKKyAgICAgICAgbV9pc0ZpeGVkU2l6ZSA9IHRy
dWU7CiAgICAgfQogCiAgICAgdmlydHVhbCB2b2lkIGNhbnZhc0NoYW5nZWQoSFRNTENhbnZhc0Vs
ZW1lbnQqLCBjb25zdCBGbG9hdFJlY3QmIGNoYW5nZWRSZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZUdlbmVyYXRvclZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NJbWFnZUdlbmVyYXRvclZhbHVlLmNwcAppbmRleCA3ODRmNDM4Li43YTE4Y2I0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlR2VuZXJhdG9yVmFsdWUuY3BwCkBAIC0z
Nyw2ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1
ZTo6Q1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZSgpCiA6IG1fYWNjZXNzZWRJbWFnZShmYWxzZSkKKywg
bV9pc0ZpeGVkU2l6ZShmYWxzZSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0ltYWdlR2VuZXJhdG9yVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFn
ZUdlbmVyYXRvclZhbHVlLmgKaW5kZXggNDY1MjRmYi4uMDM3YTg3YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlR2VuZXJhdG9yVmFsdWUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZS5oCkBAIC0yOCw2ICsyOCw3IEBACiAKICNp
bmNsdWRlICJDU1NWYWx1ZS5oIgogI2luY2x1ZGUgIkludFNpemVIYXNoLmgiCisjaW5jbHVkZSA8
d3RmL0Fsd2F5c0lubGluZS5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8
d3RmL0hhc2hDb3VudGVkU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgpAQCAtNDgsNyAr
NDksNyBAQCBwdWJsaWM6CiAKICAgICBTdHlsZUdlbmVyYXRlZEltYWdlKiBnZW5lcmF0ZWRJbWFn
ZSgpOwogICAgIAotICAgIHZpcnR1YWwgYm9vbCBpc0ZpeGVkU2l6ZSgpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9CisgICAgQUxXQVlTX0lOTElORSBib29sIGlzRml4ZWRTaXplKCkgY29uc3QgeyBy
ZXR1cm4gbV9pc0ZpeGVkU2l6ZTsgfQogICAgIHZpcnR1YWwgSW50U2l6ZSBmaXhlZFNpemUoY29u
c3QgUmVuZGVyT2JqZWN0KikgeyByZXR1cm4gSW50U2l6ZSgpOyB9CiAgICAgCiBwcm90ZWN0ZWQ6
CkBAIC02Niw2ICs2Nyw3IEBAIHByb3RlY3RlZDoKICAgICAKICAgICBSZWZQdHI8U3R5bGVHZW5l
cmF0ZWRJbWFnZT4gbV9pbWFnZTsKICAgICBib29sIG1fYWNjZXNzZWRJbWFnZTsKKyAgICBib29s
IG1faXNGaXhlZFNpemU7CiAKIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIGlzSW1hZ2VHZW5l
cmF0b3JWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KLS0gCjEuNy4xCgo=
</data>
<flag name="review"
          id="96363"
          type_id="1"
          status="-"
          setter="eric"
    />
          </attachment>
      

    </bug>

</bugzilla>