These are chat archives for Constellation/iv

8th
Apr 2014
iseki
@iseki-masaya
Apr 08 2014 11:17
以下のコンパイルエラーが出ていたので

"iv::lv5::breaker::Compiler::EmitBINARY_GT(iv::lv5::railgun::Instruction const, iv::lv5::railgun::OP::Type)", referenced from:
iv::lv5::breaker::Compiler::Main() in liblv5.a(compiler_call.cc.o)
"iv::lv5::breaker::Compiler::EmitBINARY_LT(iv::lv5::railgun::Instruction const
, iv::lv5::railgun::OP::Type)", referenced from:
iv::lv5::breaker::Compiler::Main() in liblv5.a(compiler_call.cc.o)
"iv::lv5::breaker::Compiler::EmitBINARY_GTE(iv::lv5::railgun::Instruction const, iv::lv5::railgun::OP::Type)", referenced from:
iv::lv5::breaker::Compiler::Main() in liblv5.a(compiler_call.cc.o)
"iv::lv5::breaker::Compiler::EmitBINARY_LTE(iv::lv5::railgun::Instruction const
, iv::lv5::railgun::OP::Type)", referenced from:
iv::lv5::breaker::Compiler::Main() in liblv5.a(compiler_call.cc.o)

"iv::lv5::breaker::Execute(iv::lv5::breaker::Context, iv::lv5::Arguments, iv::lv5::breaker::JSJITFunction, iv::lv5::Error)", referenced from:
iv::lv5::breaker::JSJITFunction::Call(iv::lv5::Arguments, iv::lv5::JSVal, iv::lv5::Error) in liblv5.a(compiler_call.cc.o)
iv::lv5::breaker::JSJITFunction::Construct(iv::lv5::Arguments, iv::lv5::Error) in liblv5.a(compiler_call.cc.o)

compiler_comparison.hとentry_point.hを追加しておきました。
iseki
@iseki-masaya
Apr 08 2014 11:25
bytecodeからLLVM-IRへloweringする箇所の構成を追加しておきました。llvm::Moduleを外部で作成しておいて、diagram::CompilerでModuleの中身を作成していこうと考えてます。
Yusuke Suzuki
@Constellation
Apr 08 2014 11:59
Ah
master の branch を merge すれば直ると思います.
master branch を merge して直しましたー.
railgun の Code は関数一つに対応します.
Code の中には Instructions があって, そこに Instructions がつめ込まれています.
ある関数の中で定義された関数の Code は, その上位の Code の member に格納されます
です

あと、stub callについて質問させて下さい。
型に依存しないマシンコードを生成するために、スタブを用いているのは理解できたのですがinlineになっている理由が分かりません。inlineにしてしまうと、呼び出し箇所ごとに展開されてしまうので余計なメモリを使用することになる気がするのですが...

これあんまり意味無いです. 昔 header だけでやってた頃の名残なので, cc にしてしまっても構いません.

cc にします.
Yusuke Suzuki
@Constellation
Apr 08 2014 12:39
cc にしました
iseki
@iseki-masaya
Apr 08 2014 14:37

masterの方ですが、いまだに以下のエラーが出ます。

Undefined symbols for architecture x86_64:
  "iv::lv5::breaker::Execute(iv::lv5::breaker::Context*, iv::lv5::Arguments*, iv::lv5::breaker::JSJITFunction*, iv::lv5::Error*)", referenced from:
      iv::lv5::breaker::JSJITFunction::Call(iv::lv5::Arguments*, iv::lv5::JSVal, iv::lv5::Error*) in liblv5.a(compiler_call.cc.o)
      iv::lv5::breaker::JSJITFunction::Construct(iv::lv5::Arguments*, iv::lv5::Error*) in liblv5.a(compiler_call.cc.o)
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[3]: *** [iv/lv5/lv5] Error 1
make[2]: *** [iv/lv5/CMakeFiles/lv5.dir/all] Error 2
make[1]: *** [iv/lv5/CMakeFiles/lv5.dir/rule] Error 2
make: *** [lv5] Error 2

しかし、EmitBINARYに関するerrorは出なくなりました。x86_64なので、-m32オプションをつけても関係ないような気がしたのですが、どうして解決されたんでしょうか?

Yusuke Suzuki
@Constellation
Apr 08 2014 14:37
おおっとなおします