其他参考斯大林编译器如何粗暴地优化?

时间:2012-01-14 01:47:13

标签: compiler-construction compilation scheme computer-science

J.M. Siskind's research statement州:

  

斯大林是Scheme的优化编译器,它执行整个程序的静态分析,并使用该分析的结果生成极其高效的代码。斯大林利用大量的静态分析技术。它执行一种新形式的多变量流分析,使用迭代单变量流分析来执行流向分裂:克隆过程的专用副本和将目标分配到这些克隆的每个调用点。它使用流量分析的结果执行寿命分析,逃逸分析,点分析和必须别名分析。这些分析支持一种新颖的轻量级闭包转换形式,它消除了大多数闭包槽,使用诸如可变全球化和本地化之类的技术,压缩静态后链,并且通常从程序中消除大多数闭包。它还使用上述分析来支持基于流的区域存储管理,其中运行时垃圾收集在每个抽象值和每个程序点的基础上被静态分配和释放替换。它还使用Screamer开创的技术扩展来执行流向轻量级CPS转换,以支持极其高效的一流延续。最后,它支持流向内联和低级表示选择,以在每个抽象值和每个程序点的基础上选择标记的实现(或非实现),标记检查和标记分派。这消除了大多数运行时标记,标记检查,标记,标记剥离,标记调度,装箱和从程序中取消装箱。 这些分析和优化允许斯大林生成极其高效的代码,其性能优于所有其他Scheme编译器,范围在2到100之间,特别是对于数字密集型代码。斯大林经常生成的代码优于手写的c和Fortran代码。

我能够找到以下关于闭包/函数调用实现的非常有趣的论文:Flow-Directed Lightweight Closure Conversion。我还通过电子邮件向作者询问了关于其他主题的论文,这些论文被提到将在封闭转换论文中写出:

  

Siskind,J。M. 2000a。流向轻量CPS转换。准备中。

     

Siskind,J。M. 2000b。流向多变量。准备中。

     

Siskind,J。M. 2000c。流向定向表示选择。准备中。

     

Siskind,J。M. 2000d。流向存储管理。准备中

不幸的是,他从来没有写过这些论文。我的问题是:是否有任何替代或相关的论文涉及这些主题?我非常有兴趣了解Stalin(或其他编译器)如何编译如垃圾收集,动态类型,支持第一类函数甚至是第一类延续的Scheme这样的高级语言,可以静态编译为如此高效的代码

1 个答案:

答案 0 :(得分:4)

R. Kent Dybvig's publications list

编辑:Chez Scheme的一个很好的介绍是他的ICFP presentationpaper that went along with that。一些论文特别涉及Scheme(宏,多值,延续),有些论文更广泛适用(Register Allocation Using Lazy Saves, Eager Restores, and Greedy Shuffling)。