V8
Google製
の
JavaScript Engine
C++実装
の高速なインタプリタ
Lars Bak
がメインの開発者
https://chromium.googlesource.com/v8/v8.git
github
#WIP
version 5.9以前は2つのcompilerを持っていた
ref
full-codegen
シンプルで比較的低速なbytecodeを生成
JSをparseし、直接bytecodeに変換する
Crankshaft
JIT Compiler
高度に最適化されたコードを生成
3段ギア
ref
Ignition
単にbytecodeを生成
Sparkplug
Maglev
最近増えた
Turbofan
https://mrale.ph/v8/resources.html
https://bugs.chromium.org/p/v8/issues/list
issue?
Snapshot
https://yosuke-furukawa.hatenablog.com/entry/2017/07/15/104616
heapのsnapshotを事前に取っておいて起動を高速化する
JavaScriptを最適化コンパイルするために避けるべきこと
https://qiita.com/rana_kualu/items/9211a776da8a60e3e4c2
https://zenn.dev/estra/books/js-async-promise-chain-event-loop/viewer/e-epasync-v8-engine
http://abcdef.gets.b6n.ch/entry/2017/12/25/120000
https://speakerdeck.com/bata_24/katagaitai-ctf-number-11?slide=40
https://slidr.io/mlippautz/towards-a-unified-blink-and-javascript-heap#1
http://abcdef.gets.b6n.ch/entry/2019/07/11/114011
json.parse
https://v8.dev/blog/jitless
https://v8.dev/docs/version-numbers
https://dev.to/lydiahallie/javascript-visualized-the-javascript-engine-4cdf
visualizer
https://postd.cc/how-javascript-works-inside-the-v8-engine-5-tips-on-how-to-write-optimized-code/
https://alligator.io/js/v8-engine/
https://twitter.com/chikoski/status/1223133125527527424
https://docs.google.com/document/u/1/d/1hOaE7vbwdLLXWj3C8hTnnkpE0qSa2P--dtDvwXXEeD0/pub
V8のGC
https://blog.leko.jp/post/code-reading-of-deno-boot-process/
deno
https://html5experts.jp/furoshiki/23289/