问题标签 [embedded-v8]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 为什么 V8 包在类中时会崩溃
我试图将 V8 包装在一个类结构中,其中存在一个将 JavaScript 回调公开给 C++ 代码的对象,该对象应该进行一些数据处理。
这个想法是让所有参与的班级都可以使用 context 和 handle_scope,即我想到了一个“全局”状态。我将其归结为以下示例:
谢谢。
javascript - 为什么 v8 将原生 javascript 的源代码保存在生成的二进制文件中?
我一直在研究 v8 源代码,特别是“mksnapshot”工具如何在 v8 二进制文件中包含本机 javascript 文件(runtime.js、json.js...)的编译图像,并注意到它还包含一个(有点)源的缩小版本。例如,在检查 d8 可执行文件的内容时,我看到以下代码段:
在“src/json.js”的开头,我看到:
显然这两个片段是等价的,但第二个在编译过程中被转换为第一个。
如果包含原始代码以使用“toString”进行检查,我会理解,但是当我在 d8 中输入“JSON.stringify”时,我看到的只是“function stringify() { [native code] }”,那么重点是什么这个?
javascript - 《你好世界》+JS V8+VS2010
我下载并构建了 JS V8 以在 VS2010 发布模式下使用。现在我尝试运行Hello World 示例:
我添加了其他依赖项:
当我尝试编译和运行程序时,遇到了链接错误:
当我设置“忽略所有默认库:是(/NODEFAULTLIB)”时,出现了以下错误:
有没有人尝试过运行这个示例或知道如何修复这些错误?
v8 - v8::FunctionTemplate 引用非全局变量
Google 的 v8 文档描述了如何将全局函数添加到 JavaScript 上下文。我们可以使用 C++11 中的新 lambda 特性轻松实现类似 printf 的函数:
这适用于任何无状态或引用全局 C++ 变量(即std::cout
)的全局 JavaScript 函数。但是如果我们希望我们的全局 JavaScript 函数引用一个非全局 C++ 变量呢?例如,假设我们正在创建几个不同的 JavaScript 上下文,每个上下文都有自己的print
使用不同 C++ 的全局函数std::ostream
?如果 v8 函数模板使用std::function
对象而不是函数指针,我们会这样做:
不幸的是,v8 似乎不支持这一点。我假设(希望?)v8 有一种做功能等效的方法,但我发现自己被 Doxygen 迷惑了v8::FunctionTemplate
。尝试过类似事情的人会愿意将这个过程提炼成更容易理解的东西吗?我还想了解如何创建绑定到现有的 C++ 对象的非全局实例的 JavaScript 对象的全局实例。
remote-debugging - 如何设置 Google 的 v8 javascript 独立引擎进行远程调试?
如何设置/构建/运行 Google 的 V8 引擎,以便我可以调用示例 javascript 文件并看到它逐步解释为 C++ 代码?
c++ - 如何释放 V8 占用的内存?
我正在开发的一个应用程序嵌入了V8以进行脚本编写。为了节省内存,我想在不需要时关闭脚本组件,但由于某种原因,内存永远不会返回给操作系统。
这是我尝试过的:
1. 在持久上下文句柄上调用 Dispose()
2.强制垃圾回收
这些都对进程内存使用没有任何显着影响。当脚本要求内存时,我可以清楚地看到它是如何上升的,但它再也不会下降了。
我正在确定进程内存使用情况ps -o rss
。我知道如果没有分析器,就无法确定一个进程正在使用多少内存,但我确实相信当 V8 释放内存时 rss 应该会下降。
v8 - 嵌入式 JavaScript 引擎 V8 中的跟踪执行脚本
在使用 v8 JavaScript 引擎时,我这样做:
但我想做这样的事情:
我问这个是因为我想更好地理解 v8。我知道它是 JIT 编译的,它具有侦听某个端口的调试器接口。我没有通过检查标题找到我的问题的答案,更不用说谷歌提供的极简文档了。
v8 - v8::ResourceConstraints 的语义?
该类v8::ResourceConstraints
定义如下:
谁能告诉我young_space_size
,old_space_size
和max_executable_size
是什么?它们的单位是什么,它们是如何相关的,等等?似乎没有太多文档。
另外,如何使用该stack_limit
物业?例如,如果我希望我的 V8 隔离使用不超过 1MB 的堆栈空间,我将如何计算指针值stack_limit
?
c++ - v8::Persistent MarkIndependent,这个方法到底是做什么的?
以下是v8代码注释,我不太明白解释。