微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

我如何在我自己的 boehm GC 标记程序中跟踪标记工作以及“env”的目的是什么

如何解决我如何在我自己的 boehm GC 标记程序中跟踪标记工作以及“env”的目的是什么

在实施自己的标记程序时,如何跟踪我完成了多少标记工作?我正在努力以精确模式使用 Boehm Weiser 垃圾收集器。我需要实施我自己的标记程序。对于像包含大量指针的向量这样的大型对象 - gc_mark.h文件说我应该将工作分解成更小的部分,并将我正在标记的指针的对象推回到堆栈上,以便稍后继续标记。我可以向对象添加一个 size_t work_to_do 字段并使用它 - 但我看到了传递给 GC_mark_proc 的 env 参数。 env 参数是否用于存储已完成的工作量?

typedef struct GC_ms_entry * (*GC_mark_proc)(GC_word * /* addr */,struct GC_ms_entry * /* mark_stack_ptr */,struct GC_ms_entry * /* mark_stack_limit */,GC_word /* env */);

当对象的种类用 envGC_new_kind 定义时,会设置 GC_MAKE_PROC 值 - 之后似乎没有更新它的机制。这让我觉得 env 不是我想要的。如果不是 - env 的目的是什么?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。