我应该如何使用 v8::SetNativesDataBlob?
How am I expected to use v8::SetNativesDataBlob?
调查我的代码中的段错误,在 V8 source code 中查找 GetBuiltinsCount
导致我看到此评论:
/**
* NativesStore stores the 'native' (builtin) JS libraries.
*
* NativesStore needs to be initialized before using V8, usually by the
* embedder calling v8::SetNativesDataBlob, which calls SetNativesFromFile
* below.
*/
嵌入器应该如何使用 v8::SetNativesDataBlob
?
d8 interpreter确实调用了这个方法,但完全不清楚它在做什么以及为什么。
基本示例不调用此方法。
一年多后,我发现自己又回到了这个问题上,现在我知道了答案。
您可以使用或不使用外部启动数据 ("snapshot") 来编译 V8。
如果您使用 快照数据编译 ,请调用 V8::InitializeExternalStartupData
,如 Hello World example code 中所示。您不直接调用 v8::SetNativesDataBlob
。
否则,解决方案是编译没有快照数据。然后,您根本不需要调用上述任何一个函数。这是构建过程中 的一个答案。请注意,使用快照数据会减少进程启动时间。
调查我的代码中的段错误,在 V8 source code 中查找 GetBuiltinsCount
导致我看到此评论:
/**
* NativesStore stores the 'native' (builtin) JS libraries.
*
* NativesStore needs to be initialized before using V8, usually by the
* embedder calling v8::SetNativesDataBlob, which calls SetNativesFromFile
* below.
*/
嵌入器应该如何使用 v8::SetNativesDataBlob
?
d8 interpreter确实调用了这个方法,但完全不清楚它在做什么以及为什么。 基本示例不调用此方法。
一年多后,我发现自己又回到了这个问题上,现在我知道了答案。
您可以使用或不使用外部启动数据 ("snapshot") 来编译 V8。
如果您使用 快照数据编译 ,请调用 V8::InitializeExternalStartupData
,如 Hello World example code 中所示。您不直接调用 v8::SetNativesDataBlob
。
否则,解决方案是编译没有快照数据。然后,您根本不需要调用上述任何一个函数。这是构建过程中