ruby-trunk-changes 2020-06-29

今日は主に goto 文で条件分岐などのブロックの中に飛び込むのをやめるようにしたり goto のかわりに関数に切り出してコードを共有するようにするリファクタリングなどがありました。

[2e8d8d10f2] 卜部昌平 2020-06-10 04:42:30 UTC

ここから pull request https://github.com/ruby/ruby/pull/3247 で行なわれている goto 文をなくしたり、飛び先を整理したりするリファクタリングが続きます。おおまかに分類して 1. switch 文の別の case 節や if 文の別のブロックなどに外から飛び込む goto を廃止して飛び先を外に括りだしたり fall through を利用する。 2. エラー処理など共通の処理をまとめるための goto 文でその処理が一箇所の処理に埋め込まれてるのを関数末尾などに移動したり関数として切り出して呼びかたを共通する。という変更が行なわれているようです。
このコミットでは array.c の rb_ary_behead() の分岐内の処理を behead_shared() という関数に切り出して goto 文をなくしています。 https://github.com/ruby/ruby/pull/3247

[86c869fb59] 卜部昌平 2020-06-11 01:28:34 UTC

同様に array.c の ary_ensure_room_for_unshift() から共通部分を ary_modify_for_unshift() という関数に切り出して goto 文をなくしています。 https://github.com/ruby/ruby/pull/3247

[4dc83eefce] 卜部昌平 2020-06-11 01:48:59 UTC

rb_ary_aset() でも同様に共通の処理を ary_aset_by_rb_ary_store() や ary_aset_by_rb_ary_splice() という関数に切り出して goto をなくすリファクタリングhttps://github.com/ruby/ruby/pull/3247

[73f98d25eb] 卜部昌平 2020-06-11 02:31:27 UTC

ary_join_1() でも ary_join_1_ary() と ary_join_1_str() という関数に切り出して goto をなくすリファクタリングhttps://github.com/ruby/ruby/pull/3247

[4f2425549a] 卜部昌平 2020-06-11 02:45:03 UTC

rb_ary_slice_bang() でも共通部分を ary_slice_bang_by_rb_ary_splice() という関数に切り出して goto 文をなくすリファクタリングhttps://github.com/ruby/ruby/pull/3247

[e634a9d1a5] 卜部昌平 2020-06-11 03:00:43 UTC

ast.c の node_children() で swicth 文の別の case に goto で飛んでるのをやめて fall through するのにまかせるようにしています。 https://github.com/ruby/ruby/pull/3247

[4dfc2f2e3d] 卜部昌平 2020-06-11 03:45:30 UTC

bignum.c の bary_mul_karatsuba_branch() で共通の後処理を関数末尾に移動して常に goto で移動するようにしています。 https://github.com/ruby/ruby/pull/3247

[5a7c0dd038] 卜部昌平 2020-06-11 03:53:12 UTC

bignum.c の str2big_scan_digits() でもたんに return FALSE するために goto 使ってたのを直接 return するように変更しています。 https://github.com/ruby/ruby/pull/3247

[184f0ab4c9] 卜部昌平 2020-06-11 03:56:05 UTC

bignum.c の rb_int_parse_cstr() でも共通の return 時の処理を関数末尾に移動して常に goto で移動するようにしています。 https://github.com/ruby/ruby/pull/3247

[9ec4f1f205] 卜部昌平 2020-06-11 04:18:22 UTC

bignum.c の rb_big_aref() で引数エラー時の return を goto でまとめてたのをやめて同じ return 文をコピーしています。 https://github.com/ruby/ruby/pull/3247

[8d182b04ed] 卜部昌平 2020-06-11 04:23:56 UTC

builtin.c の builtin_lookup() で feature の検索に if 文内に else の節から goto してたのを文字列の比較部分を bin4feature() という関数に切り出しています。たぶんここはそこそこ速度を(起動速度を)気にしたところだと思いますがおそらく通常は bin の初期化時に non-NULL になるので for 文は空まわりするはずですね。そう考えると条件部は !bin のほうが先のほうが良いかも? コンパイラが良きにはからってくれるかも。 https://github.com/ruby/ruby/pull/3247

