ちくしょーわかんねー。なんなんだこの GC は。なんでこれで大丈夫なんだあー。
食べた。今回は固形スープがない。具も少ない感じがする。ついでに、とんこつスープが白いので黒って感じじゃない。
が、それはそれとしてやっぱうまい。これまでのほむら味(謎)も残しつつとんこつスープな味わいだ。辛ほむらはマイナーバージョンアップだったけど今回の黒ほむらはメジャーバージョンアップと言ったらいいのだろうか。また生麺、スープの出来はこれまで通り非常によい。どちらかと言えば個人的には素ほむらのほうが好きだけど、今回のも悪くない。少なくとも他のカップラーメンに比べればずっとうまい。そのぶん高いのが難点だが、100 円ちょいアップでこれだけ味の差があれば十分ではなかろうか。
rb_f_binding → blk_copy_prev → scope_dup → frame_dup → rb_f_block_given_p → rb_thread_current → scope_dupというような呼び出し関係を関係を図にしたいんです。なんかありそうですよねえ。
configure; make; sudo make install で完了……と思ったけど、使ってみると freetype サポートが効いてなくてフォントが汚ない。freetype が入ってなかったようだ。とっくに入れたと思ってたけどな。速攻でつっこむ。
コンパイルしなおし。……configure で "freetype/freetype.h not found" と出る。--with-freetypeincludedir=/usr/local/include/freetype2 が必要だった。
ぐあー、まだだめじゃん! --with-freetypeincludedir=/usr/local/include も必要なのか。二つ同時に指定するには…… --with-freetypeincludedir="/usr/local/include/freetype2 -I/usr/local/include" でごまかした。いいのかこんなんで。
うう、今度はコンパイルが止まるよう。--without-tk --without-tcl も必要だった (graphviz には tk8.3 が必要なんだけど、家には tk8.0jp しかない)。
README はちゃんと読まないとだめですねえ。手で書きかえたほうがよいところが一ヶ所あるようです (特許関係でわざとオフにしてある)。ついでに prefix も /usr にしとく。これで graphviz もオプションなしでいけるようになった。
ドキュメント生成ツール doxygen は graphviz を使ってクラスツリーのグラフを出力してくれるらしい。ということは関数グラフの視覚化もやってくれるかも? ということで試してみた。
……関数はやってくれないようだ。くそっ。
ここのデザインを変えてみた。名付けて「LoveRubyNet なテーマ」。
完成。ruby の eval.c の関数呼び出し関係のグラフです。
余分な関数を手動で削ったあと、部分 DAG を刈り込んでます。刈り込みなしのはこちら。なんと画像サイズは 10139x990、バイト数も 198KB あります。ノード数は約 300 です。
KSMのGCアルゴリズムは本当はだめなケースもありそうな気がするんですけど。たとえば、Cで記述された関数の中でインスタンス変数を書き換えた場合、元のオブジェクトはprotectしないと消えちゃいます。でも、Schemeだからそういうことは滅多にないのでしょう。
なるほど……。懲りずにもう一回チャレンジしてみます。