<?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>13383</bug_id>
          
          <creation_ts>2007-04-18 00:08:17 -0700</creation_ts>
          <short_desc>[js-collector-tweaks] Allocate collector blocks aligned</short_desc>
          <delta_ts>2007-04-22 21:23:29 -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>523.x (Safari 3)</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>
          <dependson>13382</dependson>
          <blocked>13384</blocked>
    
    <blocked>13389</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Maciej Stachowiak">mjs</reporter>
          <assigned_to name="Maciej Stachowiak">mjs</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>14368</commentid>
    <comment_count>0</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2007-04-18 00:08:17 -0700</bug_when>
    <thetext>Collector blocks should be allocated aligned to their natural size. This will enable future optimizations.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>14369</commentid>
    <comment_count>1</comment_count>
      <attachid>14064</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2007-04-18 00:08:55 -0700</bug_when>
    <thetext>Created attachment 14064
03-js-gc-aligned-blocks.patch.txt</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>14259</commentid>
    <comment_count>2</comment_count>
      <attachid>14064</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2007-04-18 11:05:31 -0700</bug_when>
    <thetext>Comment on attachment 14064
03-js-gc-aligned-blocks.patch.txt

Some style nitpicks:

+    uintptr_t ptr = reinterpret_cast&lt;uintptr_t&gt;(result);

This could be a static_cast, because you can cast to/from void* to another pointer type without reinterpret_cast.

+    if (adjust &gt; 0)
+        munmap(reinterpret_cast&lt;void*&gt;(ptr), adjust);
+
+    if (adjust &lt; extra)
+        munmap(reinterpret_cast&lt;void*&gt;(ptr + adjust + BLOCK_SIZE), extra - adjust);
+
+    ptr += adjust;
+    memset(reinterpret_cast&lt;void*&gt;(ptr), 0, BLOCK_SIZE);

I don&apos;t think these need casts at all. You can past any pointer type to void* as long as it&apos;s not a pointer to const or volatile.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>14216</commentid>
    <comment_count>3</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2007-04-18 14:58:40 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 14064 [edit])
&gt; Some style nitpicks:
&gt; 
&gt; +    uintptr_t ptr = reinterpret_cast&lt;uintptr_t&gt;(result);
&gt; 
&gt; This could be a static_cast, because you can cast to/from void* to another
&gt; pointer type without reinterpret_cast.

uintptr_t is not a pointer type, it&apos;s an arithmetic type. (Unsigned integer type large enough to hold all the bits of a pointer).

&gt; 
&gt; +    if (adjust &gt; 0)
&gt; +        munmap(reinterpret_cast&lt;void*&gt;(ptr), adjust);
&gt; +
&gt; +    if (adjust &lt; extra)
&gt; +        munmap(reinterpret_cast&lt;void*&gt;(ptr + adjust + BLOCK_SIZE), extra -
&gt; adjust);
&gt; +
&gt; +    ptr += adjust;
&gt; +    memset(reinterpret_cast&lt;void*&gt;(ptr), 0, BLOCK_SIZE);
&gt; 
&gt; I don&apos;t think these need casts at all. You can past any pointer type to void*
&gt; as long as it&apos;s not a pointer to const or volatile.

Ditto here.

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>13207</commentid>
    <comment_count>4</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2007-04-22 21:23:29 -0700</bug_when>
    <thetext>Landed. I renamed &quot;ptr&quot; to &quot;address&quot; to make more clear that it is a numeric address value, not a pointer.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>14064</attachid>
            <date>2007-04-18 00:08:55 -0700</date>
            <delta_ts>2007-04-18 11:05:31 -0700</delta_ts>
            <desc>03-js-gc-aligned-blocks.patch.txt</desc>
            <filename>03-js-gc-aligned-blocks.patch.txt</filename>
            <type>text/plain</type>
            <size>4755</size>
            <attacher name="Maciej Stachowiak">mjs</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwNzQ2KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCShyZXZpc2lvbiAyMDc0NykKQEAgLTEsMyArMSwxNSBAQAorMjAwNy0wNC0xNyAgTWFjaWVq
