Маркированные указатели являются общей оптимизацией при реализации динамических языков: используйте требования к выравниванию, которые означают, что низкие два или три бита указателя всегда равны нулю и используют их для хранения информации о типе.Boehm и тегированные указатели
Предположим, вы используете сборщик мусора Boehm, который в основном работает, просматривая активные данные для вещей, которые выглядят как указатели. Tagged указатели не похожи на указатели, в том смысле, что их младшие разряды отличны от нуля.
Это шоу-стоппер, т. Е. У вас есть, чтобы использовать помеченные указатели, если вы используете Boehm? Или у него есть путь вокруг этой проблемы?
Зачем использовать Boehm для реализации языка? Если вы достаточно продвинуты, чтобы подумать о сохранении нескольких бит информации о типе, вы можете, конечно, написать GC с ручной настройкой, который не подходит для этого и является более умным, чем Boehm для вашего языка? Правильно? – delnan
В принципе возможно, но в краткосрочной перспективе нетривиальнее делать лучше, чем Boehm (обратите внимание, что, например, Mono использовала его до недавнего времени), и в долгосрочной перспективе я нацелен на интероперабельность с C (в каком сценарии Boehm, возможно, является почти оптимальным решение). – rwallace