<?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>57843</bug_id>
          
          <creation_ts>2011-04-05 07:22:14 -0700</creation_ts>
          <short_desc>Switch from Vector&lt;UChar&gt; to StringBuilder in dom/</short_desc>
          <delta_ts>2011-05-16 03:58:46 -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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>58420</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Nikolas Zimmermann">zimmermann</reporter>
          <assigned_to name="Nikolas Zimmermann">zimmermann</assigned_to>
          <cc>kling</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>379535</commentid>
    <comment_count>0</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2011-04-05 07:22:14 -0700</bug_when>
    <thetext>As discussed in bug 56099, we should deploy StringBuilder usage in WebCore where possible.
This bug addresses Source/WebCore/dom.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>379536</commentid>
    <comment_count>1</comment_count>
      <attachid>88225</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2011-04-05 07:24:13 -0700</bug_when>
    <thetext>Created attachment 88225
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>382369</commentid>
    <comment_count>2</comment_count>
      <attachid>88225</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2011-04-08 10:44:55 -0700</bug_when>
    <thetext>Comment on attachment 88225
Patch

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

&gt; Source/WebCore/dom/DatasetDOMStringMap.cpp:124
&gt; +            builder.append(toASCIILower(characters[i]));

Why characters[i] and not character? And why do you need the local regardless?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>382732</commentid>
    <comment_count>3</comment_count>
      <attachid>88225</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2011-04-08 23:31:09 -0700</bug_when>
    <thetext>Comment on attachment 88225
Patch

Sorry Andreas, I should have removed r? before. As discussed with Maciej, he prefers to optimize operator+ instead of having to change all callsites that append just 2 strings. I&apos;ll look into that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>402841</commentid>
    <comment_count>4</comment_count>
      <attachid>88225</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2011-05-12 07:58:12 -0700</bug_when>
    <thetext>Comment on attachment 88225
Patch

Marking patch for review again, now that 58420 is fixed. This patch is unrelated to the String operator+ optimization, and should go in as well.
Maciej, can you have another look please?
Vector&lt;UChar&gt; -&gt; StringBuilder should be fine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>402899</commentid>
    <comment_count>5</comment_count>
      <attachid>88225</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-05-12 09:45:20 -0700</bug_when>
    <thetext>Comment on attachment 88225
Patch

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

&gt;&gt; Source/WebCore/dom/DatasetDOMStringMap.cpp:124
&gt;&gt; +            builder.append(toASCIILower(characters[i]));
&gt; 
&gt; Why characters[i] and not character? And why do you need the local regardless?

I agree with both comments. There is little benefit to using the local, but if we do use it we should use it in all three places.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>404404</commentid>
    <comment_count>6</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2011-05-16 03:58:46 -0700</bug_when>
    <thetext>Thanks Darin, landed in r86553. Adressed Darin/Andreas comment in r86555 regarding the local variable.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>88225</attachid>
            <date>2011-04-05 07:24:13 -0700</date>
            <delta_ts>2011-05-12 09:45:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>Cleanup5.diff</filename>
            <type>text/plain</type>
            <size>6097</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDgyOTM2KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMTEtMDQtMDUgIE5pa29sYXMg
