可以从脚本中禁用Firefox JavaScript JIT吗?

可以从脚本中禁用Firefox JavaScript JIT吗?,javascript,firefox,jit,Javascript,Firefox,Jit,我们的网站有一个相当复杂的JS应用程序,在最新的Firefox10版本中失败。这是由于JS解释器中出现了一个bug,使得变量在显然不是的情况下返回NULL。此错误仅在JIT编译器处于活动状态时发生,而不是在禁用时发生。我们将向Mozilla报告该错误,并尝试找到解决方法 有没有办法在Firefox中从脚本内部禁用特定脚本的JIT 谢谢。加布里埃尔,没有可靠的方法可以做到这一点。您可以通过使用某种JIT尚不支持的功能来禁用特定功能的JIT,但显然JIT人员试图最小化可能触发这种情况的环境集。。。没

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

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


谢谢。

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

另一方面,一旦您提交了bug,JS引擎人员可能会根据发生的情况建议您的解决方案


请在你提交的bug上抄送我(“:bz”?

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

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

看到这里了吗

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


谢谢大家!Mozilla摇滚乐

这听起来违反直觉,即使这是可能的。为了从JS发出命令,对JS的特定部分禁用JIT。您将需要编译器来解析JS,而这只能通过JIT来完成。由于脚本已被解析,因此在其上启用或禁用JIT没有意义。它可能是脚本标记上的专有属性,或者在html页面上。我建议您使用某种浏览器版本嗅探来动态替换有问题的JS,或者显示一个功能减少的页面,直到Mozilla根据您的错误报告发布修复程序。我还将研究Mozilla说这不是一个bug的场景,因此我还将研究我最后的解决方法。实际上可以对编译器进行排序,据我所知,解释器首先解析代码。JIT似乎只适用于多次调用的重复或重复过程。但是我承认,我对这个问题的研究还不够。这个问题在这个网页上是可见的。这是一个基于HTML5的英语学习游戏。嗨,Boris,这个问题是在一个调试器的屏幕截图上创建的,在那里问题是可见的。我可以提供更多的细节,调试转储,或者你可以在这里尝试,我相信这个bug本身迟早会被修复的。同时,您知道今天是否有一个特定的函数恰好禁用了JIT?我们在解决这个问题时遇到了很多麻烦。谢谢你的建议。谢谢,我会在Bugzilla继续讨论,如果我找到解决办法,我会在这里报告。