[86e3d63772] 卜部昌平 2020-06-12 03:35:45 UTC

class. c の SPECIAL_SINGLETON() というマクロを削除して、利用してたところはただの switch 文で書きなおしています。 https://github.com/ruby/ruby/pull/3247

[3a3728e4b3] 卜部昌平 2020-06-11 04:53:16 UTC

singleton_class_of() でも goto 文で if の分岐の間で飛び込むのをやめて swicth 文で書き直しています。 https://github.com/ruby/ruby/pull/3247

[a93da4970b] 卜部昌平 2020-06-11 05:20:24 UTC

cmp_clamp() で不要な goto で else へ飛び込んでたので、条件を整理して普通の if 文で書きなおしています。 https://github.com/ruby/ruby/pull/3247

[a5342f46e6] 卜部昌平 2020-06-11 05:28:21 UTC

compile.c の iseq_set_exception_table() でも条件を整理して不要な goto 文を削除しています。 https://github.com/ruby/ruby/pull/3247

[a6b1454a5d] 卜部昌平 2020-06-11 05:33:36 UTC

compile.c の optimize_checktype() でもただの return FALSE のために goto 文が使われてたのを廃止しています。 https://github.com/ruby/ruby/pull/3247

[1f90690a1d] 卜部昌平 2020-06-11 05:44:24 UTC

compile.c の compile_branch_condition() でもただの retrurn の共有のために goto 文を使ってたのを廃止しています。 https://github.com/ruby/ruby/pull/3247

[cc1e9b8e11] 卜部昌平 2020-06-11 06:18:42 UTC

compile.c の compile_break() で条件を整理して goto 文をなくしています。 https://github.com/ruby/ruby/pull/3247

[cf29de7e6e] 卜部昌平 2020-06-12 03:48:28 UTC

compile.c の compile_next() でも不要な goto 文があったので条件を整理して(? ちょっと局所的にみただけだとこれでいいのかぱっとわからないですが)廃止しています。 https://github.com/ruby/ruby/pull/3247

[aa2cb7f722] 卜部昌平 2020-06-12 04:39:10 UTC

compile.c の compile_redo() でも同様に条件を整理して goto 文を廃止しています。 https://github.com/ruby/ruby/pull/3247

[a8d992ac00] 卜部昌平 2020-06-12 04:45:01 UTC

compile.c の compile_call() でも条件を整理して goto 文を削除しています。 https://github.com/ruby/ruby/pull/3247

[9c92dcf366] 卜部昌平 2020-06-12 04:57:30 UTC

compile.c の ibf_dump_object_object() でも条件を整理して goto 文を廃止しています。 https://github.com/ruby/ruby/pull/3247

[70857ae1aa] 卜部昌平 2020-06-12 05:00:35 UTC

dir.c の glob_make_pattern() でエラー処理を関数末尾に移動して常に goto で移動するようにしています。 https://github.com/ruby/ruby/pull/3247

[99073f49bf] 卜部昌平 2020-06-12 05:08:48 UTC

dir.c の glob_dir_finish() でもエラー処理を関数末尾に移動して常に goto で移動するようにしています。 https://github.com/ruby/ruby/pull/3247

[5e96054519] 卜部昌平 2020-06-12 05:24:41 UTC

dln_find.c の dln_find_1() でエラー処理を関数末尾に移動して常に goto で移動するようにしています。 https://github.com/ruby/ruby/pull/3247

[d060ebf83c] 卜部昌平 2020-06-15 01:13:10 UTC

enum.c の sum_iter() で共通部分を sum_iter_normalize_memo()、sum_iter_fixnum()、sum_iter_bignum()、sum_iter_rational()、sum_iter_some_value()、sum_iter_Kahan_Babuska() といった関数に切り出して goto を削除しています。 https://github.com/ruby/ruby/pull/3247

[a2677815f5] 卜部昌平 2020-06-15 02:37:35 UTC

