鳩舎

レースしない

メモ

息抜きに ruby をいじった感じ

rb_clear_cache_by_classrb_clear_cache と変わらない挙動ですべてのメソッドキャッシュ(というかキャッシュ全般)をクリアしてるのが extend や unextend を遅くする原因なので、これを解決しないといけないんだけど、とりあえず書いてみたパッチだと定数とかのインラインキャッシュ周りで破滅してる。

かといって安易に全体の VM STATE とインラインキャッシュ用の VM STATE などを分離すると多分キャッシュの消し漏れとかが出てくるし、うまくいかない気がする。

今回のコケたテストの場合だと variables.c の 2238 〜 2253 行で rb_clear_cache_by_class を使うのをやめて rb_clear_cache を使うようにすればうまくいきそう。これは定数の visibility を変更する部分だけど、ここを本当に rb_clear_cache_by_class でなくしていいのかというのは一応疑問が残る。