ruby-trunk-changes r44541 - r44555

今日は Method オブジェクトも Module で定義したメソッドであれば別のクラスのインスタンスに移植できるようにしています。また Hash の [ ], [ ]= のメソッドのキーが文字列リテラルだった時に余分なオブジェクトの生成を抑制する最適化が入っています。

nobu: r44541 2014-01-10 00:47:54 +0900

r44507 での拡張ライブラリ tk の extconf.rb で libpathflag() を使うようにしたところで配列を渡すように再修正しています。 [ruby-core:59665] [Bug #9386]

svn: r44542 2014-01-10 00:48:01 +0900

version.h の日付更新。

marcandre: r44543 2014-01-10 02:33:47 +0900

Array#<=> と File::Stat#<=> の rdoc で nil を返す条件について追記しています。

marcandre: r44544 2014-01-10 02:34:01 +0900

doc/NEWS-2.1.0 に文字列リテラルの "string".freeze の最適化について追記しています。

marcandre: r44545 2014-01-10 02:34:14 +0900

Object#freeze の rdoc 用コメントにデフォルトで freeze されているインスタンスのクラスについて追記しています。

marcandre: r44546 2014-01-10 02:34:27 +0900

Object#object_id の rdoc から古くなった記述を削除しています。

marcandre: r44547 2014-01-10 02:34:39 +0900

Object#object_id の rdoc 用コメントに何度評価しても同一オブジェクトになる最適化の例を追記しています。

marcandre: r44548 2014-01-10 02:49:31 +0900

r44547 の追記で Symbol も即値になるクラスに追加しています。

eregon: r44549 2014-01-10 06:23:45 +0900

Range#size の rdoc 用コメントに両端が Numeric でない時は nil を返すという記述とサンプルを追記しています。 https://github.com/ruby/ruby/pull/501

tmm1: r44550 2014-01-10 13:13:04 +0900

r44547 の Object#object_id の rdoc 追記の typo 修正。

tmm1: r44551 2014-01-10 13:54:08 +0900

Hash#[ ] と Hash#[ ]= でキーが文字列リテラルだった場合は文字列オブジェクトを生成しないようにする最適化を追加しています。 [ruby-core:59640] [Bug #9382]
さらに Hash#[ ] と Hash#[ ]= が再定義されていなかったら直接 rb_hash_aref() や rb_hash_aset() を呼び出すようにする VM 命令の最適化命令も追加しています。

nobu: r44552 2014-01-10 17:40:37 +0900

r44527 で追加した Module のメソッド内で super した時のテストで 2.0.0 でも再現するやつで不要な Object#extend の呼び出しがあったそうで削っています。

nobu: r44553 2014-01-10 18:01:44 +0900

2.0.0 から UnboundMethod は継承関係にない Class/Module 間の define_method に渡して移植可能になっていましたが、Method#bind もそのメソッドの定義が Module のものであれば他のクラスのインスタンスに bind して呼べるようにしています。 Refinements に関連した制限もあるようで、多分 refine ブロック内で include された Module のメソッドは移植できないようです。

yugui: r44554 2014-01-10 18:22:37 +0900

vm_exec.c でレジスタの操作をしているところで NativeClient 向けの修正をしています。 NativeClient では x86_64 の r15 が予約されているので r11 を使うようにしています。

nobu: r44555 2014-01-10 18:42:31 +0900

WeakRef のテストで GC で回収されるかどうかは確実ではないのでたまたま失敗するのを回避するため複数 WeakRef を作っておいてどれかで回収されていたら OK にするようにテストを修正しています。