gpt4 book ai didi

javascript - 为什么 `enable-javascript-harmony` 会阻止 Web Worker 中的 Stack Overflow?

转载 作者:行者123 更新时间:2023-11-30 00:06:37 27 4
gpt4 key购买 nike

我使用 js_of_ocaml 将一些代码从 Ocaml 编译为 Javascript。现在,当将该代码移动到 Web Worker 线程中时,我开始得到 StackOverflow

但是,当我在主线程上运行代码时,或者如果我在工作版本中启用 chrome://flags/#enable-javascript-harmony代码运行正常!

知道会发生什么吗? enable-harmony 标志到底在做什么?

我认为它可能会启用尾部调用优化,但我觉得它尚未启用似乎很奇怪。此外,尾调用本身并不能解释为什么代码在主线程中运行时不会溢出。

有关实际代码的示例,请参阅下面的链接。在第一个链接中,代码在主线程中运行,在第二个链接中,代码的主要部分委托(delegate)给了一个 worker:

当我们到达optimize_0plus_sound 引理的第一个归纳时,worker 版本将发生堆栈溢出;在主线程中运行 Coq 的版本完全没有问题。很奇怪。

谢谢!

最佳答案

确实是尾调用消除。这是 ES6 的一项功能,在 V8 中仍处于试验阶段,因此目前只能通过标志启用。

我的猜测是您只看到了对工作人员的影响,因为您在更改标志后没有重新启动 Chrome?

关于javascript - 为什么 `enable-javascript-harmony` 会阻止 Web Worker 中的 Stack Overflow?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38272392/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com