<?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>16580</bug_id>
          
          <creation_ts>2007-12-23 00:59:02 -0800</creation_ts>
          <short_desc>StringProtoFuncReplace::callAsFunction should use vectors for a speedup</short_desc>
          <delta_ts>2010-06-11 16:55:50 -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>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Seidel (no email)">eric</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>ggaren</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>65112</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2007-12-23 00:59:02 -0800</bug_when>
    <thetext>StringProtoFuncReplace::callAsFunction should use vectors for a speedup

static JSValue *replace(ExecState *exec, StringImp* sourceVal, JSValue *pattern, JSValue *replacement)

Does all its array manipulation by hand.  It should use Vector&lt;UString::Range&gt; and Vector&lt;UString&gt; instead (if for no other reason than for the fast copies on expansion).

This is what one might call an &quot;easy fix&quot;. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>65113</commentid>
    <comment_count>1</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2007-12-23 00:59:36 -0800</bug_when>
    <thetext>KJS::replace is 1.4% of the sample for:

run-sunspider --shark20 --tests &quot;cube|tagcloud|unpack|spectra&quot;
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>65115</commentid>
    <comment_count>2</comment_count>
      <attachid>18070</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2007-12-23 01:16:55 -0800</bug_when>
    <thetext>Created attachment 18070
fix, sunspider is crazy

I must have angered the sunspider gods again.  SS claims this is a regression on a bunch of unrelated tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>237152</commentid>
    <comment_count>3</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-06-11 16:55:50 -0700</bug_when>
    <thetext>Looks like this function uses vectors now.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>18070</attachid>
            <date>2007-12-23 01:16:55 -0800</date>
            <delta_ts>2010-06-10 15:20:01 -0700</delta_ts>
            <desc>fix, sunspider is crazy</desc>
            <filename>fix.patch</filename>
            <type>text/plain</type>
            <size>4260</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL2tqcy9zdHJpbmdfb2JqZWN0LmNwcCBiL0phdmFT
