我正在编写一个相当标准的堆栈机编译器。现在我想添加垃圾回收器。我可以看到我可以生成某种“堆栈映射”以知道每个激活记录中哪些变量是gc根。然而,我不知道如何处理执行期间推送到堆栈中的中间值。我正在编译的语言类似于Pascal,因此我不需要也不想使用标签来标识指针和其他数据类型。
我会感激任何关于以下内容的提示/指针:
1. 在任何时间点上找到堆栈中的gc根(即如何识别已推送到堆栈中的中间值中的哪些是gc根)。 2. 编码此信息的常见形式(即如何生成和编码“堆栈映射”)。
非常感谢! Nicolas
我会感激任何关于以下内容的提示/指针:
1. 在任何时间点上找到堆栈中的gc根(即如何识别已推送到堆栈中的中间值中的哪些是gc根)。 2. 编码此信息的常见形式(即如何生成和编码“堆栈映射”)。
非常感谢! Nicolas