【问题标题】:Threading in SpidermonkeySpidermonkey中的线程
【发布时间】:2012-02-16 09:36:09
【问题描述】:

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

  1. 在 Interpret() 的主循环开始之前捕获 JSScript。
  2. 打开一个单独的线程。
  3. 在该线程中,使用脚本调用 js_Disassemble 以获取 机器码。
  4. 将机器代码写入文件。

尝试线程版本的原因仅仅是为了性能 问题。如果我运行 disassmeble 和 将输出写入同一个线程。我可以一次获得一些输出 线程,但它太慢了。

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

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

【问题讨论】:

    标签: mozilla nsthread xpcom spidermonkey javascript-engine


    【解决方案1】:

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

    每次 SpiderMonkey 进入解释器时都会调用js_Interpret,无论浏览器是在运行<script>还是只是调用一个函数或onclick=事件监听器。因此,您可能最终会多次转储相同的脚本。也许这就是它如此缓慢的原因。考虑在编译时转储字节码。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-09-13
      • 2015-11-26
      • 2010-11-06
      • 2010-11-06
      • 1970-01-01
      • 2017-06-29
      • 2010-10-28
      相关资源
      最近更新 更多