ruby-trunk-changes r34517 - r34527

今日は拡張ライブラリあたりのリファクタリングがあったくらいでした。

nobu:r34517 2012-02-10 00:15:57 +0900

ext/fiddle/fiddle.c の関数宣言の体裁を変更しただけです。

svn:r34519 2012-02-10 00:16:04 +0900

version.h の日付更新。

nobu:r34520 2012-02-10 00:47:11 +0900

メモリリークのチェックをするテストのメモリ使用量をチェックするあたりを test/ruby/envutil.rb に assert_no_memory_leak というメソッドとして切り出してそれを利用するようにリファクタリングしています。

nobu:r34521 2012-02-10 01:29:08 +0900

拡張ライブラリ dl のポインタをアライメントするためのオフセットを計算する DLALIGN() というマクロが1つずつインクリメントして while 文でアライメントが取れたら止めるということをしていたので余剰を計算して一度に加算するようにしています。

nobu:r34522 2012-02-10 01:30:43 +0900

拡張ライブラリ dl で型ごとのアラインメント(メモリ上のアドレスの Nの整数倍のところに置かれるか、の N)を構造体をそれぞれ定義しておいてから計算しているのを offsetof() マクロを使うマクロを定義して余分な型を定義せずに計算するようにリファクタリングしています。

nobu:r34523 2012-02-10 01:41:08 +0900

コンパイラが clang の時は -fno-defer-pop というオプションをコンパイル時につけずリンク時のみに付けるようにしています。 -fno-defer-pop は関数呼び出しから戻った時にすぐ引数をスタックから pop するようにするというものです。 clang はコンパイル時に指定されると警告メッセージをだしてしまうそうですが、pop の遅延をしていないんでしょうかね。

tenderlove:r34527 2012-02-10 03:44:27 +0900

拡張ライブラリ psych の Psych::Parser#external_encoding= というメソッドの C の実装は削除して、 Ruby で書かれたライブラリで attr_writer として定義するようにしています。元の実装は一度 external_encoding= で設定すると2度目以降は例外を発生させていたのですが、parser を使いまわせるように再設定できるようにしています。