From: "NARUSE, Yui" Date: 2008-03-12T19:50:18+09:00 Subject: [ruby-dev:34026] Re: MurmurHash problem This is a multi-part message in MIME format. --------------040901080606060100030500 Content-Type: text/plain; charset=ISO-2022-JP Content-Transfer-Encoding: 7bit 成瀬です。 というわけで、int32_t, uint32_t, intptr_t, uintptr_t を定義しつつ、 hash() をアライメント考慮させるパッチです。 U.Nakamura wrote: > | あとは int と long の使い分けでしょうか。なんとなく、 > | * int はただの整数。 > | * long は文字列長や文字位置等、ポインタとの演算が行われうるもの。 > | かなぁと思っているのですが、LP64 だとint において 64bit 化の恩恵が受けられず、 > | LLP64 だと int == long != *void なので long を分ける意義がないなぁとか。 > | 後者は intptr_t にしてもよさそうな気もします。 > > longを禁止にすると私が喜ぶような気がします。 > が、世界中の拡張ライブラリ作者が泣くんじゃないですかね。 禁止は「ぎゃっ」どころのさわぎじゃなさそうですが、 Ruby 本体からの追放と非推奨化はできそうですよね。 -- NARUSE, Yui DBDB A476 FDBD 9450 02CD 0EFC BCE3 C388 472E C1EA --------------040901080606060100030500 Content-Type: text/plain; name="murmurhash.patch" Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="murmurhash.patch" LS0tIGNvbmZpZ3VyZS5pbgkocmV2aXNpb24gMTU3NTgpCisrKyBjb25maWd1cmUuaW4JKHdv cmtpbmcgY29weSkKQEAgLTI3Myw2ICsyNzMsMTkgQEAgQUNfQ0hFQ0tfU0laRU9GKGZsb2F0 LCA0KQogQUNfQ0hFQ0tfU0laRU9GKGRvdWJsZSwgOCkKIEFDX0NIRUNLX1NJWkVPRih0aW1l X3QsIDApCiAKK0FDX0NIRUNLX1NJWkVPRihpbnQsIDQpCitBQ19DSEVDS19TSVpFT0Yoc2hv cnQsIDIpCitBQ19DSEVDS19TSVpFT0YobG9uZywgNCkKK0FDX0NIRUNLX1NJWkVPRihsb25n IGxvbmcsIDApCitBQ19DSEVDS19TSVpFT0YoX19pbnQ2NCwgMCkKK0FDX0NIRUNLX1NJWkVP RihvZmZfdCwgMCkKK0FDX0NIRUNLX1NJWkVPRih2b2lkKiwgNCkKK0FDX0NIRUNLX1NJWkVP RihmbG9hdCwgNCkKK0FDX0NIRUNLX1NJWkVPRihkb3VibGUsIDgpCitBQ19DSEVDS19TSVpF T0YodGltZV90LCAwKQorCitBQ19DSEVDS19UWVBFUyhbaW50MzJfdCwgdWludDMyX3QsIGlu dHB0cl90LCB1aW50cHRyX3RdKQorCiBkbmwgUlVCWV9SRVBMQUNFX1RZUEUgW3R5cGVuYW1l XSBbZGVmYXVsdCB0eXBlXSBbbWFjcm8gdHlwZV0gW2luY2x1ZGVkXQogQUNfREVGVU4oW1JV QllfUkVQTEFDRV9UWVBFXSwgW2RubAogICAgIEFDX0NIRUNLX1RZUEUoWyQxXSwKLS0tIGlu Y2x1ZGUvcnVieS9kZWZpbmVzLmgJKHJldmlzaW9uIDE1NzU4KQorKysgaW5jbHVkZS9ydWJ5 L2RlZmluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtOTksNiArOTksNTEgQEAgdm9pZCB4ZnJl ZSh2b2lkKik7CiAjIGRlZmluZSBCRElHSVRfREJMX1NJR05FRCBsb25nCiAjZW5kaWYKIAor LyogZGVmaW5lIGFkZGl0aW9uYWwgaW50ZWdlciB0eXBlcworICoKKyAqIGludDMyX3QsIHVp bnQzMl90LCBpbnRwdHJfdCwgdWludHB0cl90IGlzIG5vdyBkZWZpbmVkLgorICovCisKKyNp ZiBIQVZFX0lOVFRZUEVTX0gKKyMgaW5jbHVkZSA8aW50dHlwZXMuaD4KKyNlbmRpZgorCisj aWZuZGVmIEhBVkVfSU5UMzJfVAorIyBpZiBTSVpFT0ZfSU5UID09IDQKK3R5cGVkZWYgaW50 IGludDMyX3Q7CisjIGVsc2UKKyMgIGVycm9yIC0tLS0+PiBpbnQzMl90IGlzIG5vdCBkZWZp bmVkIGFuZCBubyBhdmFpbGFibGUgZmFsbGJhY2tzLiA8PC0tLS0KKyMgZW5kaWYKKyNlbmRp ZgorCisjaWZuZGVmIEhBVkVfVUlOVDMyX1QKKyMgaWYgU0laRU9GX0lOVCA9PSA0Cit0eXBl ZGVmIHVuc2lnbmVkIGludCB1aW50MzJfdAorIyBlbHNlCisjICBlcnJvciAtLS0tPj4gdWlu dDMyX3QgaXMgbm90IGRlZmluZWQgYW5kIG5vIGF2YWlsYWJsZSBmYWxsYmFja3MuIDw8LS0t LQorIyBlbmRpZgorI2VuZGlmCisKKyNpZm5kZWYgSEFWRV9JTlRQVFJfVAorIyBpZiBTSVpF T0ZfTE9ORyA9PSBTSVpFT0ZfVk9JRFAKK3R5cGVkZWYgbG9uZyBpbnRwdHJfdDsKKyMgZWxp ZiBTSVpFT0ZfTE9OR19MT05HID09IFNJWkVPRl9WT0lEUAordHlwZWRlZiBsb25nIGxvbmcg aW50cHRyX3Q7CisjIGVsc2UKKyMgIGVycm9yIC0tLS0+PiBpbnRwdHJfdCBpcyBub3QgZGVm aW5lZCBhbmQgbm8gYXZhaWxhYmxlIGZhbGxiYWNrcy4gPDwtLS0tCisjIGVuZGlmCisjZW5k aWYKKworI2lmbmRlZiBIQVZFX1VJTlRQVFJfVAorIyBpZiBTSVpFT0ZfTE9ORyA9PSBTSVpF T0ZfVk9JRFAKK3R5cGVkZWYgdW5zaWduZWQgbG9uZyB1aW50cHRyX3Q7CisjIGVsaWYgU0la RU9GX0xPTkdfTE9ORyA9PSBTSVpFT0ZfVk9JRFAKK3R5cGVkZWYgdW5zaWduZWQgbG9uZyBs b25nIHVpbnRwdHJfdDsKKyMgZWxzZQorIyAgZXJyb3IgLS0tLT4+IHVpbnRwdHJfdCBpcyBu b3QgZGVmaW5lZCBhbmQgbm8gYXZhaWxhYmxlIGZhbGxiYWNrcy4gPDwtLS0tCisjIGVuZGlm CisjZW5kaWYKKwogI2lmZGVmIF9fQ1lHV0lOX18KICN1bmRlZiBfV0lOMzIKICNlbmRpZgot LS0gc3RyaW5nLmMJKHJldmlzaW9uIDE1NzU4KQorKysgc3RyaW5nLmMJKHdvcmtpbmcgY29w eSkKQEAgLTE2ODYsNDAgKzE2ODYsODggQEAgcmJfc3RyX2NvbmNhdChWQUxVRSBzdHIxLCBW QUxVRSBzdHIyKQogfQogCiAvKiBNdXJtdXJIYXNoIGRlc2NyaWJlZCBpbiBodHRwOi8vbXVy bXVyaGFzaC5nb29nbGVwYWdlcy5jb20vICovCi11bnNpZ25lZCBpbnQKLWhhc2goY29uc3Qg dW5zaWduZWQgY2hhciAqIGRhdGEsIGludCBsZW4sIHVuc2lnbmVkIGludCBoKQotewotICAg IGNvbnN0IHVuc2lnbmVkIGludCBtID0gMHg3ZmQ2NTJhZDsKLSAgICBjb25zdCBpbnQgciA9 IDE2OworI2lmZGVmIFdPUkRTX0JJR0VORElBTgorI2RlZmluZSBzd2FwMzIoeCkJKCgoKHgp JjB4RkYpPDwyNCkJXAorCQkJfCgoKHgpPj4yNCkmMHhGRikJXAorCQkJfCgoKHgpJjB4MDAw MEZGMDApPDw4KQlcCisJCQl8KCgoeCkmMHgwMEZGMDAwMCk+PjgpCSkKKyNkZWZpbmUgaHRv djMyKHgpIHN3YXAzMih4KQorI2Vsc2UKKyNkZWZpbmUgaHRvdjMyKHgpIHgKKyNlbmRpZgor c3RhdGljIHVpbnQzMl90CitoYXNoKGNvbnN0IHVuc2lnbmVkIGNoYXIgKiBkYXRhLCBpbnRw dHJfdCBsZW4sIHVpbnQzMl90IGgpCit7CisgICAgY29uc3QgdWludDMyX3QgbSA9IDB4YzZh NGE3OTM7CisgICAgY29uc3QgaW50MzJfdCByID0gMTY7CisgICAgaW50cHRyX3QgYWxpZ24g PSAoaW50cHRyX3QpZGF0YSAmIDM7CiAKICAgICBoICs9IDB4ZGVhZGJlZWY7CiAKLSAgICB3 aGlsZShsZW4gPj0gNCkgewotCWggKz0gKih1bnNpZ25lZCBpbnQgKilkYXRhOwotCWggKj0g bTsKLQloIF49IGggPj4gcjsKKyAgICBpZiAobGVuIDwgNCkgeworICAgIH0KKyAgICBlbHNl IGlmKGFsaWduKSB7CisJdWludDMyX3QgdCA9IDAsIGQgPSAwLCBzbCA9IDggKiAoNC1hbGln biksIHNyID0gOCAqIGFsaWduOworCWludHB0cl90IHBhY2s7CisKKwlzd2l0Y2goYWxpZ24p IHsKKwljYXNlIDE6IHQgfD0gZGF0YVsyXSA8PCAxNjsKKwljYXNlIDI6IHQgfD0gZGF0YVsx XSA8PCA4OworCWNhc2UgMzogdCB8PSBkYXRhWzBdOworCWRlZmF1bHQ6dCA8PD0gKDggKiBh bGlnbik7CisJfQorCWRhdGEgKz0gNC1hbGlnbjsKKwlsZW4gLT0gNC1hbGlnbjsKKworCXdo aWxlIChsZW4gPj0gNCkgeworCSAgICBkID0gaHRvdjMyKCoodWludDMyX3QgKilkYXRhKTsK KwkgICAgdCA9ICh0ID4+IHNyKSB8IChkIDw8IHNsKTsKKwkgICAgaCArPSB0OworCSAgICBo ICo9IG07CisJICAgIGggXj0gaCA+PiByOworCSAgICB0ID0gZDsKKwkgICAgZGF0YSArPSA0 OworCSAgICBsZW4gLT0gNDsKKwl9CisKKwlwYWNrID0gbGVuIDwgYWxpZ24gPyBsZW4gOiBh bGlnbjsKKwlkID0gMDsKKwlzd2l0Y2gocGFjaykgeworCWNhc2UgMzogZCB8PSBkYXRhWzJd IDw8IDE2OworCWNhc2UgMjogZCB8PSBkYXRhWzFdIDw8IDg7CisJY2FzZSAxOiBkIHw9IGRh dGFbMF07CisJY2FzZSAwOiBoICs9ICh0ID4+IHNyKSB8IChkIDw8IHNsKTsKKwkgICAgaCAq PSBtOworCSAgICBoIF49IGggPj4gcjsKKwl9CisJZGF0YSArPSBwYWNrOworCWxlbiAtPSBw YWNrOworICAgIH0KKyAgICBlbHNlIHsKKwl3aGlsZSAobGVuID49IDQpIHsKKwkgICAgaCAr PSBodG92MzIoKih1aW50MzJfdCAqKWRhdGEpOworCSAgICBoICo9IG07CisJICAgIGggXj0g aCA+PiByOwogCi0JZGF0YSArPSA0OwotCWxlbiAtPSA0OworCSAgICBkYXRhICs9IDQ7CisJ ICAgIGxlbiAtPSA0OworCX0KICAgICB9CiAKLSAgICBzd2l0Y2gobGVuKSB7Ci0gICAgICBj YXNlIDM6Ci0JaCArPSBkYXRhWzJdIDw8IDE2OwotICAgICAgY2FzZSAyOgotCWggKz0gZGF0 YVsxXSA8PCA4OwotICAgICAgY2FzZSAxOgotCWggKz0gZGF0YVswXTsKKyAgICBzd2l0Y2go bGVuKQorICAgIHsKKyAgICBjYXNlIDM6IGggKz0gZGF0YVsyXSA8PCAxNjsKKyAgICBjYXNl IDI6IGggKz0gZGF0YVsxXSA8PCA4OworICAgIGNhc2UgMTogaCArPSBkYXRhWzBdOwogCWgg Kj0gbTsKIAloIF49IGggPj4gcjsKLSAgICB9OwotCisgICAgfQogICAgIGggKj0gbTsKICAg ICBoIF49IGggPj4gMTA7CiAgICAgaCAqPSBtOwogICAgIGggXj0gaCA+PiAxNzsKIAotICAg IHJldHVybiBoOworICAgIHJldHVybiAoaW50MzJfdCloOwogfQogCiBpbnQK --------------040901080606060100030500--