WmltbWVybWFubiAgPG56aW1tZXJtYW5uQHJpbS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU3dpdGNoIGZyb20gVmVjdG9yPFVDaGFyPiB0byBT
dHJpbmdCdWlsZGVyIGluIGRvbS8KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTU3ODQzCisKKyAgICAgICAgKiBkb20vRGF0YXNldERPTVN0cmluZ01hcC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0QXR0cmlidXRlTmFtZVRvUHJvcGVydHlOYW1l
KToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRQcm9wZXJ0eU5hbWVUb0F0dHJpYnV0ZU5hbWUp
OgorICAgICAgICAqIGRvbS9SYW5nZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSYW5nZTo6dG9T
dHJpbmcpOgorICAgICAgICAqIGRvbS9TY3JpcHRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNjcmlwdEVsZW1lbnQ6OnNjcmlwdENvbnRlbnQpOgorCiAyMDExLTA0LTA1ICBOaWtvbGFz
IFppbW1lcm1hbm4gIDxuemltbWVybWFubkByaW0uY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5
IEFuZHJlYXMgS2xpbmcuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRGF0YXNldERPTVN0cmlu
Z01hcC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RhdGFzZXRET01TdHJp
bmdNYXAuY3BwCShyZXZpc2lvbiA4MjkzNikKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9EYXRhc2V0
RE9NU3RyaW5nTWFwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1
ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJOYW1lZE5vZGVNYXAuaCIKICNpbmNsdWRl
IDx3dGYvQVNDSUlDVHlwZS5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC01MSwyMyArNTIsMjMgQEAgc3RhdGljIGJvb2wg
aXNWYWxpZEF0dHJpYnV0ZU5hbWUoY29uc3QgUwogCiBzdGF0aWMgU3RyaW5nIGNvbnZlcnRBdHRy
aWJ1dGVOYW1lVG9Qcm9wZXJ0eU5hbWUoY29uc3QgU3RyaW5nJiBuYW1lKQogewotICAgIFZlY3Rv
cjxVQ2hhcj4gbmV3U3RyaW5nQnVmZmVyOworICAgIFN0cmluZ0J1aWxkZXIgc3RyaW5nQnVpbGRl
cjsKIAogICAgIGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzID0gbmFtZS5jaGFyYWN0ZXJzKCk7CiAg
ICAgdW5zaWduZWQgbGVuZ3RoID0gbmFtZS5sZW5ndGgoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkg
PSA1OyBpIDwgbGVuZ3RoOyArK2kpIHsKICAgICAgICAgaWYgKGNoYXJhY3RlcnNbaV0gIT0gJy0n
KQotICAgICAgICAgICAgbmV3U3RyaW5nQnVmZmVyLmFwcGVuZChjaGFyYWN0ZXJzW2ldKTsKKyAg
ICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKGNoYXJhY3RlcnNbaV0pOwogICAgICAgICBl
bHNlIHsKICAgICAgICAgICAgIGlmICgoaSArIDEgPCBsZW5ndGgpICYmIGlzQVNDSUlMb3dlcihj
aGFyYWN0ZXJzW2kgKyAxXSkpIHsKLSAgICAgICAgICAgICAgICBuZXdTdHJpbmdCdWZmZXIuYXBw
ZW5kKHRvQVNDSUlVcHBlcihjaGFyYWN0ZXJzW2kgKyAxXSkpOworICAgICAgICAgICAgICAgIHN0
cmluZ0J1aWxkZXIuYXBwZW5kKHRvQVNDSUlVcHBlcihjaGFyYWN0ZXJzW2kgKyAxXSkpOwogICAg
ICAgICAgICAgICAgICsraTsKICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIG5l
d1N0cmluZ0J1ZmZlci5hcHBlbmQoY2hhcmFjdGVyc1tpXSk7CisgICAgICAgICAgICAgICAgc3Ry
aW5nQnVpbGRlci5hcHBlbmQoY2hhcmFjdGVyc1tpXSk7CiAgICAgICAgIH0KICAgICB9CiAKLSAg
ICByZXR1cm4gU3RyaW5nOjphZG9wdChuZXdTdHJpbmdCdWZmZXIpOworICAgIHJldHVybiBzdHJp
bmdCdWlsZGVyLnRvU3RyaW5nKCk7CiB9CiAKIHN0YXRpYyBib29sIHByb3BlcnR5TmFtZU1hdGNo
ZXNBdHRyaWJ1dGVOYW1lKGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lLCBjb25zdCBTdHJpbmcm
IGF0dHJpYnV0ZU5hbWUpCkBAIC0xMTEsMjggKzExMiwyMyBAQCBzdGF0aWMgYm9vbCBpc1ZhbGlk
UHJvcGVydHlOYW1lKGNvbnN0IFN0CiAKIHN0YXRpYyBTdHJpbmcgY29udmVydFByb3BlcnR5TmFt
ZVRvQXR0cmlidXRlTmFtZShjb25zdCBTdHJpbmcmIG5hbWUpCiB7Ci0gICAgVmVjdG9yPFVDaGFy
PiBuZXdTdHJpbmdCdWZmZXI7Ci0KLSAgICBuZXdTdHJpbmdCdWZmZXIuYXBwZW5kKCdkJyk7Ci0g
ICAgbmV3U3RyaW5nQnVmZmVyLmFwcGVuZCgnYScpOwotICAgIG5ld1N0cmluZ0J1ZmZlci5hcHBl
bmQoJ3QnKTsKLSAgICBuZXdTdHJpbmdCdWZmZXIuYXBwZW5kKCdhJyk7Ci0gICAgbmV3U3RyaW5n
QnVmZmVyLmFwcGVuZCgnLScpOworICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKKyAgICBidWls
ZGVyLmFwcGVuZCgiZGF0YS0iKTsKIAogICAgIGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzID0gbmFt
ZS5jaGFyYWN0ZXJzKCk7CiAgICAgdW5zaWduZWQgbGVuZ3RoID0gbmFtZS5sZW5ndGgoKTsKICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKLSAgICAgICAgaWYgKGlz
QVNDSUlVcHBlcihjaGFyYWN0ZXJzW2ldKSkgewotICAgICAgICAgICAgbmV3U3RyaW5nQnVmZmVy
LmFwcGVuZCgnLScpOwotICAgICAgICAgICAgbmV3U3RyaW5nQnVmZmVyLmFwcGVuZCh0b0FTQ0lJ
TG93ZXIoY2hhcmFjdGVyc1tpXSkpOworICAgICAgICBVQ2hhciBjaGFyYWN0ZXIgPSBjaGFyYWN0
ZXJzW2ldOworICAgICAgICBpZiAoaXNBU0NJSVVwcGVyKGNoYXJhY3RlcikpIHsKKyAgICAgICAg
ICAgIGJ1aWxkZXIuYXBwZW5kKCctJyk7CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCh0b0FT
Q0lJTG93ZXIoY2hhcmFjdGVyc1tpXSkpOwogICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIG5l
d1N0cmluZ0J1ZmZlci5hcHBlbmQoY2hhcmFjdGVyc1tpXSk7CisgICAgICAgICAgICBidWlsZGVy
LmFwcGVuZChjaGFyYWN0ZXIpOwogICAgIH0KIAotICAgIHJldHVybiBTdHJpbmc6OmFkb3B0KG5l
d1N0cmluZ0J1ZmZlcik7CisgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKIH0KIAotCiB2
b2lkIERhdGFzZXRET01TdHJpbmdNYXA6OnJlZigpCiB7CiAgICAgbV9lbGVtZW50LT5yZWYoKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9SYW5nZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvZG9tL1JhbmdlLmNwcAkocmV2aXNpb24gODI5MzYpCisrKyBTb3VyY2UvV2ViQ29y
ZS9kb20vUmFuZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVk
ZSAidmlzaWJsZV91bml0cy5oIgogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvQ1N0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KICNpbmNs
dWRlIDx3dGYvUmVmQ291bnRlZExlYWtDb3VudGVyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5o
PgogCkBAIC0xMDIxLDcgKzEwMjIsNyBAQCBTdHJpbmcgUmFuZ2U6OnRvU3RyaW5nKEV4Y2VwdGlv
bkNvZGUmIGVjCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKICAgICB9CiAKLSAgICBWZWN0b3I8
VUNoYXI+IHJlc3VsdDsKKyAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CiAKICAgICBOb2RlKiBw
YXN0TGFzdCA9IHBhc3RMYXN0Tm9kZSgpOwogICAgIGZvciAoTm9kZSogbiA9IGZpcnN0Tm9kZSgp
OyBuICE9IHBhc3RMYXN0OyBuID0gbi0+dHJhdmVyc2VOZXh0Tm9kZSgpKSB7CkBAIC0xMDMwLDEx
ICsxMDMxLDExIEBAIFN0cmluZyBSYW5nZTo6dG9TdHJpbmcoRXhjZXB0aW9uQ29kZSYgZWMKICAg
ICAgICAgICAgIGludCBsZW5ndGggPSBkYXRhLmxlbmd0aCgpOwogICAgICAgICAgICAgaW50IHN0
YXJ0ID0gKG4gPT0gbV9zdGFydC5jb250YWluZXIoKSkgPyBtaW4obWF4KDAsIG1fc3RhcnQub2Zm
c2V0KCkpLCBsZW5ndGgpIDogMDsKICAgICAgICAgICAgIGludCBlbmQgPSAobiA9PSBtX2VuZC5j
b250YWluZXIoKSkgPyBtaW4obWF4KHN0YXJ0LCBtX2VuZC5vZmZzZXQoKSksIGxlbmd0aCkgOiBs
ZW5ndGg7Ci0gICAgICAgICAgICByZXN1bHQuYXBwZW5kKGRhdGEuY2hhcmFjdGVycygpICsgc3Rh
cnQsIGVuZCAtIHN0YXJ0KTsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGRhdGEuY2hhcmFj
dGVycygpICsgc3RhcnQsIGVuZCAtIHN0YXJ0KTsKICAgICAgICAgfQogICAgIH0KIAotICAgIHJl
dHVybiBTdHJpbmc6OmFkb3B0KHJlc3VsdCk7CisgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmco
KTsKIH0KIAogU3RyaW5nIFJhbmdlOjp0b0hUTUwoKSBjb25zdApJbmRleDogU291cmNlL1dlYkNv
cmUvZG9tL1NjcmlwdEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Rv
bS9TY3JpcHRFbGVtZW50LmNwcAkocmV2aXNpb24gODI5MzYpCisrKyBTb3VyY2UvV2ViQ29yZS9k
b20vU2NyaXB0RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzLDYgKzQzLDcgQEAKICNp
bmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlRleHQuaCIKICNpbmNsdWRlIDx3dGYvU3Rk
TGliRXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KIAogI2lmIEVOQUJMRShTVkcpCkBAIC0zMjgsNyAr
MzI5LDcgQEAgYm9vbCBTY3JpcHRFbGVtZW50Ojppc1NjcmlwdEZvckV2ZW50U3VwcAogCiBTdHJp
bmcgU2NyaXB0RWxlbWVudDo6c2NyaXB0Q29udGVudCgpIGNvbnN0CiB7Ci0gICAgVmVjdG9yPFVD
aGFyPiB2YWw7CisgICAgU3RyaW5nQnVpbGRlciBjb250ZW50OwogICAgIFRleHQqIGZpcnN0VGV4
dE5vZGUgPSAwOwogICAgIGJvb2wgZm91bmRNdWx0aXBsZVRleHROb2RlcyA9IGZhbHNlOwogCkBA
IC0zMzgsMTAgKzMzOSwxMCBAQCBTdHJpbmcgU2NyaXB0RWxlbWVudDo6c2NyaXB0Q29udGVudCgp
IGNvCiAKICAgICAgICAgVGV4dCogdCA9IHN0YXRpY19jYXN0PFRleHQqPihuKTsKICAgICAgICAg
aWYgKGZvdW5kTXVsdGlwbGVUZXh0Tm9kZXMpCi0gICAgICAgICAgICBhcHBlbmQodmFsLCB0LT5k
YXRhKCkpOworICAgICAgICAgICAgY29udGVudC5hcHBlbmQodC0+ZGF0YSgpKTsKICAgICAgICAg
ZWxzZSBpZiAoZmlyc3RUZXh0Tm9kZSkgewotICAgICAgICAgICAgYXBwZW5kKHZhbCwgZmlyc3RU
ZXh0Tm9kZS0+ZGF0YSgpKTsKLSAgICAgICAgICAgIGFwcGVuZCh2YWwsIHQtPmRhdGEoKSk7Cisg
ICAgICAgICAgICBjb250ZW50LmFwcGVuZChmaXJzdFRleHROb2RlLT5kYXRhKCkpOworICAgICAg
ICAgICAgY29udGVudC5hcHBlbmQodC0+ZGF0YSgpKTsKICAgICAgICAgICAgIGZvdW5kTXVsdGlw
bGVUZXh0Tm9kZXMgPSB0cnVlOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIGZpcnN0VGV4
dE5vZGUgPSB0OwpAQCAtMzUwLDcgKzM1MSw3IEBAIFN0cmluZyBTY3JpcHRFbGVtZW50OjpzY3Jp
cHRDb250ZW50KCkgY28KICAgICBpZiAoZmlyc3RUZXh0Tm9kZSAmJiAhZm91bmRNdWx0aXBsZVRl
eHROb2RlcykKICAgICAgICAgcmV0dXJuIGZpcnN0VGV4dE5vZGUtPmRhdGEoKTsKIAotICAgIHJl
dHVybiBTdHJpbmc6OmFkb3B0KHZhbCk7CisgICAgcmV0dXJuIGNvbnRlbnQudG9TdHJpbmcoKTsK
IH0KIAogU2NyaXB0RWxlbWVudCogdG9TY3JpcHRFbGVtZW50KEVsZW1lbnQqIGVsZW1lbnQpCg==
</data>
<flag name="review"
          id="86424"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>