IFN0YWNob3dpYWsgIDxtanNAYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgLSBjaGFuZ2UgYmxvY2tzIHRvIDY0ayBpbiBz
aXplLCBhbmQgdXNlIHZhcmlvdXMgcGxhdGZvcm0tc3BlY2lmaWMgY2FsbHMgdG8gYWxsb2NhdGUg
YXQgNjRrLWFsaWduZWQgYWRkcmVzc2VzCisKKyAgICAgICAgKiBranMvY29sbGVjdG9yLmNwcDoK
KyAgICAgICAgKEtKUzo6YWxsb2NhdGVCbG9jayk6CisgICAgICAgIChLSlM6OmZyZWVCbG9jayk6
CisgICAgICAgIChLSlM6OkNvbGxlY3Rvcjo6YWxsb2NhdGUpOgorICAgICAgICAoS0pTOjpDb2xs
ZWN0b3I6OmNvbGxlY3QpOgorCiAyMDA3LTA0LTA1ICBNYWNpZWogU3RhY2hvd2lhayAgPG1qc0Bh
cHBsZS5jb20+CiAKICAgICAgICAgTm90IHJldmlld2VkLCBleHBlcmltZW50YWwgY2hhbmdlLgpJ
bmRleDogSmF2YVNjcmlwdENvcmUva2pzL2NvbGxlY3Rvci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2
YVNjcmlwdENvcmUva2pzL2NvbGxlY3Rvci5jcHAJKHJldmlzaW9uIDIwNzQ2KQorKysgSmF2YVNj
cmlwdENvcmUva2pzL2NvbGxlY3Rvci5jcHAJKHJldmlzaW9uIDIwNzQ3KQpAQCAtMzcsOCArMzcs
MTAgQEAKICNpZiBQTEFURk9STShEQVJXSU4pCiAKICNpbmNsdWRlIDxtYWNoL21hY2hfcG9ydC5o
PgorI2luY2x1ZGUgPG1hY2gvbWFjaF9pbml0Lmg+CiAjaW5jbHVkZSA8bWFjaC90YXNrLmg+CiAj
aW5jbHVkZSA8bWFjaC90aHJlYWRfYWN0Lmg+CisjaW5jbHVkZSA8bWFjaC92bV9tYXAuaD4KIAog
I2VsaWYgUExBVEZPUk0oV0lOX09TKQogCkBAIC00Niw2ICs0OCw5IEBACiAKICNlbGlmIFBMQVRG
T1JNKFVOSVgpCiAKKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxzeXMvbW1hbi5oPgor
CiAjaWYgSEFWRShQVEhSRUFEX05QX0gpCiAjaW5jbHVkZSA8cHRocmVhZF9ucC5oPgogI2VuZGlm
CkBAIC01OSwxNCArNjQsMTMgQEAKIG5hbWVzcGFjZSBLSlMgewogCiAKLQogLy8gdHVuYWJsZSBw
YXJhbWV0ZXJzCiAKIHRlbXBsYXRlPGJvb2wgaXMzMkJpdCwgYm9vbCBpczY0Qml0PiBzdHJ1Y3Qg
Q2VsbFNpemU7CiB0ZW1wbGF0ZTw+IHN0cnVjdCBDZWxsU2l6ZTx0cnVlLCBmYWxzZT4geyBzdGF0
aWMgY29uc3Qgc2l6ZV90IG1fdmFsdWUgPSA0ODsgfTsgLy8gMzItYml0CiB0ZW1wbGF0ZTw+IHN0
cnVjdCBDZWxsU2l6ZTxmYWxzZSwgdHJ1ZT4geyBzdGF0aWMgY29uc3Qgc2l6ZV90IG1fdmFsdWUg
PSA4MDsgfTsgLy8gNjQtYml0CiAKLWNvbnN0IHNpemVfdCBCTE9DS19TSVpFID0gKDggKiA0MDk2
KTsKK2NvbnN0IHNpemVfdCBCTE9DS19TSVpFID0gKDE2ICogNDA5Nik7IC8vIDY0awogY29uc3Qg
c2l6ZV90IFNQQVJFX0VNUFRZX0JMT0NLUyA9IDI7CiBjb25zdCBzaXplX3QgTUlOX0FSUkFZX1NJ
WkUgPSAxNDsKIGNvbnN0IHNpemVfdCBHUk9XVEhfRkFDVE9SID0gMjsKQEAgLTc0LDYgKzc4LDgg
QEAKIGNvbnN0IHNpemVfdCBBTExPQ0FUSU9OU19QRVJfQ09MTEVDVElPTiA9IDEwMDA7CiAKIC8v
IGRlcml2ZWQgY29uc3RhbnRzCitjb25zdCBzaXplX3QgUFRSX0lOX0JMT0NLX01BU0sgPSAoQkxP
Q0tfU0laRSAtIDEpOworY29uc3Qgc2l6ZV90IEJMT0NLX01BU0sgPSAoflBUUl9JTl9CTE9DS19N
QVNLKTsKIGNvbnN0IHNpemVfdCBNSU5JTVVNX0NFTExfU0laRSA9IENlbGxTaXplPHNpemVvZih2
b2lkKikgPT0gc2l6ZW9mKHVpbnQzMl90KSwgc2l6ZW9mKHZvaWQqKSA9PSBzaXplb2YodWludDY0
X3QpPjo6bV92YWx1ZTsKIGNvbnN0IHNpemVfdCBDRUxMX0FSUkFZX0xFTkdUSCA9IChNSU5JTVVN
X0NFTExfU0laRSAvIHNpemVvZihkb3VibGUpKSArIChNSU5JTVVNX0NFTExfU0laRSAlIHNpemVv
Zihkb3VibGUpICE9IDAgPyAxIDogMCk7CiBjb25zdCBzaXplX3QgQ0VMTF9TSVpFID0gQ0VMTF9B
UlJBWV9MRU5HVEggKiBzaXplb2YoZG91YmxlKTsKQEAgLTEzNCw2ICsxNDAsNTggQEAKIGJvb2wg
R0NMb2NrOjppc0xvY2tlZCA9IGZhbHNlOwogI2VuZGlmCiAKK3N0YXRpYyBDb2xsZWN0b3JCbG9j
ayogYWxsb2NhdGVCbG9jaygpCit7CisjaWYgUExBVEZPUk0oREFSV0lOKSAgICAKKyAgICB2bV9h
ZGRyZXNzX3QgcHRyID0gMDsKKyAgICB2bV9tYXAoY3VycmVudF90YXNrKCksICZwdHIsIEJMT0NL
X1NJWkUsIFBUUl9JTl9CTE9DS19NQVNLLCBWTV9GTEFHU19BTllXSEVSRSwgTUVNT1JZX09CSkVD
VF9OVUxMLCAwLCBGQUxTRSwgVk1fUFJPVF9ERUZBVUxULCBWTV9QUk9UX0RFRkFVTFQsIFZNX0lO
SEVSSVRfREVGQVVMVCk7CisjZWxpZiBQTEFURk9STShXSU4pCisgICAgIC8vIHdpbmRvd3Mgdmly
dHVhbCBhZGRyZXNzIGdyYW51bGFyaXR5IGlzIG5hdHVyYWxseSA2NGsKKyAgICBMUFZPSUQgcHRy
ID0gVmlydHVhbEFsbG9jKE5VTEwgbHBBZGRyZXNzLCBCTE9DS19TSVpFLCBNRU1fQ09NTUlUIHwg
TUVNX1JFU0VSVkUsIFBBR0VfUkVBRFdSSVRFKTsKKyNlbGlmIEhBVkUoUE9TSVhfTUVNQUxJR04p
CisgICAgdm9pZCogcHRyOworICAgIHBvc2l4X21lbWFsaWduKHB0ciwgQkxPQ0tfU0laRSwgQkxP
Q0tfU0laRSk7CisjZWxzZQorICAgIHN0YXRpYyBzaXplX3QgcGFnZXNpemUgPSBnZXRwYWdlc2l6
ZSgpOworICAgIAorICAgIHNpemVfdCBleHRyYSA9IDA7CisgICAgaWYgKEJMT0NLX1NJWkUgPiBw
YWdlc2l6ZSkgeworICAgICAgICBleHRyYSA9IEJMT0NLX1NJWkUgLSBwYWdlc2l6ZTsKKyAgICB9
CisKKyAgICB2b2lkKiByZXN1bHQgPSBtbWFwKE5VTEwsIEJMT0NLX1NJWkUgKyBleHRyYSwgUFJP
VF9SRUFEIHwgUFJPVF9XUklURSwgTUFQX1BSSVZBVEUgfCBNQVBfQU5PTiwgLTEsIDApOworCisg
ICAgdWludHB0cl90IHB0ciA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihyZXN1bHQpOwor
ICAgIHNpemVfdCBhZGp1c3QgPSAwOworICAgIGlmICgocHRyICYgUFRSX0lOX0JMT0NLX01BU0sp
ICE9IDApCisgICAgICAgIGFkanVzdCA9IEJMT0NLX1NJWkUgLSAocHRyICYgUFRSX0lOX0JMT0NL
X01BU0spOworCisgICAgaWYgKGFkanVzdCA+IDApCisgICAgICAgIG11bm1hcChyZWludGVycHJl
dF9jYXN0PHZvaWQqPihwdHIpLCBhZGp1c3QpOworCisgICAgaWYgKGFkanVzdCA8IGV4dHJhKQor
ICAgICAgICBtdW5tYXAocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ocHRyICsgYWRqdXN0ICsgQkxP
Q0tfU0laRSksIGV4dHJhIC0gYWRqdXN0KTsKKworICAgIHB0ciArPSBhZGp1c3Q7CisgICAgbWVt
c2V0KHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHB0ciksIDAsIEJMT0NLX1NJWkUpOworI2VuZGlm
CisKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxDb2xsZWN0b3JCbG9jayo+KHB0cik7Cit9
CisKK3N0YXRpYyB2b2lkIGZyZWVCbG9jayhDb2xsZWN0b3JCbG9jayogYmxvY2spCit7CisjaWYg
UExBVEZPUk0oREFSV0lOKSAgICAKKyAgICB2bV9kZWFsbG9jYXRlKGN1cnJlbnRfdGFzaygpLCBy
ZWludGVycHJldF9jYXN0PHZtX2FkZHJlc3NfdD4oYmxvY2spLCBCTE9DS19TSVpFKTsKKyNlbGlm
IFBMQVRGT1JNKFdJTikKKyAgICBWaXJ0dWFsRnJlZShibG9jaywgQkxPQ0tfU0laRSwgTUVNX1JF
TEVBU0UpOworI2VsaWYgSEFWRShQT1NJWF9NRU1BTElHTikKKyAgICBmcmVlKGJsb2NrKTsKKyNl
bHNlCisgICAgbXVubWFwKGJsb2NrLCBCTE9DS19TSVpFKTsKKyNlbmRpZgorfQorCiB2b2lkKiBD
b2xsZWN0b3I6OmFsbG9jYXRlKHNpemVfdCBzKQogewogICBBU1NFUlQoSlNMb2NrOjpsb2NrQ291
bnQoKSA+IDApOwpAQCAtMTgzLDcgKzI0MSw3IEBACiAgICAgICBoZWFwLmJsb2NrcyA9IHN0YXRp
Y19jYXN0PENvbGxlY3RvckJsb2NrICoqPihmYXN0UmVhbGxvYyhoZWFwLmJsb2NrcywgbnVtQmxv
Y2tzICogc2l6ZW9mKENvbGxlY3RvckJsb2NrICopKSk7CiAgICAgfQogCi0gICAgdGFyZ2V0Qmxv
Y2sgPSBzdGF0aWNfY2FzdDxDb2xsZWN0b3JCbG9jayAqPihmYXN0Q2FsbG9jKDEsIHNpemVvZihD
b2xsZWN0b3JCbG9jaykpKTsKKyAgICB0YXJnZXRCbG9jayA9IGFsbG9jYXRlQmxvY2soKTsKICAg
ICB0YXJnZXRCbG9jay0+ZnJlZUxpc3QgPSB0YXJnZXRCbG9jay0+Y2VsbHM7CiAgICAgdGFyZ2V0
QmxvY2tVc2VkQ2VsbHMgPSAwOwogICAgIGhlYXAuYmxvY2tzW3VzZWRCbG9ja3NdID0gdGFyZ2V0
QmxvY2s7CkBAIC03ODgsNyArODQ2LDcgQEAKICAgICAgIGVtcHR5QmxvY2tzKys7CiAgICAgICBp
ZiAoZW1wdHlCbG9ja3MgPiBTUEFSRV9FTVBUWV9CTE9DS1MpIHsKICNpZiAhREVCVUdfQ09MTEVD
VE9SCi0gICAgICAgIGZhc3RGcmVlKGN1ckJsb2NrKTsKKyAgICAgICAgZnJlZUJsb2NrKGN1ckJs
b2NrKTsKICNlbmRpZgogICAgICAgICAvLyBzd2FwIHdpdGggdGhlIGxhc3QgYmxvY2sgc28gd2Ug
Y29tcGFjdCBhcyB3ZSBnbwogICAgICAgICBoZWFwLmJsb2Nrc1tibG9ja10gPSBoZWFwLmJsb2Nr
c1toZWFwLnVzZWRCbG9ja3MgLSAxXTsK
</data>
<flag name="review"
          id="5679"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>