Mono中的Tailcall消除

时间:2012-11-29 00:54:40

标签: .net mono

我有一个.NET 4.0应用程序,它大量使用尾递归(用F#编程)。它在.NET VM上运行良好,但它在Mono-3.0.1上没有堆栈。

我尝试使用mono --optimize=tailc运行,但这似乎没有改变任何东西。

有没有办法强制单声道消除尾部通话? 有没有办法增加单声道的最大堆栈大小?

1 个答案:

答案 0 :(得分:1)

最近有一个非常类似的问题和有用的答案:Stack size under Mono

正如罗伯特哈维已经在评论中指出的那样,Mono已经打破/不完整的尾部呼叫支持F#(bug 476785: Tail call support in F#)。问题的解决方法是on Mono's runtime ongoing projects list

可以使用System.Threading.Thread构造函数或PE头中增加堆栈大小。但System.Threading.Thread方式does not work in Mono。要更改PE,您可能会need MS Visual Studio,因为editbin.exe /stack可能无法替代。