Trampoline

Trampoline #

tail call optimization #

经过CPS变换后,递归函数已经转化成一条长长的continuation链

如果是 tail call,并且语言没有 tail call optimization,那么这个链会不断增长,直到栈溢出。

因此需要手动强制弹出下一层调用的函数,禁止解释器的压栈行为,这就是所谓的Trampoline。

https://www.ficapy.com/2021/02/19/recursion-to-iteration4/ https://blog.moertel.com/posts/2013-06-12-recursion-to-iteration-4-trampolines.html