chez scheme作为饱经传颂的传奇编译器,应具有较高的价值,计划研读chez scheme代码。
chez在闭源版本采用了一般的极少pass的架构,而在开源版本改用了nanopass的架构,增加了pass数量,减少了每个pass做的事。即遍历了更多次AST,每次遍历的时间缩短了。最终编译所需时间增加了,而生成代码的执行速度却减少了。
chez的闭源版本采用的是linear scan算法进行寄存器分配,而开源版本更换了“图着色”(graph coloring)方法
chez由「增量编译」 (?
有芯片厂拿Chez跑模拟流片等芯片设计
nanopass的match宏
chez的FFI(Foreign Function Interface)接口非常棒
s/syntax.ss有上千行的宏
c/expeditor.c是chez的repl
运行时是C语言写的,有一个非常快速的gc实现。petit.boot
其他:
寄存器问题
kent:MMIX 的寄存器环(以及 SPARC 的寄存器窗口)其实是有问题的,当函数递归调用达到一定的深度之后,寄存器环里有再多寄存器都会被用光,到时候就会出现大量的寄存器与内存之间的数据交换,而被“压栈”之后的寄存器,并不会得到有效地“再利用”。