V8:隔离与嵌入的 blob 不兼容

V8 : Isolate is incompatible with the embedded blob

我正在尝试从某个 Javascript 文件创建自定义快照。我能够使用命令

创建快照 mksnapshot.exe snapshot11.js --startup_blob snap.bin

但是当我试图用这个 snap.bin 文件创建一个 Isolate 时,我收到了这条消息

The Isolate is incompatible with the embedded blob. This is usually caused by incorrect usage of mksnapshot. When generating custom snapshots, embedders must ensure they pass the same flags as during the V8 build process (e.g.: --turbo-instruction-scheduling).

我猜我需要使用正确的标志重新创建快照,但我找不到我需要使用的标志。

我的args.gn

is_component_build=true 
v8_static_library=false 
is_official_build=false 
is_debug=true 
use_custom_libcxx=false
use_custom_libcxx_for_host=false
target_cpu="x64"
use_goma=false 
v8_use_external_startup_data=false 
v8_enable_i18n_support = false 
symbol_level=2 
v8_enable_fast_mksnapshot=true

任何线索都会有所帮助。
10 倍

您可以调用 ninja-v 来让它打印它执行的所有命令;例如如果你编译 V8:

ninja -v -C out/... v8_monolith

然后您会在输出中找到 mksnapshot 调用的一行,并且可以从那里复制标志。 (如果你已经编译了 V8,ninja 会说 "nothing to do";在这种情况下你可以清除所有内容,或者只删除 snapshot_blob.binlibv8_monolith.so。)