今日は VM の control frame の種類を判定する方法の変更などの内部的な変更と Object#clone の keyword 引数 freeze の値チェックの強化などがありました。
ko1: r55801 2016-08-03 09:16:34 +0900
RubyVM の env のフラグに VM_FRAME_FLAG_CFRAME というビットフラグを追加して、vm_push_frame() で control stack frame が C実装のメソッドやブロックの呼び出しの時の種類を表現させるようにしています。とりあえず vm_check_frame() でのチェックの強化に使っているだけ、かな?
svn: r55802 2016-08-03 09:16:35 +0900
version.h の日付更新。
ko1: r55803 2016-08-03 09:28:12 +0900
VM_FRAME_TYPE_FINISH_P() と VM_FRAME_TYPE_BMETHOD_P() という env のフラグをチェックするマクロ定義を削除して、かわりに VM_FRAME_FINISHED_P() と VM_FRAME_BMETHOD_P() という inline 関数を vm_core.h に追加してこちらを利用するように変更しています。
ko1: r55804 2016-08-03 10:50:50 +0900
ISeq が通常の Ruby 実装のメソッドやブロックであることをチェックするマクロ RUBY_VM_NORMAL_ISEQ_P() を削除して、 r55801 で導入した VM_FRAME_FLAG_CFRAME フラグを利用してチェックする VM_FRAME_RUBYFRAME_P() という inline 関数を定義して、かわりにこちらを利用するように変更しています。
svn: r55805 2016-08-03 10:50:52 +0900
r55804 の行末の空白除去。
nobu: r55806 2016-08-03 11:30:37 +0900
vm_insnhelper.c の CHECK() という関数マクロの定義でエスケープつきの改行で長い行を折り返して、最後に余分なセミコロンがあったのを削っています。
nobu: r55807 2016-08-03 15:03:50 +0900
先日の r55786 で分離された関数 rb_obj_clone2() で未使用のローカル変数があったので削っています。
nobu: r55808 2016-08-03 17:15:08 +0900
r55786 の Object#clone の keyword 引数 freeze の追加の追加変更で、この引数には true もしくは false のみ指定できる(それ以外だったら ArgumentError 例外を発生させる)ようにしています。 [ruby-core:75017] [Feature #12300]
nobu: r55809 2016-08-03 17:20:13 +0900
NEWS ファイルに Kernel#clone の keyword 引数 freeze の追加について追記しています。 [ruby-core:75017] [Feature #12300]