error.c の rb_check_typeddata() でエラー処理を関数末尾に移動して常に goto 文を利用するようにしています。 https://github.com/ruby/ruby/pull/3247

[0b1b734515] 卜部昌平 2020-06-15 02:58:30 UTC

eval.c の rb_class_modify_check() で不要な goto 文を削除して直接同じ式を書くようにしています。 https://github.com/ruby/ruby/pull/3247

[13bdbfcecb] 卜部昌平 2020-06-15 03:01:50 UTC

eval.c の setup_exception() でエラー処理を関数末尾に移動して常に goto で移動するようにしています。 https://github.com/ruby/ruby/pull/3247

[4606ec4925] 卜部昌平 2020-06-15 03:38:19 UTC

eval.c の make_exception() で早期 return などを併用してエラー処理を末尾に移動して goto を不要にしています。 https://github.com/ruby/ruby/pull/3247

[e9cb092b2d] 卜部昌平 2020-06-15 05:27:29 UTC

file.c の rb_f_test() でもエラー処理を関数末尾に移動して常に goto で移動するようにしています。 https://github.com/ruby/ruby/pull/3247

[228118482e] 卜部昌平 2020-06-15 05:31:31 UTC

gc.c の gc_marks_finish() の goto 文は不要だったみたい? なので条件を追加して対応しています。 https://github.com/ruby/ruby/pull/3247

[c5f4345138] 卜部昌平 2020-06-15 05:36:41 UTC

gc.c の get_envparam_double() でもエラー処理を関数末尾に移動して常に goto で移動するようにしています。 https://github.com/ruby/ruby/pull/3247

[b5adaa8dbd] 卜部昌平 2020-06-15 05:52:02 UTC

goruby.c の goruby_options() でエラー処理を関数末尾に移動して不要な else 節を削除。 https://github.com/ruby/ruby/pull/3247

[5f60538245] 卜部昌平 2020-06-15 06:02:53 UTC

hash.c の any_hash() の if 文を switch 文で書きなおして goto で移動するのをやめています。 https://github.com/ruby/ruby/pull/3247

[1e8461424c] 卜部昌平 2020-06-15 06:12:54 UTC

hash.c の rb_hash_transient_heap_evacuate() でも条件分岐を整理して goto 文を廃止。 https://github.com/ruby/ruby/pull/3247

[0e4ee71546] 卜部昌平 2020-06-15 06:23:16 UTC

io.c の rb_io_each_codepoint() でエラー処理を関数末尾に移動して常に goto を使って移動するように変更。 https://github.com/ruby/ruby/pull/3247

[9e92292e30] 卜部昌平 2020-06-15 06:26:31 UTC

io.c の rb_io_modestr_fmode() でもエラー処理を関数末尾に移動して常に goto で移動するように変更。 https://github.com/ruby/ruby/pull/3247

[e551dfda9f] 卜部昌平 2020-06-15 06:31:07 UTC

load.c の rb_feature_p() でエラー処理を関数末尾に移動して常に goto で移動するように変更。 https://github.com/ruby/ruby/pull/3247

[6575766ea0] 卜部昌平 2020-06-15 07:04:52 UTC

load.c の search_required() でもマイナーなパス(?)の処理を関数末尾に移動して常に goto で移動するように変更しています。 https://github.com/ruby/ruby/pull/3247

[41703fcfab] 卜部昌平 2020-06-15 07:09:33 UTC

marshal.c の r_object0() でも例外処理を独立したブロックに移動して常に goto で移動するようにしています。switch 文の break と case の間に置くのはいいのかな? https://github.com/ruby/ruby/pull/3247

[bf19820bb3] 卜部昌平 2020-06-16 00:42:18 UTC

numeric.c の flo_to_s() でも処理を末尾に移動して常に goto で移動するようにしています。 https://github.com/ruby/ruby/pull/3247

[250189f54f] 卜部昌平 2020-06-16 01:05:46 UTC

numeric.c の int_pow() でも T_BIGNUM の時の処理を関数末尾に移動して常に goto で移動するようにしています。 https://github.com/ruby/ruby/pull/3247

