如何解决我如何在我自己的 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 */);
当对象的种类用 env
和 GC_new_kind
定义时,会设置 GC_MAKE_PROC
值 - 之后似乎没有更新它的机制。这让我觉得 env
不是我想要的。如果不是 - env
的目的是什么?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。