<?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>81070</bug_id>
          
          <creation_ts>2012-03-13 19:19:30 -0700</creation_ts>
          <short_desc>Avoid StringImpl::getData16SlowCase() when sorting array</short_desc>
          <delta_ts>2012-03-14 22:11:56 -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>Unspecified</rep_platform>
          <op_sys>Unspecified</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="Benjamin Poulain">benjamin</reporter>
          <assigned_to name="Benjamin Poulain">benjamin</assigned_to>
          <cc>ggaren</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>578108</commentid>
    <comment_count>0</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-03-13 19:19:30 -0700</bug_when>
    <thetext>When sorting a JSArray, one of the bottleneck is the conversion from StringImpl::getData16SlowCase()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>578113</commentid>
    <comment_count>1</comment_count>
      <attachid>131773</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-03-13 19:27:27 -0700</bug_when>
    <thetext>Created attachment 131773
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>578657</commentid>
    <comment_count>2</comment_count>
      <attachid>131773</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-03-14 12:37:05 -0700</bug_when>
    <thetext>Comment on attachment 131773
Patch

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

&gt; Source/JavaScriptCore/wtf/text/StringImpl.h:782
&gt; +    if (string1 &amp;&amp; string2) {

It would be better to NULL check string1 and string2 at the head of the function, and return early if NULL, rather than NULL checking more than once in the body of the function, and indenting so much of the code. I think this would work:

if (!string1)
    return -1;
if (!string2)
    return string1-&gt;length();
....</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>578659</commentid>
    <comment_count>3</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-03-14 12:38:11 -0700</bug_when>
    <thetext>&gt; if (!string2)
&gt;     return string1-&gt;length();

Oops!

if (!string2)
    return string1-&gt;length() ? 1 : -1;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>578665</commentid>
    <comment_count>4</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-03-14 12:44:24 -0700</bug_when>
    <thetext>&gt; It would be better to NULL check string1 and string2 at the head of the function, and return early if NULL, rather than NULL checking more than once in the body of the function, and indenting so much of the code. I think this would work:

Good point! I&apos;ll update that

Thanks for the review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>579128</commentid>
    <comment_count>5</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-03-14 22:11:56 -0700</bug_when>
    <thetext>Committed r110822: &lt;http://trac.webkit.org/changeset/110822&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>131773</attachid>
            <date>2012-03-13 19:27:27 -0700</date>
            <delta_ts>2012-03-14 12:37:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81070-20120313192725.patch</filename>
            <type>text/plain</type>
            <size>4696</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEwNjEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
MTc0OTAwOTM3ZjcxYjA2NGQ0ZjY1ZDI1MDBmNzcyYzZkNjZkNDM1Li43ZmYwMTU4MWQ0MDA1ZDZh
ZTYzNWYwMzYzZWYyNzg2MWQwNWQ2Mzg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNSBAQAorMjAxMi0wMy0xMyAgQmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWluQGFwcGxl
LmNvbT4KKworICAgICAgICBBdm9pZCBTdHJpbmdJbXBsOjpnZXREYXRhMTZTbG93Q2FzZSgpIHdo
ZW4gc29ydGluZyBhcnJheQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9ODEwNzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBUaGUgZnVuY3Rpb24gY29kZVBvaW50Q29tcGFyZSgpIGlzIHVzZWQgaW50ZW5zaXZl
bHkgd2hlbiBzb3J0aW5nIHN0cmluZ3MuCisgICAgICAgIFRoaXMgcGF0Y2ggaW1wcm92ZXMgaXRz
IHBlcmZvcm1hbmNlIGJ5OgorICAgICAgICAtQXZvaWRpbmcgY2hhcmFjdGVyIGNvbnZlcnNpb24u
CisgICAgICAgIC1JbmxpbmluZyB0aGUgZnVuY3Rpb24uCisKKyAgICAgICAgVGhpcyBtYWtlcyBQ
ZWFjZWtlZXBlcidzIGFycmF5Q29tYmluZWQgdGVzdCAzMCUgZmFzdGVyLgorCisgICAgICAgICog
d3RmL3RleHQvU3RyaW5nSW1wbC5jcHA6CisgICAgICAgICogd3RmL3RleHQvU3RyaW5nSW1wbC5o
OgorICAgICAgICAoV1RGKToKKyAgICAgICAgKFdURjo6Y29kZVBvaW50Q29tcGFyZSk6CisgICAg
ICAgIChXVEY6OmNvZGVQb2ludENvbXBhcmU4KToKKyAgICAgICAgKFdURjo6Y29kZVBvaW50Q29t
cGFyZTE2KToKKyAgICAgICAgKFdURjo6Y29kZVBvaW50Q29tcGFyZThUbzE2KToKKwogMjAxMi0w
My0xMyAgSG9qb25nIEhhbiAgPGhvam9uZy5oYW5Ac2Ftc3VuZy5jb20+CiAKICAgICAgICAgRHVt
cCB0aGUgZ2VuZXJhdGVkIGNvZGUgZm9yIEFSTV9UUkFESVRJT05BTApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwCmluZGV4IDNmNzM1NTZiNTE3YWIwMTk4
MGI3MDcwOWQ4MDY0ODc0OWY0OGUwOTIuLjZlMDRjNDFjZTYzNzc4ZWQ2YzE1YmNiYWVmNTNlMzU2
MDZkNzY1YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9TdHJp
bmdJbXBsLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvU3RyaW5nSW1w
bC5jcHAKQEAgLTc3NywyOSArNzc3LDYgQEAgc3RhdGljIGlubGluZSBib29sIGVxdWFsSWdub3Jp
bmdDYXNlKGNvbnN0IFVDaGFyKiBhLCBjb25zdCBVQ2hhciogYiwgaW50IGxlbmd0aCkKICAgICBy
ZXR1cm4gdW1lbWNhc2VjbXAoYSwgYiwgbGVuZ3RoKSA9PSAwOwogfQogCi1pbnQgY29kZVBvaW50
Q29tcGFyZShjb25zdCBTdHJpbmdJbXBsKiBzMSwgY29uc3QgU3RyaW5nSW1wbCogczIpCi17Ci0g
ICAgY29uc3QgdW5zaWduZWQgbDEgPSBzMSA/IHMxLT5sZW5ndGgoKSA6IDA7Ci0gICAgY29uc3Qg
dW5zaWduZWQgbDIgPSBzMiA/IHMyLT5sZW5ndGgoKSA6IDA7Ci0gICAgY29uc3QgdW5zaWduZWQg
bG1pbiA9IGwxIDwgbDIgPyBsMSA6IGwyOwotICAgIGNvbnN0IFVDaGFyKiBjMSA9IHMxID8gczEt
PmNoYXJhY3RlcnMoKSA6IDA7Ci0gICAgY29uc3QgVUNoYXIqIGMyID0gczIgPyBzMi0+Y2hhcmFj
dGVycygpIDogMDsKLSAgICB1bnNpZ25lZCBwb3MgPSAwOwotICAgIHdoaWxlIChwb3MgPCBsbWlu
ICYmICpjMSA9PSAqYzIpIHsKLSAgICAgICAgYzErKzsKLSAgICAgICAgYzIrKzsKLSAgICAgICAg
cG9zKys7Ci0gICAgfQotCi0gICAgaWYgKHBvcyA8IGxtaW4pCi0gICAgICAgIHJldHVybiAoYzFb
MF0gPiBjMlswXSkgPyAxIDogLTE7Ci0KLSAgICBpZiAobDEgPT0gbDIpCi0gICAgICAgIHJldHVy
biAwOwotCi0gICAgcmV0dXJuIChsMSA+IGwyKSA/IDEgOiAtMTsKLX0KLQogc2l6ZV90IFN0cmlu
Z0ltcGw6OmZpbmQoVUNoYXIgYywgdW5zaWduZWQgc3RhcnQpCiB7CiAgICAgaWYgKGlzOEJpdCgp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0ltcGwu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9TdHJpbmdJbXBsLmgKaW5kZXggNjY3
MzM1Yjg2MGI3MWYyNzhmY2U5OTIzZWJmNGFkNDVhODhlMjY5OC4uYzAyYTE3OTc4NmMzZGM2NDVh
MjEwOWFjZDMxMWVjZTM4YjQ4OTIyNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3d0Zi90ZXh0L1N0cmluZ0ltcGwuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3Rl
eHQvU3RyaW5nSW1wbC5oCkBAIC03NDIsNyArNzQyLDYwIEBAIGJvb2wgZXF1YWxJZ25vcmluZ051
bGxpdHkoY29uc3QgVmVjdG9yPFVDaGFyLCBpbmxpbmVDYXBhY2l0eT4mIGEsIFN0cmluZ0ltcGwq
IGIpCiAgICAgcmV0dXJuICFtZW1jbXAoYS5kYXRhKCksIGItPmNoYXJhY3RlcnMoKSwgYi0+bGVu
Z3RoKCkgKiBzaXplb2YoVUNoYXIpKTsKIH0KIAotV1RGX0VYUE9SVF9QUklWQVRFIGludCBjb2Rl
UG9pbnRDb21wYXJlKGNvbnN0IFN0cmluZ0ltcGwqLCBjb25zdCBTdHJpbmdJbXBsKik7Cit0ZW1w
bGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlMSwgdHlwZW5hbWUgQ2hhcmFjdGVyVHlwZTI+Citz
dGF0aWMgaW5saW5lIGludCBjb2RlUG9pbnRDb21wYXJlKHVuc2lnbmVkIGwxLCB1bnNpZ25lZCBs
MiwgY29uc3QgQ2hhcmFjdGVyVHlwZTEqIGMxLCBjb25zdCBDaGFyYWN0ZXJUeXBlMiogYzIpCit7
CisgICAgY29uc3QgdW5zaWduZWQgbG1pbiA9IGwxIDwgbDIgPyBsMSA6IGwyOworICAgIHVuc2ln
bmVkIHBvcyA9IDA7CisgICAgd2hpbGUgKHBvcyA8IGxtaW4gJiYgKmMxID09ICpjMikgeworICAg
ICAgICBjMSsrOworICAgICAgICBjMisrOworICAgICAgICBwb3MrKzsKKyAgICB9CisKKyAgICBp
ZiAocG9zIDwgbG1pbikKKyAgICAgICAgcmV0dXJuIChjMVswXSA+IGMyWzBdKSA/IDEgOiAtMTsK
KworICAgIGlmIChsMSA9PSBsMikKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICByZXR1cm4gKGwx
ID4gbDIpID8gMSA6IC0xOworfQorCitzdGF0aWMgaW5saW5lIGludCBjb2RlUG9pbnRDb21wYXJl
OChjb25zdCBTdHJpbmdJbXBsKiBzdHJpbmcxLCBjb25zdCBTdHJpbmdJbXBsKiBzdHJpbmcyKQor
eworICAgIHJldHVybiBjb2RlUG9pbnRDb21wYXJlKHN0cmluZzEtPmxlbmd0aCgpLCBzdHJpbmcy
LT5sZW5ndGgoKSwgc3RyaW5nMS0+Y2hhcmFjdGVyczgoKSwgc3RyaW5nMi0+Y2hhcmFjdGVyczgo
KSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgaW50IGNvZGVQb2ludENvbXBhcmUxNihjb25zdCBTdHJp
bmdJbXBsKiBzdHJpbmcxLCBjb25zdCBTdHJpbmdJbXBsKiBzdHJpbmcyKQoreworICAgIHJldHVy
biBjb2RlUG9pbnRDb21wYXJlKHN0cmluZzEtPmxlbmd0aCgpLCBzdHJpbmcyLT5sZW5ndGgoKSwg
c3RyaW5nMS0+Y2hhcmFjdGVyczE2KCksIHN0cmluZzItPmNoYXJhY3RlcnMxNigpKTsKK30KKwor
c3RhdGljIGlubGluZSBpbnQgY29kZVBvaW50Q29tcGFyZThUbzE2KGNvbnN0IFN0cmluZ0ltcGwq
IHN0cmluZzEsIGNvbnN0IFN0cmluZ0ltcGwqIHN0cmluZzIpCit7CisgICAgcmV0dXJuIGNvZGVQ
b2ludENvbXBhcmUoc3RyaW5nMS0+bGVuZ3RoKCksIHN0cmluZzItPmxlbmd0aCgpLCBzdHJpbmcx
LT5jaGFyYWN0ZXJzOCgpLCBzdHJpbmcyLT5jaGFyYWN0ZXJzMTYoKSk7Cit9CisKK3N0YXRpYyBp
bmxpbmUgaW50IGNvZGVQb2ludENvbXBhcmUoY29uc3QgU3RyaW5nSW1wbCogc3RyaW5nMSwgY29u
c3QgU3RyaW5nSW1wbCogc3RyaW5nMikKK3sKKyAgICBpZiAoc3RyaW5nMSAmJiBzdHJpbmcyKSB7
CisgICAgICAgIGJvb2wgc3RyaW5nMUlzOEJpdCA9IHN0cmluZzEtPmlzOEJpdCgpOworICAgICAg
ICBib29sIHN0cmluZzJJczhCaXQgPSBzdHJpbmcyLT5pczhCaXQoKTsKKyAgICAgICAgaWYgKHN0
cmluZzFJczhCaXQpIHsKKyAgICAgICAgICAgIGlmIChzdHJpbmcySXM4Qml0KQorICAgICAgICAg
ICAgICAgIHJldHVybiBjb2RlUG9pbnRDb21wYXJlOChzdHJpbmcxLCBzdHJpbmcyKTsKKyAgICAg
ICAgICAgIHJldHVybiBjb2RlUG9pbnRDb21wYXJlOFRvMTYoc3RyaW5nMSwgc3RyaW5nMik7Cisg
ICAgICAgIH0KKyAgICAgICAgaWYgKHN0cmluZzJJczhCaXQpCisgICAgICAgICAgICByZXR1cm4g
LWNvZGVQb2ludENvbXBhcmU4VG8xNihzdHJpbmcyLCBzdHJpbmcxKTsKKyAgICAgICAgcmV0dXJu
IGNvZGVQb2ludENvbXBhcmUxNihzdHJpbmcxLCBzdHJpbmcyKTsKKyAgICB9CisKKyAgICBjb25z
dCB1bnNpZ25lZCBsMSA9IHN0cmluZzEgPyBzdHJpbmcxLT5sZW5ndGgoKSA6IDA7CisgICAgY29u
c3QgdW5zaWduZWQgbDIgPSBzdHJpbmcyID8gc3RyaW5nMi0+bGVuZ3RoKCkgOiAwOworICAgIHJl
dHVybiAobDEgPiBsMikgPyAxIDogLTE7Cit9CiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBpc1NwYWNl
T3JOZXdsaW5lKFVDaGFyIGMpCiB7Cg==
</data>
<flag name="review"
          id="135193"
          type_id="1"
          status="+"
          setter="ggaren"
    />
    <flag name="commit-queue"
          id="135364"
          type_id="3"
          status="-"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>