[03354feb6a] 卜部昌平 2020-06-16 01:39:07 UTC

numeric.c の fix_pow() から goto で共有してた処理を fix_pow_inverted() という関数に切り出すことで goto 文を廃止しています。 https://github.com/ruby/ruby/pull/3247

[1f6e74106f] 卜部昌平 2020-06-16 01:49:02 UTC

object.c の class_or_module_required() で switch 文の条件を工夫することで goto を廃止しています。 https://github.com/ruby/ruby/pull/3247

[3b8d9badab] 卜部昌平 2020-06-16 01:50:53 UTC

object.c の rb_mod_const_get() でエラー処理を関数末尾に移動して常に goto で移動するようにしています。 https://github.com/ruby/ruby/pull/3247

[60212cd8ee] 卜部昌平 2020-06-16 01:52:30 UTC

object.c の rb_mod_const_defined() でもエラー処理を関数末尾に移動して常に goto でジャンプするようにしています。 https://github.com/ruby/ruby/pull/3247

[268962077a] 卜部昌平 2020-06-16 01:53:31 UTC

object.c の rb_mod_const_source_location() でもエラー処理を関数末尾に移動して常に goto でジャンプするようにしています。 https://github.com/ruby/ruby/pull/3247

[06ed9a7a04] 卜部昌平 2020-06-16 01:56:56 UTC

object.c の rb_convert_to_integer() で base!=0 の時の分岐を最初に行なうようにすることで goto で処理を共有する必要がなくなるようにリファクタリングしています。 https://github.com/ruby/ruby/pull/3247

[82ed66a75a] 卜部昌平 2020-06-16 02:22:04 UTC

object.c の rb_cstr_to_dbl_raise() でエラー処理を関数末尾に移動して常に goto でジャンプするようにしています。 https://github.com/ruby/ruby/pull/3247

[2390a8bd2e] 卜部昌平 2020-06-16 02:27:30 UTC

proc.c の bind_local_variable_get() のリファクタリングでエラー処理を関数末尾になるように分岐を整理しています。 https://github.com/ruby/ruby/pull/3247

[8b9b51bb3b] 卜部昌平 2020-06-16 03:00:49 UTC

proc.c の rb_method_name_error() で変数の Qundef での初期化により goto をやめるリファクタリング。一連の pull request の変更内ではちょっと珍しいパターンですね。 https://github.com/ruby/ruby/pull/3247

[3db159193e] 卜部昌平 2020-06-16 03:18:51 UTC

proc.c の rb_obj_singleton_method() でも条件分岐を整理することで goto を不要にしてエラー処理を関数末尾にまとめるようにリファクタリングしています。 https://github.com/ruby/ruby/pull/3247

[2bfac015d3] 卜部昌平 2020-06-16 03:24:30 UTC

proc.c の proc_binding() で switch 文の case 節の順序を調節して fall through を利用して goto を使わないようにしています。 https://github.com/ruby/ruby/pull/3247

[9298631316] 卜部昌平 2020-06-16 03:27:33 UTC

process.c の check_exec_redirect_fd() でエラー処理を関数末尾に移動して常に goto でジャンプするようにしています。 https://github.com/ruby/ruby/pull/3247

[08202d1f0e] 卜部昌平 2020-06-16 03:53:24 UTC

process.c の check_exec_redirect() で Symbol が不正な時のエラー処理を goto を使う必要はなかったのでなくすリファクタリングhttps://github.com/ruby/ruby/pull/3247

[cc27cd26d7] 卜部昌平 2020-06-16 04:02:03 UTC

random.c の rand_range() で goto のラベル fixnum を if 文の外に出してますが、これは FIXNUM_P() のチェックが冗長になるけどいいのかな? goto してるブロックの外側だからこのケースは良しってことかな。 https://github.com/ruby/ruby/pull/3247

[9c5804ac1c] 卜部昌平 2020-06-16 05:31:11 UTC

