
ブラウザの世界は、次の4つの主要プレイヤーによって支配されています:
以下は2つのパートに分かれています:
もちろん、ソースを閲覧するにはお気に入りのセットアップを使うことができます。しかし、これらのリポジトリは比較的大きく、私自身も自分に合うセットアップを見つけるまでいくつか試してみました。まだ良いセットアップをお持ちでないなら、ここに参考になる私の経験をいくつか紹介します:
記事:
BlinkのJavaScriptエンジンはV8です。
ビルド (Ubuntu 18.04):
$ git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
$ export PATH=$PATH:./depot_tools
$ gclient
$ mkdir ./v8 && cd ./v8
$ fetch v8 && cd v8
$ git pull
$ gclient sync
$ ./build/install-build-deps.sh
$ tools/dev/gm.py x64.release
$ out/x64.release/d8
便利なフラグ:
--print-opt-code: 最適化コンパイラが生成したコード--print-byte-code: インタープリタが生成したバイトコード--trace-ic: コールサイトが遭遇する異なるオブジェクト型--trace-opt と --trace-deopt: どの関数が最適化(解除)されたか--trace-turbo: Turbolizerの可視化のためのTurboFanトレース記事:
V8はTurboFan用の可視化ツールとして Turbolizer を提供しています。
記事:
--trace-turbo を指定してv8を実行: d8 --trace-turbo foo.jsturbo-foo-0.json などのjsonファイルを生成v8/tools/turbolizer に移動し、README.md の説明に従ってnpmでインストールpython -m SimpleHTTPServer 8000localhost:8000 をブラウザで開き、turbo-foo-0.json を開くGeckoのJavaScriptエンジンはSpidermonkeyです。
ビルド (Ubuntu 18.04):
$ wget -O bootstrap.py https://hg.mozilla.org/mozilla-central/raw-file/default/python/mozboot/bin/bootstrap.py && python bootstrap.py
$ git clone https://github.com/mozilla/gecko-dev.git && cd gecko-dev
$ cd js/src
$ autoconf2.13
# This name should end with "_DBG.OBJ" to make the version control system ignore it.
$ mkdir build_DBG.OBJ
$ cd build_DBG.OBJ
$ ../configure --enable-debug --disable-optimize
# Use "mozmake" on Windows
$ make -j 6
$ js/src/js
SpidermonkeyはIonMonkey用の可視化ツールとして IonGraph を提供しています。
WebkitのJavaScriptエンジンはJavaScriptCore (JSC)です。
記事:
# sudo apt install libicu-dev python ruby bison flex cmake build-essential ninja-build git gperf
$ git clone git://git.webkit.org/WebKit.git && cd WebKit
$ Tools/gtk/install-dependencies
$ Tools/Scripts/build-webkit --jsc-only --debug
$ cd WebKitBuild/Release
$ LD_LIBRARY_PATH=./lib bin/jsc
WebKitには4層のJITコンパイラシステムがあり、オーバーヘッドの性能コストと性能利益のトレードオフを表しています。
記事:
EdgeはレンダリングエンジンとしてBlinkとChromiumプロジェクトに切り替えたため、現在はv8を使用しています。もともとEdgeにはEdgeHTMLと呼ばれる独自のレンダリングエンジンがあり、それはChakraCore JavaScriptエンジンを採用していました。
# To build ChakraCore on Linux: (requires Clang 3.7+ and Python 2)
$ apt-get install -y git build-essential cmake clang libicu-dev libunwind8-dev
$ git clone https://github.com/Microsoft/ChakraCore && cd ChakraCore
$ ./build.sh --cc=/usr/bin/clang-3.9 --cxx=/usr/bin/clang++-3.9 --arch=amd64 --debug
$ out/Debug/ch