ruby-trunk-changes r59629 - r59643

今日は VM 用のソースコード生成のツール類のリファクタリングや、標準添付ライブラリ csv の不具合修正などがありました。

yui-knk: r59629 2017-08-21 22:38:35 +0900

iseq.c の rb_iseq_disasm_insn() でブロック内で外と同名の変数が同じ初期値で再度宣言されていて冗長だったので削除しています。

nobu: r59630 2017-08-21 23:15:31 +0900

PREVENT_STACK_OVERFLOW という HAVE_ALTSIGSTACK などに依存していたマクロを常に 1にして stack_check() 関数を常に定義してスタックオーバーフローチェックを有効にしています。また invoke_iseq_block_from_c() からも stack_check() の呼び出しを追加しています。

ko1: r59631 2017-08-22 09:41:24 +0900

rb_context_t から vm_stack に関するメンバを struct cont_saved_vm_stack という構造体に切り出しています。名前からして Continuation でコンテキストを切り替える時に使うものみたいです。

svn: r59632 2017-08-22 09:41:25 +0900

version.h の日付更新。

nobu: r59633 2017-08-22 11:42:23 +0900

signal.c の raise_stack_overflow() という関数の前半の sigmask の操作をしている部分だけを reset_sigmask() という関数に切り出し、rb_threadptr_stack_overflow() の呼び出しは呼び元で行うようにしています。

nobu: r59634 2017-08-22 11:46:16 +0900

rb_threadptr_stack_overflow() に第2引数を追加して、machine stack 上の TAG がアクセスできない可能性がある位置にあったら threadptr_stack_overflow() を利用せず直接 TH_JUMP_TAG() を利用するようにしています。

nobu: r59635 2017-08-22 12:07:01 +0900

VM 命令用のソースコード生成に使う template/*.tmpl に命令数のチェックを行う STATIC_ASSERT() の出力を追加しています。

nobu: r59636 2017-08-22 13:22:01 +0900

VM 用のソースコードを生成する tool/instruction.rb 内で文字列を構築してから template 内のテンプレートファイルに埋め込んでいた処理を、各テンプレードファイル内に書くようにリファクタリングしています。

nobu: r59637 2017-08-22 13:37:08 +0900

命令列の名前を格納していた insn_name_info を普通の配列から、ひとつの長い char の配列に NUL 文字で区切って全ての文字列を格納する方式に変更しています。メモリ節約ということかな。

nobu: r59638 2017-08-22 13:40:16 +0900

Vm 命令の operand の情報を保持している insn_operand_info も同様に1つの配列に詰めるようにしています。

hsbt: r59639 2017-08-22 14:32:34 +0900

標準添付ライブラリ csv の :skip_line オプションに文字列を渡した時に正規表現コンパイルする時に escape していなかったので、メタキャラクタを渡すと意図しないコメント扱いがされる可能性があった不具合を修正しています。 [ruby-core:58549] [Feature #9147]

hsbt: r59640 2017-08-22 15:17:42 +0900

標準添付ライブラリ csv で :write_header オプションが真に指定された時に、データが1行もなくても :headers オプションが指定されていればヘッダは出力するようにしています。 [ruby-core:63375] [Bug #9988]

hsbt: r59641 2017-08-22 15:34:27 +0900

標準添付ライブラリ csvCSV::Table#== が引数のクラスをチェックしていなかったのを修正しています。 [ruby-core:75707] [Bug #12422]

hsbt: r59642 2017-08-22 15:40:59 +0900

標準添付ライブラリ csvCSV.open の ensure 節で close していたところを closed? でチェックしてから close するようにしています。 がこれ結構古いチケットで、既に IO や StringIO のオブジェクトは IO#close で close 済みでも例外発生しなくなっているので不要そうですね。 [ruby-core:66240] [Bug #10504]

hsbt: r59643 2017-08-22 15:57:00 +0900

標準添付ライブラリ csvCSV.parse_line の :converter オプションを渡した時のその converter の Proc オブジェクトを呼び出す時のパラメーターに nil が渡されることがある不具合を修正しています。 [ruby-core:69088] [Bug #11126]