V8是由google公司開發(fā)的一款高性能、開源的javascript引擎抱环,項(xiàng)目里需要使用V8來執(zhí)行js,因此想要學(xué)習(xí)了解下V8的實(shí)現(xiàn)原理。打算先把源碼下載到本地并編譯運(yùn)行起來协饲。
工欲善其事,必先利其器
V8源碼下載
V8官方文檔有比較詳細(xì)的說明缴川,參考https://v8.dev/docs/source-code茉稠。
安裝Git
安裝git,如果已經(jīng)安裝請?zhí)^
安裝depot_tools
下載depot_tools
mkdir ~/v8
cd ~/v8
git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
配置環(huán)境變量
export PATH=/path/to/depot_tools:$PATH
更新depot_tools
命令行執(zhí)行g(shù)client命令
源碼下載
fetch v8
cd v8
等待下載完成把夸,時(shí)間長短取決于你的網(wǎng)速而线。
V8源碼編譯
分支選擇
建議選一個(gè)穩(wěn)定分支,參考https://omahaproxy.appspot.com/,筆者選的分支是branch-heads/8.0
cd ~/v8/v8
git checkout -b?v_8_0_426_30 origin/branch-heads/8.0
gclient sync #確保最新分支對應(yīng)的依賴都被下載到本地
編譯
參考https://v8.dev/docs/build-gn
tools/dev/gm.py x64.debug
編譯完成后會(huì)生成out/x64.debug文件夾膀篮,如下圖
運(yùn)行d8并嘗試執(zhí)行js代碼