我正在设计一种语言。首先,我想决定要生成什么代码。这种语言将具有类似 JavaScript 的词法闭包和基于原型的继承。但是我不喜欢垃圾回收并尽可能避免使用。所以问题是:是否有一种优雅的方法来实现闭包,而不必将堆栈帧分配到堆上并留给垃圾回收器?
我的第一个想法:
- 使用引用计数并垃圾收集循环(我不太喜欢这个方法)
- 使用意大利面条式堆栈(看起来非常低效)
- 限制形成闭包的某些上下文,以便我可以通过返回地址堆栈和本地变量堆栈摆脱它们。
我不会使用高级语言或遵循任何调用约定,因此我可以随意破坏堆栈。
(编辑:我知道引用计数是一种垃圾收集的形式,但我使用 gc 更常见的含义)