range.c の range_each() から goto で共有している処理を range_each_bignum_endless()、range_each_fixnum_endless()、range_each_fixnum_loop() といった関数に切り出して goto を廃止しています。 https://github.com/ruby/ruby/pull/3247

[d7eec15f8e] 卜部昌平 2020-06-16 05:42:24 UTC

rational.c の rb_rational_cmp() で if 文を case 文で書き換えて fall through を利用して goto の代用にしています。 https://github.com/ruby/ruby/pull/3247

[689dd3aecb] 卜部昌平 2020-06-16 06:18:55 UTC

rational.c の parse_rat() で条件分岐を整理して if 文の末端のほうのブロックに goto で飛ぶのをやめて外向きに飛ぶようにしています。やっぱり中から外に飛ぶほうが better という方針のようですね。 https://github.com/ruby/ruby/pull/3247

[7cf4625690] 卜部昌平 2020-06-16 06:32:39 UTC

ruby.c の feature_option() でエラー処理を関数末尾に移動して常に goto でジャンプするようにリファクタリングしています。 https://github.com/ruby/ruby/pull/3247

[224e9c3835] 卜部昌平 2020-06-16 06:46:30 UTC

signal.c の signm2signo() でエラー処理を関数末尾に移動して常に goto でジャンプするようにするリファクタリングhttps://github.com/ruby/ruby/pull/3247

[b5eeb3453e] 卜部昌平 2020-06-17 05:28:54 UTC

signal.c の trap_handler() で switch 文の case 節の中に goto の label があったのを switch 文のブロック内の case より前に移動しています。 https://github.com/ruby/ruby/pull/3247

[31a770ac48] 卜部昌平 2020-06-17 05:49:16 UTC

strftime.c の rb_strftime_with_timespec() でエラー処理(といっても return 0 してるだけなのですが……)を関数末尾に移動して常に goto でジャンプするようにしています。 https://github.com/ruby/ruby/pull/3247

[6df790f22e] 卜部昌平 2020-06-17 05:59:44 UTC

string.c の rb_enc_cr_str_buf_cat() でエラー処理を関数末尾に移動して常に goto でジャンプするようにしています。 https://github.com/ruby/ruby/pull/3247

[c29ec1ef1a] 卜部昌平 2020-06-17 06:31:10 UTC

string.c の rb_str_index_m() で条件分岐を整理して goto を不要にしています。 https://github.com/ruby/ruby/pull/3247

[c422fc4bbc] 卜部昌平 2020-06-17 07:02:18 UTC

string.c の rb_str_rindex_m() の条件分岐を工夫して goto を廃止するリファクタリングhttps://github.com/ruby/ruby/pull/3247

[d49924ed81] 卜部昌平 2020-06-17 07:05:43 UTC

string.c の rb_str_match() でも条件分岐を工夫して goto を廃止するリファクタリングhttps://github.com/ruby/ruby/pull/3247

[0358846f8c] 卜部昌平 2020-06-18 01:29:25 UTC

string.c の rb_str_update() でも条件分岐を工夫して goto を廃止するリファクタリングhttps://github.com/ruby/ruby/pull/3247

[841eea4bcb] 卜部昌平 2020-06-18 04:18:12 UTC

string.c の rb_str_subpat_set() でも条件分岐を工夫して goto を廃止するリファクタリングhttps://github.com/ruby/ruby/pull/3247

[19f2cabed8] 卜部昌平 2020-06-18 04:41:34 UTC

string.c の rb_str_aset() でも条件分岐を工夫して goto を廃止するリファクタリングhttps://github.com/ruby/ruby/pull/3247

[31e5d138d7] 卜部昌平 2020-06-18 06:21:18 UTC

string.c の rb_str_slice_bang() でエラー処理を関数末尾にあつめて常に goto でジャンプするようにしています。 https://github.com/ruby/ruby/pull/3247

[673ddea934] 卜部昌平 2020-06-18 06:24:16 UTC

string.c の get_pat() でも条件分岐を工夫して goto を廃止するリファクタリングhttps://github.com/ruby/ruby/pull/3247

