J〓gerMonkey
読み:イェーガーモンキー
外語:J〓gerMonkey
Mozilla Firefox 4から採用されたJavaScriptエンジン。〓がASCIIに無い文字のため、JaegerMonkeyとも書かれる。Firefox用としては第2世代となるJavaScriptエンジンである。
概要
J〓gerはドイツ語で「猟師」のこと。
Nitroをバックエンドに使用し、JavaScriptをネイティブコードに変換して高速化する。
TraceMonkeyで採用したNanojitよりも多くのコードを最適化できる。高速な最適化処理が可能だが、最適化の性能自体はNanojitに劣る。
そこで、Firefox 4ではJ〓gerMonkeyとTraceMonkeyを組み合わせる方法を採用した。
特徴
由来
Google ChromeやSafari、Operaなど、他の主要なWebブラウザーのJavaScriptエンジンは、全てのJavaScriptコードを読み込んでコンパイルしてから実行する、メソッドベースJIT(method-based JIT)が採用されている。
Mozilla FirefoxはトレースJITを採用しており、部分的な速度は高速化された。しかし、当初の想定以上にコンパイルされた部分からコンパイルされていないインタープリター部分への復帰が多く、このため全体的な速度向上には繋がっていなかった。
メソッドベースJITは全体的な高速化につながるが最適化性能が弱いことが多い。部分的にしか処理できないが、ループ処理なども高速化できるトレースJITにも利点はある。
加熱する各ブラウザでのJavaScriptの実行速度競争に対抗するため、Mozilla FirefoxはトレースJITとメソッドベースJITのハイブリッド化が行なわれることになった。
設計
トレースJITとメソッドベースJITを両立させるため、次のような手法を採用する。
- WebKitのJavaScriptエンジンを利用してメソッドベースJIT(Nitro)を実現する。この時点で、他のJavaScriptエンジンと同程度の速度が理論上達成される
- これにTraceMonkeyもトレーシング技術を組み込むことで、ループ処理などをさらに高速化する
メソッドベースJITの全体的な高速性を得て、さらにトレースJITによる高速性が得られると見込まれている。
Firefox
Mozilla Firefoxでは、Firefox 4から採用された。
Firefox 9からは型推論と併用され改良されたが、Firefox 18からはIonMonkeyに交代し、J〓gerMonkeyはその役目を終えた。
再検索