<?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>123955</bug_id>
          
          <creation_ts>2013-11-06 22:19:05 -0800</creation_ts>
          <short_desc>Avoid calling fastRealloc when it returns the same address</short_desc>
          <delta_ts>2013-11-06 22:19:05 -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>Web Template Framework</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.8</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P5</priority>
          <bug_severity>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Hironori Bono">hbono</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>948072</commentid>
    <comment_count>0</comment_count>
      <attachid>216259</attachid>
    <who name="Hironori Bono">hbono</who>
    <bug_when>2013-11-06 22:19:05 -0800</bug_when>
    <thetext>Created attachment 216259
A patch that uses fastMallocGoodSize

Greetings,

On OS X, malloc() rounds up the specified size to a multiple of malloc_good_size(). (For example, malloc(1) returns a 16-byte block on OS X.) Also, as listed in the source code &lt;http://www.opensource.apple.com/source/Libc/Libc-594.1.4/gen/malloc.c&gt;, realloc() returns the same address when the specified new size is less than the block size of the given memory, i.e. |p0| is equal to |p1| in the following code snippet.

  int main(int argc, char* argv[]) {
    void* p0 = malloc(1);
    void* p1 = realloc(p0, 10);
    printf(&quot;p0=%p, p1=%p\n&quot;, p0, p1);
    return 0;
  }

To consider this fact, it may be good for the StringBuilder class to use fastMallocGoodSize(length) instead of length to check if it needs to call StringBuilder&lt;T&gt;::reallocateBuffer() as listed in the attached diff. (For your information, the StringBUilder class tried reallocating memory to the same block size &gt;13000 times when I ran &apos;run-webkit-tests --no-http&apos; on my Mac.)

Regards,

Hironori Bono</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>216259</attachid>
            <date>2013-11-06 22:19:05 -0800</date>
            <delta_ts>2013-11-06 22:19:05 -0800</delta_ts>
            <desc>A patch that uses fastMallocGoodSize</desc>
            <filename>stringbuilder.diff</filename>
            <type>text/plain</type>
            <size>2788</size>
            <attacher name="Hironori Bono">hbono</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nQnVpbGRlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmNwcCAgICAgICAocmV2aXNpb24g
MTU4ODA4KQorKysgU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmNwcCAgICAgICAo
d29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsMTIgQEAKCiBuYW1lc3BhY2UgV1RGIHsKCitzdGF0
aWMgYm9vbCBuZWVkUmVhbGxvY2F0aW9uKHNpemVfdCBuZXdMZW5ndGgsIHNpemVfdCBvbGRMZW5n
dGgsIGJvb2wgaXM4Qml0KQoreworICAgIGNvbnN0IHNpemVfdCBrQ2hhclNpemUgPSBpczhCaXQg
PyBzaXplb2YoTENoYXIpIDogc2l6ZW9mKFVDaGFyKTsKKyAgICByZXR1cm4gZmFzdE1hbGxvY0dv
b2RTaXplKHNpemVvZihTdHJpbmdJbXBsKSArIG5ld0xlbmd0aCAqIGtDaGFyU2l6ZSkgPiBmYXN0
TWFsbG9jR29vZFNpemUoc2l6ZW9mKFN0cmluZ0ltcGwpICsgb2xkTGVuZ3RoICoga0NoYXJTaXpl
KTsKK30KKwogc3RhdGljIHNpemVfdCBleHBhbmRlZENhcGFjaXR5KHNpemVfdCBjYXBhY2l0eSwg
c2l6ZV90IG5ld0xlbmd0aCkKIHsKICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IG1pbmltdW1DYXBh
Y2l0eSA9IDE2OwpAQCAtMTc1LDcgKzE4MSw3IEBAIHZvaWQgU3RyaW5nQnVpbGRlcjo6cmVzZXJ2
ZUNhcGFjaXR5KHVuc2kKIHsKICAgICBpZiAobV9idWZmZXIpIHsKICAgICAgICAgLy8gSWYgdGhl
cmUgaXMgYWxyZWFkeSBhIGJ1ZmZlciwgdGhlbiBncm93IGlmIG5lY2Vzc2FyeS4KLSAgICAgICAg
aWYgKG5ld0NhcGFjaXR5ID4gbV9idWZmZXItPmxlbmd0aCgpKSB7CisgICAgICAgIGlmIChuZWVk
UmVhbGxvY2F0aW9uKG5ld0NhcGFjaXR5LCBtX2J1ZmZlci0+bGVuZ3RoKCksIG1fYnVmZmVyLT5p
czhCaXQoKSkpIHsKICAgICAgICAgICAgIGlmIChtX2J1ZmZlci0+aXM4Qml0KCkpCiAgICAgICAg
ICAgICAgICAgcmVhbGxvY2F0ZUJ1ZmZlcjxMQ2hhcj4obmV3Q2FwYWNpdHkpOwogICAgICAgICAg
ICAgZWxzZQpAQCAtMzUxLDcgKzM1Nyw3IEBAIHZvaWQgU3RyaW5nQnVpbGRlcjo6YXBwZW5kRml4
ZWRXaWR0aE51bWIKIGJvb2wgU3RyaW5nQnVpbGRlcjo6Y2FuU2hyaW5rKCkgY29uc3QKIHsKICAg
ICAvLyBPbmx5IHNocmluayB0aGUgYnVmZmVyIGlmIGl0J3MgbGVzcyB0aGFuIDgwJSBmdWxsLiBO
ZWVkIHRvIHR1bmUgdGhpcyBoZXVyaXN0aWMhCi0gICAgcmV0dXJuIG1fYnVmZmVyICYmIG1fYnVm
ZmVyLT5sZW5ndGgoKSA+IChtX2xlbmd0aCArIChtX2xlbmd0aCA+PiAyKSk7CisgICAgcmV0dXJu
IG1fYnVmZmVyICYmIG1fYnVmZmVyLT5sZW5ndGgoKSA+IChtX2xlbmd0aCArIChtX2xlbmd0aCA+
PiAyKSkgJiYgbmVlZFJlYWxsb2NhdGlvbihtX2J1ZmZlci0+bGVuZ3RoKCksIG1fbGVuZ3RoLCBt
X2lzOEJpdCk7CiB9Cgogdm9pZCBTdHJpbmdCdWlsZGVyOjpzaHJpbmtUb0ZpdCgpCkluZGV4OiBT
b3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
VEYvd3RmL3RleHQvU3RyaW5nSW1wbC5jcHAgIChyZXZpc2lvbiAxNTg4MDgpCisrKyBTb3VyY2Uv
V1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwICAod29ya2luZyBjb3B5KQpAQCAtMTk3LDcgKzE5
Nyw3IEBAIGlubGluZSBQYXNzUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OmMKICAgICAvLyBo
ZWFwIGFsbG9jYXRpb24gZnJvbSB0aGlzIGNhbGwuCiAgICAgaWYgKGxlbmd0aCA+ICgoc3RkOjpu
dW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpIC0gc2l6ZW9mKFN0cmluZ0ltcGwpKSAvIHNp
emVvZihDaGFyVHlwZSkpKQogICAgICAgICBDUkFTSCgpOwotICAgIHNpemVfdCBzaXplID0gc2l6
ZW9mKFN0cmluZ0ltcGwpICsgbGVuZ3RoICogc2l6ZW9mKENoYXJUeXBlKTsKKyAgICBzaXplX3Qg
c2l6ZSA9IGZhc3RNYWxsb2NHb29kU2l6ZShzaXplb2YoU3RyaW5nSW1wbCkgKyBsZW5ndGggKiBz
aXplb2YoQ2hhclR5cGUpKTsKICAgICBTdHJpbmdJbXBsKiBzdHJpbmcgPSBzdGF0aWNfY2FzdDxT
dHJpbmdJbXBsKj4oZmFzdE1hbGxvYyhzaXplKSk7CgogICAgIGRhdGEgPSByZWludGVycHJldF9j
YXN0PENoYXJUeXBlKj4oc3RyaW5nICsgMSk7CkBAIC0yMjgsNyArMjI4LDcgQEAgaW5saW5lIFBh
c3NSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6cgogICAgIC8vIFNhbWUgYXMgY3JlYXRlVW5p
bml0aWFsaXplZCgpIGV4Y2VwdCBoZXJlIHdlIHVzZSBmYXN0UmVhbGxvYy4KICAgICBpZiAobGVu
Z3RoID4gKChzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkgLSBzaXplb2YoU3Ry
aW5nSW1wbCkpIC8gc2l6ZW9mKENoYXJUeXBlKSkpCiAgICAgICAgIENSQVNIKCk7Ci0gICAgc2l6
ZV90IHNpemUgPSBzaXplb2YoU3RyaW5nSW1wbCkgKyBsZW5ndGggKiBzaXplb2YoQ2hhclR5cGUp
OworICAgIHNpemVfdCBzaXplID0gZmFzdE1hbGxvY0dvb2RTaXplKHNpemVvZihTdHJpbmdJbXBs
KSArIGxlbmd0aCAqIHNpemVvZihDaGFyVHlwZSkpOwogICAgIG9yaWdpbmFsU3RyaW5nLT5+U3Ry
aW5nSW1wbCgpOwogICAgIFN0cmluZ0ltcGwqIHN0cmluZyA9IHN0YXRpY19jYXN0PFN0cmluZ0lt
cGwqPihmYXN0UmVhbGxvYyhvcmlnaW5hbFN0cmluZy5sZWFrUmVmKCksIHNpemUpKTsKCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>