Y3JpcHRDb3JlL2tqcy9zdHJpbmdfb2JqZWN0LmNwcAppbmRleCBlNGQ1MTczLi45YjI4ZTc3IDEw
MDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9ranMvc3RyaW5nX29iamVjdC5jcHAKKysrIGIvSmF2
YVNjcmlwdENvcmUva2pzL3N0cmluZ19vYmplY3QuY3BwCkBAIC0xODcsNjQgKzE4Nyw2IEBAIGJv
b2wgU3RyaW5nUHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlICpleGVjLCBj
b25zdCBJZGVudGlmaWVyJiBwcm9wCiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LSBGdW5jdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotc3RhdGljIGlubGluZSB2
b2lkIGV4cGFuZFNvdXJjZVJhbmdlcyhVU3RyaW5nOjpSYW5nZSAqICYgYXJyYXksIGludCYgY291
bnQsIGludCYgY2FwYWNpdHkpCi17Ci0gIGludCBuZXdDYXBhY2l0eTsKLSAgaWYgKGNhcGFjaXR5
ID09IDApIHsKLSAgICBuZXdDYXBhY2l0eSA9IDE2OwotICB9IGVsc2UgewotICAgIG5ld0NhcGFj
aXR5ID0gY2FwYWNpdHkgKiAyOwotICB9Ci0KLSAgVVN0cmluZzo6UmFuZ2UgKm5ld0FycmF5ID0g
bmV3IFVTdHJpbmc6OlJhbmdlW25ld0NhcGFjaXR5XTsKLSAgZm9yIChpbnQgaSA9IDA7IGkgPCBj
b3VudDsgaSsrKSB7Ci0gICAgbmV3QXJyYXlbaV0gPSBhcnJheVtpXTsKLSAgfQotCi0gIGRlbGV0
ZSBbXSBhcnJheTsKLQotICBjYXBhY2l0eSA9IG5ld0NhcGFjaXR5OwotICBhcnJheSA9IG5ld0Fy
cmF5OwotfQotCi1zdGF0aWMgdm9pZCBwdXNoU291cmNlUmFuZ2UoVVN0cmluZzo6UmFuZ2UgKiAm
IGFycmF5LCBpbnQmIGNvdW50LCBpbnQmIGNhcGFjaXR5LCBVU3RyaW5nOjpSYW5nZSByYW5nZSkK
LXsKLSAgaWYgKGNvdW50ICsgMSA+IGNhcGFjaXR5KQotICAgIGV4cGFuZFNvdXJjZVJhbmdlcyhh
cnJheSwgY291bnQsIGNhcGFjaXR5KTsKLQotICBhcnJheVtjb3VudF0gPSByYW5nZTsKLSAgY291
bnQrKzsKLX0KLQotc3RhdGljIGlubGluZSB2b2lkIGV4cGFuZFJlcGxhY2VtZW50cyhVU3RyaW5n
ICogJiBhcnJheSwgaW50JiBjb3VudCwgaW50JiBjYXBhY2l0eSkKLXsKLSAgaW50IG5ld0NhcGFj
aXR5OwotICBpZiAoY2FwYWNpdHkgPT0gMCkgewotICAgIG5ld0NhcGFjaXR5ID0gMTY7Ci0gIH0g
ZWxzZSB7Ci0gICAgbmV3Q2FwYWNpdHkgPSBjYXBhY2l0eSAqIDI7Ci0gIH0KLQotICBVU3RyaW5n
ICpuZXdBcnJheSA9IG5ldyBVU3RyaW5nW25ld0NhcGFjaXR5XTsKLSAgZm9yIChpbnQgaSA9IDA7
IGkgPCBjb3VudDsgaSsrKSB7Ci0gICAgbmV3QXJyYXlbaV0gPSBhcnJheVtpXTsKLSAgfQotICAK
LSAgZGVsZXRlIFtdIGFycmF5OwotCi0gIGNhcGFjaXR5ID0gbmV3Q2FwYWNpdHk7Ci0gIGFycmF5
ID0gbmV3QXJyYXk7Ci19Ci0KLXN0YXRpYyB2b2lkIHB1c2hSZXBsYWNlbWVudChVU3RyaW5nICog
JiBhcnJheSwgaW50JiBjb3VudCwgaW50JiBjYXBhY2l0eSwgVVN0cmluZyByZXBsYWNlbWVudCkK
LXsKLSAgaWYgKGNvdW50ICsgMSA+IGNhcGFjaXR5KQotICAgIGV4cGFuZFJlcGxhY2VtZW50cyhh
cnJheSwgY291bnQsIGNhcGFjaXR5KTsKLQotICBhcnJheVtjb3VudF0gPSByZXBsYWNlbWVudDsK
LSAgY291bnQrKzsKLX0KLQogc3RhdGljIGlubGluZSBVU3RyaW5nIHN1YnN0aXR1dGVCYWNrcmVm
ZXJlbmNlcyhjb25zdCBVU3RyaW5nICZyZXBsYWNlbWVudCwgY29uc3QgVVN0cmluZyAmc291cmNl
LCBpbnQgKm92ZWN0b3IsIFJlZ0V4cCAqcmVnKQogewogICBVU3RyaW5nIHN1YnN0aXR1dGVkUmVw
bGFjZW1lbnQgPSByZXBsYWNlbWVudDsKQEAgLTMzOSwxMiArMjgxLDggQEAgc3RhdGljIEpTVmFs
dWUgKnJlcGxhY2UoRXhlY1N0YXRlICpleGVjLCBTdHJpbmdJbXAqIHNvdXJjZVZhbCwgSlNWYWx1
ZSAqcGF0dGVybiwKICAgICBpbnQgbGFzdEluZGV4ID0gMDsKICAgICBpbnQgc3RhcnRQb3NpdGlv
biA9IDA7CiAKLSAgICBVU3RyaW5nOjpSYW5nZSAqc291cmNlUmFuZ2VzID0gMDsKLSAgICBpbnQg
c291cmNlUmFuZ2VDb3VudCA9IDA7Ci0gICAgaW50IHNvdXJjZVJhbmdlQ2FwYWNpdHkgPSAwOwot
ICAgIFVTdHJpbmcgKnJlcGxhY2VtZW50cyA9IDA7Ci0gICAgaW50IHJlcGxhY2VtZW50Q291bnQg
PSAwOwotICAgIGludCByZXBsYWNlbWVudENhcGFjaXR5ID0gMDsKKyAgICBWZWN0b3I8VVN0cmlu
Zzo6UmFuZ2U+IHNvdXJjZVJhbmdlczsKKyAgICBWZWN0b3I8VVN0cmluZz4gcmVwbGFjZW1lbnRz
OwogCiAgICAgLy8gVGhpcyBpcyBlaXRoZXIgYSBsb29wIChpZiBnbG9iYWwgaXMgc2V0KSBvciBh
IG9uZS13YXkgKGlmIG5vdCkuCiAgICAgZG8gewpAQCAtMzU1LDcgKzI5Myw3IEBAIHN0YXRpYyBK
U1ZhbHVlICpyZXBsYWNlKEV4ZWNTdGF0ZSAqZXhlYywgU3RyaW5nSW1wKiBzb3VyY2VWYWwsIEpT
VmFsdWUgKnBhdHRlcm4sCiAgICAgICBpZiAobWF0Y2hJbmRleCA8IDApCiAgICAgICAgIGJyZWFr
OwogCi0gICAgICBwdXNoU291cmNlUmFuZ2Uoc291cmNlUmFuZ2VzLCBzb3VyY2VSYW5nZUNvdW50
LCBzb3VyY2VSYW5nZUNhcGFjaXR5LCBVU3RyaW5nOjpSYW5nZShsYXN0SW5kZXgsIG1hdGNoSW5k
ZXggLSBsYXN0SW5kZXgpKTsKKyAgICAgIHNvdXJjZVJhbmdlcy5hcHBlbmQoVVN0cmluZzo6UmFu
Z2UobGFzdEluZGV4LCBtYXRjaEluZGV4IC0gbGFzdEluZGV4KSk7CiAKICAgICAgIFVTdHJpbmcg
c3Vic3RpdHV0ZWRSZXBsYWNlbWVudDsKICAgICAgIGlmIChyZXBsYWNlbWVudEZ1bmN0aW9uKSB7
CkBAIC0zODAsNyArMzE4LDcgQEAgc3RhdGljIEpTVmFsdWUgKnJlcGxhY2UoRXhlY1N0YXRlICpl
eGVjLCBTdHJpbmdJbXAqIHNvdXJjZVZhbCwgSlNWYWx1ZSAqcGF0dGVybiwKICAgICAgIH0gZWxz
ZQogICAgICAgICAgIHN1YnN0aXR1dGVkUmVwbGFjZW1lbnQgPSBzdWJzdGl0dXRlQmFja3JlZmVy
ZW5jZXMocmVwbGFjZW1lbnRTdHJpbmcsIHNvdXJjZSwgb3ZlY3RvciwgcmVnKTsKIAotICAgICAg
cHVzaFJlcGxhY2VtZW50KHJlcGxhY2VtZW50cywgcmVwbGFjZW1lbnRDb3VudCwgcmVwbGFjZW1l
bnRDYXBhY2l0eSwgc3Vic3RpdHV0ZWRSZXBsYWNlbWVudCk7CisgICAgICByZXBsYWNlbWVudHMu
YXBwZW5kKHN1YnN0aXR1dGVkUmVwbGFjZW1lbnQpOwogCiAgICAgICBsYXN0SW5kZXggPSBtYXRj
aEluZGV4ICsgbWF0Y2hMZW47CiAgICAgICBzdGFydFBvc2l0aW9uID0gbGFzdEluZGV4OwpAQCAt
Mzk0LDIwICszMzIsMTUgQEAgc3RhdGljIEpTVmFsdWUgKnJlcGxhY2UoRXhlY1N0YXRlICpleGVj
LCBTdHJpbmdJbXAqIHNvdXJjZVZhbCwgSlNWYWx1ZSAqcGF0dGVybiwKICAgICB9IHdoaWxlIChn
bG9iYWwpOwogCiAgICAgaWYgKGxhc3RJbmRleCA8IHNvdXJjZS5zaXplKCkpCi0gICAgICBwdXNo
U291cmNlUmFuZ2Uoc291cmNlUmFuZ2VzLCBzb3VyY2VSYW5nZUNvdW50LCBzb3VyY2VSYW5nZUNh
cGFjaXR5LCBVU3RyaW5nOjpSYW5nZShsYXN0SW5kZXgsIHNvdXJjZS5zaXplKCkgLSBsYXN0SW5k
ZXgpKTsKLQotICAgIFVTdHJpbmcgcmVzdWx0OwotCi0gICAgaWYgKHNvdXJjZVJhbmdlcykKLSAg
ICAgICAgcmVzdWx0ID0gc291cmNlLnNwbGljZVN1YnN0cmluZ3NXaXRoU2VwYXJhdG9ycyhzb3Vy
Y2VSYW5nZXMsIHNvdXJjZVJhbmdlQ291bnQsIHJlcGxhY2VtZW50cywgcmVwbGFjZW1lbnRDb3Vu
dCk7CisgICAgICAgIHNvdXJjZVJhbmdlcy5hcHBlbmQoVVN0cmluZzo6UmFuZ2UobGFzdEluZGV4
LCBzb3VyY2Uuc2l6ZSgpIC0gbGFzdEluZGV4KSk7CiAKLSAgICBkZWxldGUgW10gc291cmNlUmFu
Z2VzOwotICAgIGRlbGV0ZSBbXSByZXBsYWNlbWVudHM7Ci0KLSAgICBpZiAocmVzdWx0ID09IHNv
dXJjZSkKLSAgICAgIHJldHVybiBzb3VyY2VWYWw7CisgICAgaWYgKCFzb3VyY2VSYW5nZXMuaXNF
bXB0eSgpKSB7CisgICAgICAgIFVTdHJpbmcgcmVzdWx0ID0gc291cmNlLnNwbGljZVN1YnN0cmlu
Z3NXaXRoU2VwYXJhdG9ycyhzb3VyY2VSYW5nZXMuZGF0YSgpLCBzb3VyY2VSYW5nZXMuc2l6ZSgp
LCByZXBsYWNlbWVudHMuZGF0YSgpLCByZXBsYWNlbWVudHMuc2l6ZSgpKTsKKyAgICAgICAgaWYg
KHJlc3VsdCAhPSBzb3VyY2UpCisgICAgICAgICAgICByZXR1cm4ganNTdHJpbmcocmVzdWx0KTsK
KyAgICB9CiAKLSAgICByZXR1cm4ganNTdHJpbmcocmVzdWx0KTsKKyAgICByZXR1cm4gc291cmNl
VmFsOwogICB9CiAgIAogICAvLyBGaXJzdCBhcmcgaXMgYSBzdHJpbmcK
</data>

          </attachment>
      

    </bug>

</bugzilla>