ruby-trunk-changes r51501 - r51505

今日は UnboundMethod#super_method の不具合修正と parse.y のリファクタリングがありました。

nobu: r51501 2015-08-07 17:07:58 +0900

UnboundMethod#super_method で SEGV が発生する不具合を修正しています。 method_super_method() で rb_method_entry_t::define_class が NULL の時に rb_method_entry_t::owner を参照する fallback が行なわれていなかったので、他の場所と同じく参照するようにしています。そのために method_entry_defined_class() という関数を定義してこれを呼ぶようにしています。 [ruby-core:70254] [Bug #11419]

svn: r51502 2015-08-07 17:08:14 +0900

version.h の日付更新。

nobu: r51503 2015-08-07 17:23:09 +0900

parse.y で YYPURE が未定義の時に yylex() のシグネチャを変更するなどの対応をしていたのを、YYPURE が未定義だとエラーにするように変更しています。拡張ライブラリ ripper の為には pure parser (reentrant なコードを生成してくれるように Bison に指定する)でないといけないからとのこと。

nobu: r51504 2015-08-07 17:30:22 +0900

parse.y で struct parser_params のメンバ名から prefix `parser_` を削っています。

nobu: r51505 2015-08-07 21:04:22 +0900

parse.y の構造体 struct parser_params のメンバ in_single と in_def というフラグを int 型から bitfield 型に変更して構造体サイズを削減しています。またこの 2つのメンバはフラグとしてでなくネストを数えるカウンタとして使っていたので、Bison の規則の中に埋め込むアクションを追加して、そこで前のフラグを保存しておくような方法で 1bit で実現するように実装も修正しています。