ruby-trunk-changes r56506 - r56511

今日は主に TYPE() マクロを使っていたところをRB_XXX_P() で置き換えるなどの細かい最適化の変更がありました。

nobu: r56506 2016-10-27 23:28:14 +0900

clang 3.x で inline 関数内の RB_BUILTIN_TYPE() マクロの展開結果の共通部分除去の最適化が行なわれないそうで rb_integer_type_p() を GCC 4.3 以前の時マクロとして定義するようにしています。

nobu: r56507 2016-10-28 15:19:00 +0900

Complex#finite? と Complex#infinite? の実装で TYPE() マクロを利用して分岐していたところを RB_TYPE_P() を利用するように変更しています。

svn: r56508 2016-10-28 15:19:01 +0900

version.h の日付更新。

nobu: r56509 2016-10-28 15:20:19 +0900

complex.c で finite?, infinite?, rationalize, PI などの ID を毎回 rb_intern() していたのを static 変数に保持して使いまわすように最適化しています。

nobu: r56510 2016-10-28 15:58:19 +0900

TYPE() のかわりに即値にも対応した RB_OBJ_BUILTIN_TYPE() というマクロを導入して file.c や拡張ライブラリ objspace で TYPE() の利用が残っていた場所で使うようにしています。

nobu: r56511 2016-10-28 16:05:05 +0900

VM の case 文の分岐の最適化用命令 opt_case_dispatch で r56510 で追加した OBJ_BUILTIN_TYPE() を利用するようにリファクタリングしています。