[fdae2063fb] 卜部昌平 2020-06-18 06:24:56 UTC

string.c の get_pat_quoted() でも条件分岐を工夫して goto を廃止するリファクタリングhttps://github.com/ruby/ruby/pull/3247

[c7a4073154] 卜部昌平 2020-06-18 07:36:35 UTC

string.c の chompped_length() から goto で共有している処理を関数 smart_chomp() として切り出して goto を廃止するリファクタリングhttps://github.com/ruby/ruby/pull/3247

[a5ae9aebbc] 卜部昌平 2020-06-18 07:44:49 UTC

string.c の trnext() の goto のラベルを if 文のブロックの 1つ外に出しています。 https://github.com/ruby/ruby/pull/3247

[e3d821a36c] 卜部昌平 2020-06-18 07:52:17 UTC

string.c の rb_str_crypt() のエラー処理を関数末尾に移動して常に goto でジャンプするようにしています。 https://github.com/ruby/ruby/pull/3247

[5f926b2b00] 卜部昌平 2020-06-18 07:55:52 UTC

string.c の rb_str_partition() でエラー処理を関数末尾に移動して常に goto でジャンプするようにしています。 https://github.com/ruby/ruby/pull/3247

[ad6512f359] 卜部昌平 2020-06-19 01:46:55 UTC

symbol.c の rb_enc_symname_type() でエラー処理を関数末尾にあつめて常に goto でジャンプするようにしています。 https://github.com/ruby/ruby/pull/3247

[8fc8912109] 卜部昌平 2020-06-19 01:50:43 UTC

thread.c の exec_recursive() のエラー処理を関数末尾に移動して常に goto でジャンプするようにしています。 https://github.com/ruby/ruby/pull/3247

[f402dc3557] 卜部昌平 2020-06-19 01:56:25 UTC

thread_sync.c の rb_szqueue_push() で goto 文は不要で break でループから抜けるだけで代用できたのでそのように変更しています。 https://github.com/ruby/ruby/pull/3247

[0fc569361b] 卜部昌平 2020-06-19 02:58:50 UTC

time.c の num_exact() で条件分岐を工夫して goto を廃止するリファクタリングhttps://github.com/ruby/ruby/pull/3247

[1c0a97bfad] 卜部昌平 2020-06-19 03:39:16 UTC

time.c の vtm_add_offset() で不要な goto 文を削除しています。 https://github.com/ruby/ruby/pull/3247

[ce6be8889f] 卜部昌平 2020-06-19 03:44:57 UTC

time.c の utc_offset_arg() のエラー処理を関数末尾に移動して常に goto でジャンプするようにしています。 https://github.com/ruby/ruby/pull/3247

[83f6de8691] 卜部昌平 2020-06-19 03:56:13 UTC

time.c の find_time_t() の goto のラベルを if 文のブロックの 1つ外に移動しています。 https://github.com/ruby/ruby/pull/3247

[fd0e935886] 卜部昌平 2020-06-19 03:59:31 UTC

time.c の time_mload() のエラー処理を関数末尾に移動して常に goto でジャンプするようにしています。 https://github.com/ruby/ruby/pull/3247

[3d636eccfc] 卜部昌平 2020-06-19 05:14:02 UTC

transcode.c の make_econv_exception() でエラー処理を関数末尾に移動して常に goto でジャンプするようにしています。 https://github.com/ruby/ruby/pull/3247

[421db59c9e] 卜部昌平 2020-06-19 06:51:17 UTC

variable.c の rb_path_to_class() でエラー処理を関数末尾に移動して常に goto でジャンプするようにしています。 https://github.com/ruby/ruby/pull/3247

[1e9d58391c] 卜部昌平 2020-06-22 01:15:32 UTC

variable.c の rb_copy_generic_ivar() のエラー処理を関数末尾に移動して常に goto でジャンプするようにしています。 https://github.com/ruby/ruby/pull/3247

[b95b249784] 卜部昌平 2020-06-22 01:18:28 UTC

