ローカル変数参照を実装しました。以下のコードが実行できます。
def m
if true
a = 10
else
a = 20
end
a
end
precompile Object, :m
puts m
LLVMは優秀なので、上のメソッドはこんなコードにコンパイルされます(x86の場合)。
mov eax, 15h
ret
15hは10のFixnum表記です。if文が消えて、単に定数を返すだけのメソッドになっているのがわかります。
https://github.com/msumimz/ruby/tree/rbjit