在Spidermonkey中线程化

时间:2012-01-22 21:21:49

标签: mozilla nsthread xpcom spidermonkey javascript-engine

我正在尝试在SpiderMonkey中启用线程调试转储 编辑jsinterp.cpp文件。基本上,我想做的事情 如下:

  1. 在Interpret()的主循环开始之前捕获JSScript。
  2. 打开一个单独的帖子。
  3. 在该线程中,使用脚本调用js_Disassemble来获取 机器代码。
  4. 将机器代码写入文件。
  5. 尝试线程版本的原因仅仅是为了提高性能 的问题。如果我运行不诚实的,那么一些插件会变得“反应迟钝” 在同一个线程中写入输出。我可以在一个单独的输出 线程,但它太慢了。

    我按照https://developer.mozilla.org/en/Making_Cross-Thread_Calls_Using_Runnables中的教程进行操作 用于创建线程。但是当我建造它时,我面临着11“尚未解决的问题 外部符号错误。“再经过一些谷歌搜索,我发现了 通过#define XPCOM_GLUE设置XPCOM_GLUE 1.然而,这次我是 面临一个新问题:“基类nsRunnable未定义”。我不能 找到解决方案。

    任何帮助将不胜感激。 谢谢,

1 个答案:

答案 0 :(得分:0)

您不能安全地使用单独的线程。垃圾收集可以在主线程上运行,并从您下面收集JSScript。然后这个过程会崩溃。

每次SpiderMonkey进入解释器时都会调用

js_Interpret,无论浏览器是运行<script>还是仅调用函数或onclick=事件侦听器。所以你可能最终会多次转储相同的脚本。也许这就是它如此缓慢的原因。考虑在编译时转储字节码。