<?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>43718</bug_id>
          
          <creation_ts>2010-08-09 05:01:19 -0700</creation_ts>
          <short_desc>Canvas: Fast-path for setting the already set color with setStrokeColor() and setFillColor()</short_desc>
          <delta_ts>2010-08-09 09:03:55 -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>WebCore Misc.</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>Performance</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Andreas Kling">kling</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>darin</cc>
    
    <cc>oliver</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>262100</commentid>
    <comment_count>0</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2010-08-09 05:01:19 -0700</bug_when>
    <thetext>Some JS demos, for example &quot;Monster&quot; at Chrome Experiments, use the WebKit-specific color setters of CanvasRenderingContext2D.

For this particular demo, roughly 5% of the calls to setFillColor() have the same color as is already set on the context. We should detect this and make an early return before creating any CanvasStyle objects (or calling into GraphicsContext.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>262102</commentid>
    <comment_count>1</comment_count>
      <attachid>63887</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2010-08-09 05:06:32 -0700</bug_when>
    <thetext>Created attachment 63887
Proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>262103</commentid>
    <comment_count>2</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2010-08-09 05:07:01 -0700</bug_when>
    <thetext>The &quot;Monster&quot; demo mentioned in bug description:
http://www.chromeexperiments.com/detail/monster/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>262120</commentid>
    <comment_count>3</comment_count>
      <attachid>63887</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-08-09 06:23:13 -0700</bug_when>
    <thetext>Comment on attachment 63887
Proposed patch

Looks good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>262127</commentid>
    <comment_count>4</comment_count>
      <attachid>63887</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2010-08-09 06:56:55 -0700</bug_when>
    <thetext>Comment on attachment 63887
Proposed patch

Clearing flags on attachment: 63887

Committed r64980: &lt;http://trac.webkit.org/changeset/64980&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>262128</commentid>
    <comment_count>5</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2010-08-09 06:57:05 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>262165</commentid>
    <comment_count>6</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-08-09 09:03:55 -0700</bug_when>
    <thetext>A side comment:

I think it&apos;s dangerous to overload and treat floating point values as RGBA or CMYKA just based on the number of arguments. Thus, these functions should have RGBA and CMYKA in their names. Similarly, the create functions for CanvasStyle should have RGBA and CMYKA and such in their names too.

The reason the functions in CanvasStyle used overloading historically is that they were constructors. Tis is one advantage of the create functions over direct calls to the constructors. We can leave the overloading trick to the constructors only.

CanvasRenderingContext2D has to do this overloading because that&apos;s in the specification, but internally we should not repeat that mistake.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>63887</attachid>
            <date>2010-08-09 05:06:32 -0700</date>
            <delta_ts>2010-08-09 06:56:55 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>bug-43718.diff</filename>
            <type>text/plain</type>
            <size>5190</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZWYyYjJjOS4uM2NjNWJiYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAxMC0wOC0wOSAgQW5kcmVhcyBLbGlu
ZyAgPGFuZHJlYXMua2xpbmdAbm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIENhbnZhczogRmFzdC1wYXRoIGZvciBzZXR0aW5nIHRoZSBh
bHJlYWR5IHNldCBjb2xvciB3aXRoIHNldFN0cm9rZUNvbG9yKCkgYW5kIHNldEZpbGxDb2xvcigp
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MzcxOAor
CisgICAgICAgIEF2b2lkIGNyZWF0aW5nIENhbnZhc1N0eWxlIG9iamVjdHMgd2hlbiBzZXR0aW5n
IHRoZSBzYW1lIGZpbGwgb3Igc3Ryb2tlIGNvbG9yIHVzaW5nCisgICAgICAgIHRoZSBXZWJLaXQt
c3BlY2lmaWMgc2V0dGVycyBvZiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuCisKKyAgICAgICAg
KiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRTdHJva2VDb2xvcik6CisgICAgICAg
IChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldEZpbGxDb2xvcik6CisgICAg
ICAgICogaHRtbC9jYW52YXMvQ2FudmFzU3R5bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2Fu
dmFzU3R5bGU6OmlzRXF1aXZhbGVudENvbG9yKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52
YXNTdHlsZS5oOiBBZGRlZCBDYW52YXNTdHlsZTo6aXNFcXVpdmFsZW50Q29sb3IoKSBvdmVybG9h
ZHMKKyAgICAgICAgZm9yIFJHQkEgYW5kIENNWUtBIGNoYW5uZWwgdmFsdWVzLgorCiAyMDEwLTA4
LTA5ICBJbHlhIFRpa2hvbm92c2t5ICA8bG9pc2xvQGNocm9taXVtLm9yZz4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBZdXJ5IFNlbWlraGF0c2t5LgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL2Nh
bnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwIGIvV2ViQ29yZS9odG1sL2NhbnZhcy9D
YW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCmluZGV4IDBkYWM2YWYuLjU1OWRkZGEgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAor
KysgYi9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKQEAg
LTU1Niw2ICs1NTYsOCBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0U3Ryb2tl
Q29sb3IoY29uc3QgU3RyaW5nJiBjb2xvcikKIAogdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0
MkQ6OnNldFN0cm9rZUNvbG9yKGZsb2F0IGdyYXlMZXZlbCkKIHsKKyAgICBpZiAoc3RhdGUoKS5t
X3N0cm9rZVN0eWxlICYmIHN0YXRlKCkubV9zdHJva2VTdHlsZS0+aXNFcXVpdmFsZW50Q29sb3Io
Z3JheUxldmVsLCBncmF5TGV2ZWwsIGdyYXlMZXZlbCwgMS4wZikpCisgICAgICAgIHJldHVybjsK
ICAgICBzZXRTdHJva2VTdHlsZShDYW52YXNTdHlsZTo6Y3JlYXRlKGdyYXlMZXZlbCwgMSkpOwog
fQogCkBAIC01NjYsMTYgKzU2OCwyMiBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6
c2V0U3Ryb2tlQ29sb3IoY29uc3QgU3RyaW5nJiBjb2xvciwgZmxvYXQgYWxwaGEpCiAKIHZvaWQg
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRTdHJva2VDb2xvcihmbG9hdCBncmF5TGV2ZWws
IGZsb2F0IGFscGhhKQogeworICAgIGlmIChzdGF0ZSgpLm1fc3Ryb2tlU3R5bGUgJiYgc3RhdGUo
KS5tX3N0cm9rZVN0eWxlLT5pc0VxdWl2YWxlbnRDb2xvcihncmF5TGV2ZWwsIGdyYXlMZXZlbCwg
Z3JheUxldmVsLCBhbHBoYSkpCisgICAgICAgIHJldHVybjsKICAgICBzZXRTdHJva2VTdHlsZShD
YW52YXNTdHlsZTo6Y3JlYXRlKGdyYXlMZXZlbCwgYWxwaGEpKTsKIH0KIAogdm9pZCBDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQ6OnNldFN0cm9rZUNvbG9yKGZsb2F0IHIsIGZsb2F0IGcsIGZsb2F0
IGIsIGZsb2F0IGEpCiB7CisgICAgaWYgKHN0YXRlKCkubV9zdHJva2VTdHlsZSAmJiBzdGF0ZSgp
Lm1fc3Ryb2tlU3R5bGUtPmlzRXF1aXZhbGVudENvbG9yKHIsIGcsIGIsIGEpKQorICAgICAgICBy
ZXR1cm47CiAgICAgc2V0U3Ryb2tlU3R5bGUoQ2FudmFzU3R5bGU6OmNyZWF0ZShyLCBnLCBiLCBh
KSk7CiB9CiAKIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRTdHJva2VDb2xvcihm
bG9hdCBjLCBmbG9hdCBtLCBmbG9hdCB5LCBmbG9hdCBrLCBmbG9hdCBhKQogeworICAgIGlmIChz
dGF0ZSgpLm1fc3Ryb2tlU3R5bGUgJiYgc3RhdGUoKS5tX3N0cm9rZVN0eWxlLT5pc0VxdWl2YWxl
bnRDb2xvcihjLCBtLCB5LCBrLCBhKSkKKyAgICAgICAgcmV0dXJuOwogICAgIHNldFN0cm9rZVN0
eWxlKENhbnZhc1N0eWxlOjpjcmVhdGUoYywgbSwgeSwgaywgYSkpOwogfQogCkBAIC01ODksNiAr
NTk3LDggQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldEZpbGxDb2xvcihjb25z
dCBTdHJpbmcmIGNvbG9yKQogCiB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0Rmls
bENvbG9yKGZsb2F0IGdyYXlMZXZlbCkKIHsKKyAgICBpZiAoc3RhdGUoKS5tX2ZpbGxTdHlsZSAm
JiBzdGF0ZSgpLm1fZmlsbFN0eWxlLT5pc0VxdWl2YWxlbnRDb2xvcihncmF5TGV2ZWwsIGdyYXlM
ZXZlbCwgZ3JheUxldmVsLCAxLjBmKSkKKyAgICAgICAgcmV0dXJuOwogICAgIHNldEZpbGxTdHls
ZShDYW52YXNTdHlsZTo6Y3JlYXRlKGdyYXlMZXZlbCwgMSkpOwogfQogCkBAIC01OTksMTYgKzYw
OSwyMiBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0RmlsbENvbG9yKGNvbnN0
IFN0cmluZyYgY29sb3IsIGZsb2F0IGFscGhhKQogCiB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyRDo6c2V0RmlsbENvbG9yKGZsb2F0IGdyYXlMZXZlbCwgZmxvYXQgYWxwaGEpCiB7CisgICAg
aWYgKHN0YXRlKCkubV9maWxsU3R5bGUgJiYgc3RhdGUoKS5tX2ZpbGxTdHlsZS0+aXNFcXVpdmFs
ZW50Q29sb3IoZ3JheUxldmVsLCBncmF5TGV2ZWwsIGdyYXlMZXZlbCwgYWxwaGEpKQorICAgICAg
ICByZXR1cm47CiAgICAgc2V0RmlsbFN0eWxlKENhbnZhc1N0eWxlOjpjcmVhdGUoZ3JheUxldmVs
LCBhbHBoYSkpOwogfQogCiB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0RmlsbENv
bG9yKGZsb2F0IHIsIGZsb2F0IGcsIGZsb2F0IGIsIGZsb2F0IGEpCiB7CisgICAgaWYgKHN0YXRl
KCkubV9maWxsU3R5bGUgJiYgc3RhdGUoKS5tX2ZpbGxTdHlsZS0+aXNFcXVpdmFsZW50Q29sb3Io
ciwgZywgYiwgYSkpCisgICAgICAgIHJldHVybjsKICAgICBzZXRGaWxsU3R5bGUoQ2FudmFzU3R5
bGU6OmNyZWF0ZShyLCBnLCBiLCBhKSk7CiB9CiAKIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEOjpzZXRGaWxsQ29sb3IoZmxvYXQgYywgZmxvYXQgbSwgZmxvYXQgeSwgZmxvYXQgaywgZmxv
YXQgYSkKIHsKKyAgICBpZiAoc3RhdGUoKS5tX2ZpbGxTdHlsZSAmJiBzdGF0ZSgpLm1fZmlsbFN0
eWxlLT5pc0VxdWl2YWxlbnRDb2xvcihjLCBtLCB5LCBrLCBhKSkKKyAgICAgICAgcmV0dXJuOwog
ICAgIHNldEZpbGxTdHlsZShDYW52YXNTdHlsZTo6Y3JlYXRlKGMsIG0sIHksIGssIGEpKTsKIH0K
IApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNTdHlsZS5jcHAgYi9XZWJD
b3JlL2h0bWwvY2FudmFzL0NhbnZhc1N0eWxlLmNwcAppbmRleCAxYWU1MjM2Li41MmIzMWM4IDEw
MDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1N0eWxlLmNwcAorKysgYi9XZWJD
b3JlL2h0bWwvY2FudmFzL0NhbnZhc1N0eWxlLmNwcApAQCAtMTQ0LDYgKzE0NCwyNiBAQCBib29s
IENhbnZhc1N0eWxlOjppc0VxdWl2YWxlbnRDb2xvcihjb25zdCBDYW52YXNTdHlsZSYgb3RoZXIp
IGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCitib29sIENhbnZhc1N0eWxlOjppc0VxdWl2
YWxlbnRDb2xvcihmbG9hdCByLCBmbG9hdCBnLCBmbG9hdCBiLCBmbG9hdCBhKSBjb25zdAorewor
ICAgIGlmIChtX3R5cGUgIT0gUkdCQSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0
dXJuIG1fcmdiYSA9PSBtYWtlUkdCQTMyRnJvbUZsb2F0cyhyLCBnLCBiLCBhKTsKK30KKworYm9v
bCBDYW52YXNTdHlsZTo6aXNFcXVpdmFsZW50Q29sb3IoZmxvYXQgYywgZmxvYXQgbSwgZmxvYXQg
eSwgZmxvYXQgaywgZmxvYXQgYSkgY29uc3QKK3sKKyAgICBpZiAobV90eXBlICE9IENNWUtBKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gYyA9PSBtX2NteWthLmMKKyAgICAg
ICAgJiYgbSA9PSBtX2NteWthLm0KKyAgICAgICAgJiYgeSA9PSBtX2NteWthLnkKKyAgICAgICAg
JiYgayA9PSBtX2NteWthLmsKKyAgICAgICAgJiYgYSA9PSBtX2NteWthLmE7Cit9CisKIHZvaWQg
Q2FudmFzU3R5bGU6OmFwcGx5U3Ryb2tlQ29sb3IoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0KQog
ewogICAgIGlmICghY29udGV4dCkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2Fu
dmFzU3R5bGUuaCBiL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzU3R5bGUuaAppbmRleCA3NmJh
NmVmLi44ZTQ3ZTYzIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1N0eWxl
LmgKKysrIGIvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNTdHlsZS5oCkBAIC01Niw2ICs1Niw4
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBhcHBseVN0cm9rZUNvbG9yKEdy
YXBoaWNzQ29udGV4dCopOwogCiAgICAgICAgIGJvb2wgaXNFcXVpdmFsZW50Q29sb3IoY29uc3Qg
Q2FudmFzU3R5bGUmKSBjb25zdDsKKyAgICAgICAgYm9vbCBpc0VxdWl2YWxlbnRDb2xvcihmbG9h
dCByLCBmbG9hdCBnLCBmbG9hdCBiLCBmbG9hdCBhKSBjb25zdDsKKyAgICAgICAgYm9vbCBpc0Vx
dWl2YWxlbnRDb2xvcihmbG9hdCBjLCBmbG9hdCBtLCBmbG9hdCB5LCBmbG9hdCBrLCBmbG9hdCBh
KSBjb25zdDsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIENhbnZhc1N0eWxlKFJHQkEzMiByZ2Jh
KTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>