本日のyarv2llvm

すっかりChangeLogと化しています
本日はこんなことをしました。

バグの修正

def tgc
  i = 320000
  b = [1]
  while i > 0
    a = [1, 2, 3, 4, 5, 7, 8]
    c = [1, 2, 3, 4]
    i = i - 1
  end
  b
end

こんなプログラムで、GCをいじめたら落ちてしまいました。GC周りかなと思ったら、そうではなく新たな配列を生成するrb_ary_new4の引数の1つの初期値配列をallocaで取っているのですが、それをループ内で行ったので、スタックオーバフローしていました。メソッドの先頭でallocaをするようにしました。

クラス・メソッドのサポート

これまで、クラス・モジュールは無視だったのですが、意識するようにしました。Math.sqrtとsqrtは別物になります。ただし、レシーバーのクラスは静的に一意に決まる必要があります。つまり、ポリモフィズムはできないし、将来もできないです。
構造体や名前空間の代わりに使えるかなと思います。しかも、まだインスタンス変数もクラス変数もサポートして無いです。