Boehm和标记指针

标记指针是实现动态语言时的常见优化:利用对齐要求,这意味着指针的低两位或三位始终为零,并使用它们来存储类型信息。 假设您正在使用Boehm垃圾收集器,它基本上通过查看看起来像指针的活动数据来工作。标记指针看起来不像指针,因为它们的低位非零。 这是一个showstopper,即如果你使用Boehm,你是否必须抛弃标记指针?或者它有解决这个问题的方法吗?     
已邀请:
AFAIK Boehm可以使用正确的选项来处理这个问题。它能够以很低的价格检测内部指针。也可以编写自己的扫描代码。基本上可能有足够的钩子来处理任何事情。 我已经编写了自己的收集器,它在堆上是精确的并且在堆栈上是保守的。它没有触及C指针​​。对于某些应用程序,它会更快,因为它对我的语言分配对象有很多了解,并不关心使用传统C ++析构函数管理的其他东西。 然而,它不是增量的或世代的,它也不处理线程(它不够聪明,不能用信号停止线程)。然而,从好的方面来说,它不需要Boehm所做的魔术连接技术(捕捉mallocs等)。在严重缺失方面,您不能将托管对象放入非托管对象。     

要回复问题请先登录注册