ruby-trunk-changes r66274 - r66284

今日は Hash の st_table 実装の時(要素数が9以上の時)に hash 値が 0 のキーの要素が消える MJIT のヘッダのインストール先のパスの設定やすりかえの方法の変更などがありました。

nobu: r66274 2018-12-07 21:03:16 +0900

hash.c の RESERVED_HASH_VAL と RESERVED_HASH_SUBSTITUTION_VAL という定数マクロの値が st.c の同名のものと逆になっていて、理屈はよくわかってませんが st_table による実装の時にはこの結果 hash 値が 0 のオブジェクトの要素がなくなる? 見えなくなる? のを修正しています。 [ruby-core:90356] [Bug #15389]

suke: r66275 2018-12-07 21:12:45 +0900

rubyspec の win32ole のテストでも Internet Explorer が利用できない環境のためにかわりに System Monitor Control を利用するようにしています。

nobu: r66276 2018-12-07 23:37:28 +0900

r66275 で rubyspec の win32ole のテストに導入した必要な COM が使えるかの判定の定数で Enumerable#find と !! というイディオム(! は真偽値を逆転するので !! とすることで真偽値として解釈した場合の結果にあわせて true または false を返す)を組み合わせてたのを Enumerable#any? を使うようにリファクタリング

nobu: r66277 2018-12-08 01:48:21 +0900

mjit.c の init_header_filename() で precompiled header のファイルパスエラー時のメモリ解放漏れがあったのを修正しています。なんですが get_uniq_filename() って xmalloc() 使ってて 0 を返すことがなさそう。

svn: r66278 2018-12-08 01:48:23 +0900

version.h の日付更新。

nobu: r66279 2018-12-08 10:49:02 +0900

テスト時に MJIT 用にインストール先ディレクトリのかわりにビルドディレクトリを使わせるための共有ライブラリを生成するのに mjit_build_dir.c というソースファイルを生成するようにしていましたが、ruby-runner.c に直接 preprocesor 分岐を作って埋め込ませるようにしています。

nobu: r66280 2018-12-08 10:50:39 +0900

r66279 の続きで MJIT の生成物を置くディレクトリをテスト時にすりかえるための共有ライブラリにディレクトリ名でなく precompiled header のファイルパス全体をすりかえるようにしています。

nobu: r66281 2018-12-08 11:05:06 +0900

mjit_build_dir.so の依存関係から mjit_config.h は不要になったので削除しています。

nobu: r66282 2018-12-08 11:20:14 +0900

mjit_config.h に埋め込む MJIT_HEADER_INSTALL_DIR は configur 時に --enable-load-relative が指定されていなかったら Makefile の rubyarchhdrdir 変数を利用するようにしています。 なんのことかよくわかりませんでしたが configure でこのディレクトリを変更した時に MJIT のヘッダインストール先が追随しないというのを修正しているみたいです。 [ruby-core:90365] [Bug #15391]

nobu: r66283 2018-12-08 12:32:39 +0900

r66280 の変更漏れと preprocessor の分岐位置のミスでビルドエラーになっていたのを修正。

nobu: r66284 2018-12-08 15:52:21 +0900

MJIT 用のヘッダファイルの init_header_filename() での探索でみつからなかった時などにも余分なデバッグメッセージが出力されていたので出力を分岐内に移動しています。