在每种语言的基础上,JVM中的选择性尾部调用支持?

虽然看起来尾部调用优化不会被添加为常见的优化技术,特别是在购买Sun之后,技术上不可能让VM上运行的语言决定他们的编译器是否发出了
tailcall
指令字节码? E. g。 Java,Groovy可以决定不使用该指令,而更多功能语言如Scala或Clojure可以发出它,而HotSpot VM只会优化标有
tailcall
的语言?     
已邀请:
是的,这在技术上是可行的 - 事实上,Arnold Schwaighofer为OpenJDK提供了一个实验性的补丁,虽然它并不容易应用补丁和构建,但目前还没有及时更新。 一些明确的尾调用指令优于JVM对尾部位置的函数调用的透明优化,因为JVM可以验证你指定为尾调用的内容真的是看到John Rose的这个尾调用博客文章,以解释一些可以完成的验证。 我认为JVM的未来不是Java,我希望有时间和才能的人推动尾部调用JVM。     

要回复问题请先登录注册