2010-07-31

JaegerMonkeyおさらい

ネット見てたら、全然わかってない人多すぎなんで。

SquirrelFish

WebKitのJavaScriptCoreに入っているJavaScriptエンジン。非常に優秀なバイトコードを生成、実行する

SquirrelFish Extreme (Nitro / SFX)

SquirrelFishをJIT化+バイトコードの最適化など

JaegerMonkey

baseline JIT。SpiderMonkeyをJIT化しただけのもの

TraceMonkey

Tracingのアルゴリズムを利用したJIT。ポイントにはまれば生成されるコードは最速(のはず)

JaegerMonkeyはJavaScriptCoreのコードを持ってきたという話があるけど、バイトコードをネイティブコード化するライトウェイトなJITコンパイラだけを持ってきている。SquirrelFishの肝は優秀なバイトコード生成+最適化なので、JaegerMonkeyだけだと、バイトコードの質でSFXには勝てない。

JavaScriptチームが欲したのは、シンプルにバイトコードをネイティブコード化する方法を求めていて、自分たちで書くかどこからかコードを持ってくるかという二択だったんだけど、自分たちの用途だと、SFXのコンパイラが適していたので、それを持ってきただけ。今は自分たちのバイトコード用に最適化中。

で、

fatvals

JavaScriptの型情報を64ビット化して、バイトコードの生成・実行効率とJaegerMonkeyでのJIT化時の効率化を狙ったもの。それってSFXでも同じことやってた気が。

今は、JaegerMonkeyの2ndステージで、fatvalsとマージしたものを開発中。まともな速度が出ているのは、x86だけだけどさ。x64は先月中ごろから手を入れ始めた。ARMは、Jacob(ARMの人)の頑張り次第だし、SPARCは(Sun China次第かな)

JavaScriptチームとしては、JaegerMoneky+TraceMonkeyでV8やSFX並みのベンチに結果になる予測で今開発してるって感じ

あとついで。

Tamarin

Adobeと共同で作ってたJIT。あまりにも遅くてプロジェクト終了

NanoJIT

TraceMonekyに使われるJITエンジン。ARM (V5以降でTHUMBはなし)、x86、x64、SPARC、MIPS対応。Tracingの実装時に持ってきたJITエンジン。TamarinがなくなったおかげでAdobeも使ってる(tamarin-redux)。

Yarr

JavaScriptCoreで使われる正規表現エンジン。これをSpiderMonkeyに持ってきたら速くなるんじゃねーのって話も。。。まぁ、ベンチマークの大部分は正規表現のところだしなぁ

0 件のコメント: