These are chat archives for Constellation/iv

7th
Apr 2014
iseki
@iseki-masaya
Apr 07 2014 12:17
bytecodeからLLVM IRへLoweringし実行するまでの処理を作成しようとしているのですが、分からない点があるので教えて下さい。
実装しようとしている処理の概要なのですが、breakerのようにbytecodeを線形に走査していきopcodeに応じたLLVMIRを生成していきます。その後、LLVMのPassの設定を行い、LLVMGetPointerToGlobalで関数ポインタを取得し、実行します。
分からない箇所は、LLVMGetPointerToGlobalで取得した関数ポインタをどのように実行するかということです。breakerと同じように実行できますか。
iseki
@iseki-masaya
Apr 07 2014 12:22
ちなみになんですが、railgun::Codeはchildrenにrailgun::Codeを持っているとのことなのですが、childrenのcodeを取得している箇所はhttps://github.com/Constellation/iv/blob/master/iv/lv5/breaker/compiler.h#L630
になると思います。
railgun::Codeは木構造ではなくリスト構造のようになってますか?
iseki
@iseki-masaya
Apr 07 2014 14:23
あと、stub callについて質問させて下さい。
型に依存しないマシンコードを生成するために、スタブを用いているのは理解できたのですがinlineになっている理由が分かりません。inlineにしてしまうと、呼び出し箇所ごとに展開されてしまうので余計なメモリを使用することになる気がするのですが...