variable.c の rb_mod_remove_cvar() でエラー処理を関数末尾に移動して常に goto でジャンプするようにしています。 https://github.com/ruby/ruby/pull/3247

[f12efec2c2] 卜部昌平 2020-06-22 01:57:01 UTC

vm.c の vm_exec_handle_exception() if 文内で共通の処理を goto で共有していたのをブロックの先頭で必要な type のセットだけ分岐(というか配列の参照による書き換え)で対応するようにリファクタリングしています。こんな配列の宣言のしかたははじめてみた。古めのコンパイラで通るかな…。 https://github.com/ruby/ruby/pull/3247

[edb1680a05] 卜部昌平 2020-06-22 01:59:19 UTC

vm_eval.c の rb_method_call_status() のエラー処理を関数の末尾に移動して常に goto でジャンプするようにしています。 https://github.com/ruby/ruby/pull/3247

[6e67b30503] 卜部昌平 2020-06-22 02:00:31 UTC

vm_eval.c の method_missing() のエラー処理を関数末尾に移動して常に goto でジャンプするようにしています。 https://github.com/ruby/ruby/pull/3247

[1bf0d36171] 卜部昌平 2020-06-22 02:07:26 UTC

vm_insnhelper.c の vm_getivar() で goto での移動を if のブロックの中から外に飛ぶ方向にするようにリファクタリングしています。 https://github.com/ruby/ruby/pull/3247

[801752f577] 卜部昌平 2020-06-24 01:58:13 UTC

error.c の rb_check_typeddata() から builtin_class_name() を呼び出してたのを displaying_class_of() という専用の関数を定義してこちらを利用するようにリファクタリングしています。

[2b636dc81d] 卜部昌平 2020-06-24 02:04:19 UTC

eval.c の make_exception() で引数の数が 1つの時の早期 return するようにするリファクタリング

[bacd03ebdf] 卜部昌平 2020-06-24 02:15:38 UTC

compile.c の compile_redo() の ISeq の type の判定が反転していたところを修正。

[c8dc2bf140] 卜部昌平 2020-06-24 07:19:55 UTC

マクロ RBIMPL_UNREACHABLE_RETURN() の定義で引数に渡されたものを展開結果にも含めるようにしています。 UNREACHABLE_RETURN() と書き間違えたのがわかるようにとのことですが後に 1ce9c37257111df15ca646c526b86798fab5775e で revert されています。

[de3e931df7] 卜部昌平 2020-06-24 07:23:59 UTC

末尾に到達しない関数に UNREACHABLE_RETURN() を追加してコンパイラの警告を抑制するようにしています。

[da8af471fb] 卜部昌平 2020-06-25 00:50:06 UTC

time.c の find_time_t() で status のリセット漏れを修正。

[2bd0f37e2b] 卜部昌平 2020-06-25 01:26:34 UTC

dir.c の glob_opendir() で goto でジャンプするエラー処理を関数末尾に移動するためブロックの外に出しています。

[a523eca1c2] 卜部昌平 2020-06-25 05:03:23 UTC

symbol.c の rb_enc_symname_type() のリファクタリング。 enc_synmane_type_leading_chars() という関数を導入して goto を減らそうとしているようです。

[1020e120e0] git 2020-06-29 02:06:18 UTC

version.h の日付更新

[94ab244b43] 卜部昌平 2020-06-29 02:43:48 UTC

eval.c の rb_class_modify_check() で不正なタイプのオブジェクトが渡されて Check_Type() で例外発生させた後に UNREACHABLE を追加しています。 gcc で警告が出るのでその抑制のためとのこと。

[3621a7debf] Bart de Water 2020-06-28 21:18:34 UTC

標準添付ライブラリ webrick や rubyspec で OpenSSL::HMAC.digest や OpenSSL::X509::Certificate#sign に渡す digest のアルゴリズムを OpenSSL::Digest::SHA1 などのクラスを渡してたのを文字列を渡すように変更しています。最近類似の変更があったけど、この定数を使うのって deprecated なんだ。