【问题标题】:Opt-in tail call support in the JVM on a per-language base?在每种语言基础上的 JVM 中选择加入尾调用支持?
【发布时间】:2011-02-23 15:28:00
【问题描述】:

虽然看起来不会将尾调用优化作为一种​​常见的优化技术添加,尤其是在 Sun 被收购之后,但如果让运行在 VM 上的语言自行决定编译器是否发出错误,从技术上来说,这不是可能吗? tailcall字节码中的指令?

E. G。 Java、Groovy 可以决定不使用该指令,而 Scala 或 Clojure 等更多函数式语言可以发出它,HotSpot VM 只会优化标有tailcall的那些?

【问题讨论】:

    标签: functional-programming jvm programming-languages vm-implementation tail-call-optimization


    【解决方案1】:

    是的,这在技术上是可行的——事实上,Arnold Schwaighofer 为 OpenJDK 提供了一个实验性补丁,它就是这样做的,尽管应用补丁和构建并不容易,因为它没有跟上当前日期。

    显式尾部调用指令比 JVM 对尾部位置的函数调用的透明优化具有优势,因为 JVM 可以验证您指定为尾部调用的内容确实是这样,请参阅 tail call blog post by John Rose 以了解一些可以做的验证。

    我认为 JVM 的未来不是 Java,我希望有时间和才华的人推动 JVM 的尾声。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-10
    • 2012-04-23
    • 2015-02-08
    • 1970-01-01
    • 1970-01-01
    • 2011-04-07
    相关资源
    最近更新 更多