【问题标题】:Can the Firefox JavaScript JIT be disabled from a script?可以从脚本中禁用 Firefox JavaScript JIT 吗?
【发布时间】:2012-03-13 17:02:06
【问题描述】:

我们的网站有一个相当复杂的 JS 应用程序,在最新的 Firefox 10 版本中失败了。这是由于 JS 解释器中的一个错误导致的,当变量显然不是时返回 NULL。此错误仅在 JIT 编译器处于活动状态时发生,而不是在它被禁用时发生。我们将向 Mozilla 报告该错误并尝试找到解决方法。

有没有办法在 Firefox 中为特定脚本禁用 JIT,从脚本内部?

谢谢。

【问题讨论】:

  • 这听起来违反直觉,即使它是可能的。为了发出命令以禁用 JS 特定部分的 JIT,从 JS.您将需要编译器来解析 JS,而这只能由 JIT 完成。由于脚本已经被解析,因此启用或禁用 JIT 没有任何意义。
  • 它可以是脚本标签或html页面上的专有属性。
  • 我建议您使用某种浏览器版本嗅探来动态替换有问题的 JS 片段或显示功能减少的页面,直到 Mozilla 根据您的错误报告发布修复程序。我还会研究 Mozilla 说这不是错误的情况,因此我也会在最后查看解决方法。
  • 实际上可以围绕编译器进行排序,据我所知,解释器无论如何都会首先解析代码。 JIT 似乎只在调用超过一定次数的重复或重复过程中起作用。但我承认,我没有对此进行足够的研究。
  • 这个问题在这个网页上可见english-attack.com/game/say-what?content=101477 这是一个基于HTML5-ish特性的英语学习游戏。

标签: javascript firefox jit


【解决方案1】:

答案来自 mozilla.org 的 Brian Hackett (:bhackett):

在脚本中使用 with 将禁用该脚本的 JIT,例如在顶部添加 with({}) {}

看这里https://bugzilla.mozilla.org/show_bug.cgi?id=730004#c11

好消息。这确实解决了这个问题。

谢谢大家! Mozilla 摇滚!

【讨论】:

    【解决方案2】:

    加布里埃尔,没有可靠的方法可以做到这一点。您也许可以通过使用 JIT 尚不支持的某种功能来禁用特定功能的 JIT,但显然 JIT 人员试图最小化可能触发这种情况的一组情况。 .. 没有官方的“关闭 JIT”命令。

    另一方面,一旦您提交了错误,JS 引擎人员可能会根据发生的情况为您提供解决方法。

    请抄送我 (":bz") 你提交的错误?

    【讨论】:

    • 嗨,鲍里斯,问题是在bugzilla.mozilla.org/show_bug.cgi?id=730004 创建的。调试器的屏幕截图显示了问题。我可以提供更多详细信息,调试转储,或者您可以在这里试用english-attack.com/game/say-what?content=101477
    • 我相信这个错误本身迟早会被修复。同时,您是否知道是否有某个特定功能恰好禁用了 JIT today?我们在解决这个问题时遇到了很多麻烦。感谢您的任何建议。
    • 谢谢,如果我找到解决方法,我会在 Bugzilla 中继续讨论并报告。
    猜你喜欢
    • 2018-10-25
    • 2014-05-16
    • 2011-10-14
    • 2014-01-28
    • 1970-01-01
    • 2015-09-18
    • 1970-01-01
    • 1970-01-01
    • 2018-02-22
    相关资源
    最近更新 更多