今日は主に 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() を利用するようにリファクタリングしています。