<?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>73584</bug_id>
          
          <creation_ts>2011-12-01 13:11:43 -0800</creation_ts>
          <short_desc>Changes proposed for 73457 slow down Kraken json-parse-financial</short_desc>
          <delta_ts>2011-12-05 15:20:13 -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>JavaScriptCore</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>73236</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Michael Saboff">msaboff</reporter>
          <assigned_to name="Michael Saboff">msaboff</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>513030</commentid>
    <comment_count>0</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2011-12-01 13:11:43 -0800</bug_when>
    <thetext>The changes proposed for bug 73457 slow down Kraken json-parse-financial by about 3%.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>513045</commentid>
    <comment_count>1</comment_count>
      <attachid>117475</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2011-12-01 13:25:27 -0800</bug_when>
    <thetext>Created attachment 117475
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>513169</commentid>
    <comment_count>2</comment_count>
      <attachid>117475</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-12-01 15:07:26 -0800</bug_when>
    <thetext>Comment on attachment 117475
Patch

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

Why 4 bytes and not 8 on 64-bit architectures? Can this share code with StringHash.h instead of adding more copies of code that does the same thing?

&gt; Source/JavaScriptCore/wtf/text/StringImpl.cpp:714
&gt; +#if !(CPU(ARM) || CPU(SH4) || CPU(MIPS) || CPU(SPARC))

StringHash.h uses a different list for this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>513413</commentid>
    <comment_count>3</comment_count>
      <attachid>117475</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2011-12-01 19:44:16 -0800</bug_when>
    <thetext>Comment on attachment 117475
Patch

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

Please take Darin&apos;s comment into account.

&gt; Source/JavaScriptCore/wtf/text/StringImpl.cpp:754
&gt; +    if (length &amp; 1 &amp;&amp;  *reinterpret_cast&lt;const UChar*&gt;(aCharacters) != *reinterpret_cast&lt;const UChar*&gt;(bCharacters))

Extra whitespace between &amp;&amp;  *</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>513506</commentid>
    <comment_count>4</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2011-12-01 22:35:08 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 117475 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=117475&amp;action=review
&gt; 
&gt; Why 4 bytes and not 8 on 64-bit architectures? Can this share code with StringHash.h instead of adding more copies of code that does the same thing?
&gt; 
&gt; &gt; Source/JavaScriptCore/wtf/text/StringImpl.cpp:714
&gt; &gt; +#if !(CPU(ARM) || CPU(SH4) || CPU(MIPS) || CPU(SPARC))
&gt; 
&gt; StringHash.h uses a different list for this.

Spent more time on this and added 64 bit comparisons for x86-64.  This change sped up SunSpider string-unpack-code by ~3%.

Made an initial stab at merging the StringHash code with this code, but it proved to be more work than expected. Putting the new equal() implementations in StringImpl.h and calling them from StringHash.h didn&apos;t work.  The compiler tried to convert the first argument LChar* to a String which ended up with a recursive call.  Created https://bugs.webkit.org/show_bug.cgi?id=73622 &quot;Eliminate Duplicate word at a time equal code in StringImpl.cpp and StringHash.h&quot; to address this duplicity.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>513535</commentid>
    <comment_count>5</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2011-12-01 23:06:56 -0800</bug_when>
    <thetext>Committed r101747: &lt;http://trac.webkit.org/changeset/101747&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>117475</attachid>
            <date>2011-12-01 13:25:27 -0800</date>
            <delta_ts>2011-12-01 19:44:16 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>73584.patch</filename>
            <type>text/plain</type>
            <size>5093</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTAxNjk5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBA
CisyMDExLTEyLTAxICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgorCisgICAg
ICAgIENoYW5nZXMgcHJvcG9zZWQgZm9yIDczNDU3IHNsb3cgZG93biBLcmFrZW4ganNvbi1wYXJz
ZS1maW5hbmNpYWwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTczNTg0CisKKyAgICAgICAgUmVzdHJ1Y3R1cmVkIFN0cmluZ0ltcGw6OmVxdWFsIHRvIHRh
a2UgYWR2YW50YWdlIG9mIDQgYnl0ZXMKKyAgICAgICAgYXQgYSB0aW1lIHdoZW4gcG9zc2libGUu
CisKKyAgICAgICAgVGhpcyBpcyB3b3J0aCB+MyUgb24gS3Jha2VuIGpzb24tcGFyc2UtZmluYW5j
aWFsLiAgSXQgYWxzbyAKKyAgICAgICAgYmVuZWZpdHMgdmFyaW91cyBvdGhlciBiZW5jaG1hcmtz
LgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3Rm
L3RleHQvU3RyaW5nSW1wbC5jcHA6CisgICAgICAgIChXVEY6OmVxdWFsKToKKwogMjAxMS0xMi0w
MSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIEFSTXY3IG9ubHkg
YWxsb3dzIGZvciBvbmUtc2hvdCBwYXRjaGluZyBvZiBjb21wYWN0IG9mZnNldHMsIHdoaWxlIHRo
ZQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9TdHJpbmdJbXBsLmNw
cAkocmV2aXNpb24gMTAxNDM5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0
cmluZ0ltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MTEsMTQgKzcxMSw2MSBAQCBmbG9hdCBT
dHJpbmdJbXBsOjp0b0Zsb2F0KGJvb2wqIG9rLCBib29sCiAgICAgcmV0dXJuIGNoYXJhY3RlcnNU
b0Zsb2F0KGNoYXJhY3RlcnMxNigpLCBtX2xlbmd0aCwgb2ssIGRpZFJlYWROdW1iZXIpOwogfQog
Ci1zdGF0aWMgYm9vbCBlcXVhbChjb25zdCBVQ2hhciogYSwgY29uc3QgTENoYXIqIGIsIGludCBs
ZW5ndGgpCisjaWYgIShDUFUoQVJNKSB8fCBDUFUoU0g0KSB8fCBDUFUoTUlQUykgfHwgQ1BVKFNQ
QVJDKSkKKy8vIERvIGNvbXBhcmlzb25zIDQtYnl0ZXMtYXQtYS10aW1lIG9uIGFyY2hpdGVjdHVy
ZXMgd2hlcmUgaXQncyBzYWZlLgorCitBTFdBWVNfSU5MSU5FIHN0YXRpYyBib29sIGVxdWFsKGNv
bnN0IExDaGFyKiBhLCBjb25zdCBMQ2hhciogYiwgdW5zaWduZWQgbGVuZ3RoKQogewotICAgIEFT
U0VSVChsZW5ndGggPj0gMCk7Ci0gICAgd2hpbGUgKGxlbmd0aC0tKSB7Ci0gICAgICAgIExDaGFy
IGJjID0gKmIrKzsKLSAgICAgICAgaWYgKCphKysgIT0gYmMpCisgICAgY29uc3QgdWludDMyX3Qq
IGFDaGFyYWN0ZXJzID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50MzJfdCo+KGEpOworICAg
IGNvbnN0IHVpbnQzMl90KiBiQ2hhcmFjdGVycyA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWlu
dDMyX3QqPihiKTsKKworICAgIHVuc2lnbmVkIHdvcmRMZW5ndGggPSBsZW5ndGggPj4gMjsKKyAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpICE9IHdvcmRMZW5ndGg7ICsraSkgeworICAgICAgICBp
ZiAoKmFDaGFyYWN0ZXJzKysgIT0gKmJDaGFyYWN0ZXJzKyspCisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgfQorCisgICAgbGVuZ3RoICY9IDM7CisKKyAgICBpZiAobGVuZ3RoKSB7Cisg
ICAgICAgIGNvbnN0IExDaGFyKiBhUmVtYWluZGVyID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBM
Q2hhcio+KGFDaGFyYWN0ZXJzKTsKKyAgICAgICAgY29uc3QgTENoYXIqIGJSZW1haW5kZXIgPSBy
ZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oYkNoYXJhY3RlcnMpOworCisgICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCAgbGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIGlmIChh
UmVtYWluZGVyW2ldICE9IGJSZW1haW5kZXJbaV0pCisgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK0FMV0FZU19J
TkxJTkUgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgVUNoYXIqIGEsIGNvbnN0IFVDaGFyKiBiLCB1
bnNpZ25lZCBsZW5ndGgpCit7CisgICAgY29uc3QgdWludDMyX3QqIGFDaGFyYWN0ZXJzID0gcmVp
bnRlcnByZXRfY2FzdDxjb25zdCB1aW50MzJfdCo+KGEpOworICAgIGNvbnN0IHVpbnQzMl90KiBi
Q2hhcmFjdGVycyA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDMyX3QqPihiKTsKKworICAg
IHVuc2lnbmVkIHdvcmRMZW5ndGggPSBsZW5ndGggPj4gMTsKKyAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpICE9IHdvcmRMZW5ndGg7ICsraSkgeworICAgICAgICBpZiAoKmFDaGFyYWN0ZXJzKysg
IT0gKmJDaGFyYWN0ZXJzKyspCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQorCisg
ICAgaWYgKGxlbmd0aCAmIDEgJiYgICpyZWludGVycHJldF9jYXN0PGNvbnN0IFVDaGFyKj4oYUNo
YXJhY3RlcnMpICE9ICpyZWludGVycHJldF9jYXN0PGNvbnN0IFVDaGFyKj4oYkNoYXJhY3RlcnMp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKyNlbmRpZgor
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclR5cGVMLCB0eXBlbmFtZSBDaGFyVHlwZVI+CitBTFdB
WVNfSU5MSU5FIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IENoYXJUeXBlTCogYSwgY29uc3QgQ2hh
clR5cGVSKiBiLCB1bnNpZ25lZCBsZW5ndGgpCit7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSAhPSBsZW5ndGg7ICsraSkgeworICAgICAgICBpZiAoYVtpXSAhPSBiW2ldKQorICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIH0KKwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0xMzUw
LDE3ICsxMzk3LDYgQEAgYm9vbCBlcXVhbChjb25zdCBTdHJpbmdJbXBsKiBhLCBjb25zdCBTdAog
ICAgIHJldHVybiBTdHJpbmdIYXNoOjplcXVhbChhLCBiKTsKIH0KIAotdGVtcGxhdGUgPHR5cGVu
YW1lIENoYXJUeXBlTCwgdHlwZW5hbWUgQ2hhclR5cGVSPgotQUxXQVlTX0lOTElORSBzdGF0aWMg
Ym9vbCBlcXVhbChjb25zdCBDaGFyVHlwZUwqIGEsIGNvbnN0IENoYXJUeXBlUiogYiwgdW5zaWdu
ZWQgbGVuZ3RoKQotewotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgIT0gbGVuZ3RoOyArK2kp
IHsKLSAgICAgICAgaWYgKGFbaV0gIT0gYltpXSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICB9Ci0gICAgCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KIGJvb2wgZXF1YWwoY29uc3QgU3Ry
aW5nSW1wbCogYSwgY29uc3QgTENoYXIqIGIsIHVuc2lnbmVkIGxlbmd0aCkKIHsKICAgICBpZiAo
IWEpCkBAIC0xNDIwLDM5ICsxNDU2LDkgQEAgYm9vbCBlcXVhbChjb25zdCBTdHJpbmdJbXBsKiBh
LCBjb25zdCBVQwogCiAgICAgaWYgKGEtPmxlbmd0aCgpICE9IGxlbmd0aCkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIC8vIEZJWE1FOiBwZXJoYXBzIHdlIHNob3VsZCBoYXZlIGEgbW9yZSBh
YnN0cmFjdCBtYWNybyB0aGF0IGluZGljYXRlcyB3aGVuCi0gICAgLy8gZ29pbmcgNCBieXRlcyBh
dCBhIHRpbWUgaXMgdW5zYWZlCi0jaWYgQ1BVKEFSTSkgfHwgQ1BVKFNINCkgfHwgQ1BVKE1JUFMp
IHx8IENQVShTUEFSQykKLSAgICBjb25zdCBVQ2hhciogYXMgPSBhLT5jaGFyYWN0ZXJzKCk7Ci0g
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSAhPSBsZW5ndGg7ICsraSkKLSAgICAgICAgaWYgKGFz
W2ldICE9IGJbaV0pCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIHRydWU7
Ci0jZWxzZQotICAgIGlmIChhLT5pczhCaXQoKSkgewotICAgICAgICBjb25zdCBMQ2hhciogYXMg
PSBhLT5jaGFyYWN0ZXJzOCgpOwotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpICE9IGxl
bmd0aDsgKytpKQotICAgICAgICAgICAgaWYgKGFzW2ldICE9IGJbaV0pCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICAvLyBE
byBjb21wYXJpc29uIDQtYnl0ZXMtYXQtYS10aW1lIG9uIGFyY2hpdGVjdHVyZXMgd2hlcmUgaXQn
cyBzYWZlLgotCi0gICAgY29uc3QgdWludDMyX3QqIGFDaGFyYWN0ZXJzID0gcmVpbnRlcnByZXRf
Y2FzdDxjb25zdCB1aW50MzJfdCo+KGEtPmNoYXJhY3RlcnMxNigpKTsKLSAgICBjb25zdCB1aW50
MzJfdCogYkNoYXJhY3RlcnMgPSByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQzMl90Kj4oYik7
Ci0KLSAgICB1bnNpZ25lZCBoYWxmTGVuZ3RoID0gbGVuZ3RoID4+IDE7Ci0gICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSAhPSBoYWxmTGVuZ3RoOyArK2kpIHsKLSAgICAgICAgaWYgKCphQ2hhcmFj
dGVycysrICE9ICpiQ2hhcmFjdGVycysrKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IH0KLQotICAgIGlmIChsZW5ndGggJiAxICYmICAqcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50
MTZfdCo+KGFDaGFyYWN0ZXJzKSAhPSAqcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50MTZfdCo+
KGJDaGFyYWN0ZXJzKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIHRydWU7
Ci0jZW5kaWYKKyAgICBpZiAoYS0+aXM4Qml0KCkpCisgICAgICAgIHJldHVybiBlcXVhbChhLT5j
aGFyYWN0ZXJzOCgpLCBiLCBsZW5ndGgpOworICAgIHJldHVybiBlcXVhbChhLT5jaGFyYWN0ZXJz
MTYoKSwgYiwgbGVuZ3RoKTsKIH0KIAogYm9vbCBlcXVhbElnbm9yaW5nQ2FzZShTdHJpbmdJbXBs
KiBhLCBTdHJpbmdJbXBsKiBiKQo=
</data>
<flag name="review"
          id="116919"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>