ruby-trunk-changes r51621 - r51626

今日は文法エラーの修正やマシンスタックの確保に関する修正などがありました。

nobu: r51621 2015-08-18 11:40:55 +0900

g++ でコンパイルする時に struct RClass が r51413 で非公開になった影響で警告が出るようになったのを修正しています。 g++ だと __attribute__ を struct とタグ名の間に配置しないといけなかったそうです。 [ruby-core:70297] [Bug #11426]

svn: r51622 2015-08-18 11:41:25 +0900

version.h の日付更新。

nobu: r51623 2015-08-18 16:16:24 +0900

r51621 の追加修正。 そもそも struct RClass の deprecated 警告を出すための構造体定義は C++ の時には定義しないようにしています。 [ruby-core:70297] [Bug #11426]

nobu: r51624 2015-08-18 17:19:24 +0900

多分昨日の r51617 の修正で今度は Hash リテラル内の key: のような Symbol キーの後で後置 rescue を書くと syntax error になるようになっていたのを修正しています。 [ruby-dev:49221] [Bug #11456]

naruse: r51626 2015-08-18 20:21:50 +0900

r49452 で導入されて r50316 で修正されたマシンスタックの領域を alloca(3) で明示的に確保しておく reserve_stack() という関数で、スタックが下方に延びる環境で代入する位置を alloca(3) で確保した領域の下端に修正しています。 r49452 ではスタックの領域いっぱいまで alloca(3) で確保して、その底というかてっぺんというか、オーバフローしないぎりぎりに書き込むようにしていたのですが、r50316 で 4KB 小さく alloca(3) でメモリ確保するようにしていて、けど書き込み位置はそのままだったので、書き込み位置も alloca(3) で確保した領域の下端に修正しています。 RubyCI の CentOS 5 の x86_64 で miniruby が SEGV しまくってた現象の修正だそうです。 これスタックが上に延びる環境でも同じですよね。 [Bug #11457]