yarv2llvmを作成していて、メソッド呼出毎にさまざまにコンパイルの仕方を変える必要があることがわかりました。 例えば、eachは多くの場合インライン化する必要があるし、String#packは第1引数のテンプレートを見て型推論を行う必要があるし、newはエスケープ解析の結果でどこにアロケートするか変えないといけないわけです。 現状のyarv2llvmはこの辺をアドホックにテーブルを作って対応していたのですが、メソッドごとの振る舞いをちゃんとクラスにまとめたほうがいいなと気付きました。 振る舞いの異なるメソッドごとに用意する MethodBehaviorクラスは次のような動作をおこなうメソッドを用意する 初期トラバース 型推論 コード生成 MethodBehaviorDefaultクラスを用意し、普通のメソッドはそれを利用する。また、他のクラスは、MethodBehaviorDefau