This commit is contained in:
2026-09-05 08:19:52 -07:00
parent 58089ce956
commit aa9f9e12ef
+16 -16
View File
@@ -187,7 +187,7 @@ static void free_object(LispVal *val) {
lisp_release_object(val); lisp_release_object(val);
} }
static inline void make_GRAY_if_white(LispVal *val) { static inline void make_gray_if_white(LispVal *val) {
if (OBJECTP(val) && OBJECT_GC_SET_P(val, GC_WHITE)) { if (OBJECTP(val) && OBJECT_GC_SET_P(val, GC_WHITE)) {
gc_move_to_set(val, GC_GRAY); gc_move_to_set(val, GC_GRAY);
} }
@@ -200,39 +200,39 @@ static void mark_object(LispVal *val) {
} }
switch (((LispObject *) val)->type) { switch (((LispObject *) val)->type) {
case TYPE_CONS: case TYPE_CONS:
make_GRAY_if_white(((LispCons *) val)->car); make_gray_if_white(((LispCons *) val)->car);
make_GRAY_if_white(((LispCons *) val)->cdr); make_gray_if_white(((LispCons *) val)->cdr);
break; break;
case TYPE_SYMBOL: { case TYPE_SYMBOL: {
LispSymbol *sym = val; LispSymbol *sym = val;
make_GRAY_if_white(sym->name); make_gray_if_white(sym->name);
make_GRAY_if_white(SYMBOL_VALUE(sym)); make_gray_if_white(SYMBOL_VALUE(sym));
make_GRAY_if_white(sym->function); make_gray_if_white(sym->function);
make_GRAY_if_white(sym->plist); make_gray_if_white(sym->plist);
break; break;
} }
case TYPE_VECTOR: { case TYPE_VECTOR: {
LispVector *vec = val; LispVector *vec = val;
for (size_t i = 0; i < vec->length; ++i) { for (size_t i = 0; i < vec->length; ++i) {
make_GRAY_if_white(vec->data[i]); make_gray_if_white(vec->data[i]);
} }
break; break;
} }
case TYPE_HASH_TABLE: { case TYPE_HASH_TABLE: {
HT_FOREACH_INDEX(val, i) { HT_FOREACH_INDEX(val, i) {
make_GRAY_if_white(HASH_KEY(val, i)); make_gray_if_white(HASH_KEY(val, i));
make_GRAY_if_white(HASH_VALUE(val, i)); make_gray_if_white(HASH_VALUE(val, i));
} }
break; break;
} }
case TYPE_FUNCTION: { case TYPE_FUNCTION: {
LispFunction *fobj = val; LispFunction *fobj = val;
make_GRAY_if_white(fobj->name); make_gray_if_white(fobj->name);
make_GRAY_if_white(fobj->docstr); make_gray_if_white(fobj->docstr);
make_GRAY_if_white(fobj->args.req); make_gray_if_white(fobj->args.req);
make_GRAY_if_white(fobj->args.opt); make_gray_if_white(fobj->args.opt);
make_GRAY_if_white(fobj->args.kw); make_gray_if_white(fobj->args.kw);
make_GRAY_if_white(fobj->args.rest); make_gray_if_white(fobj->args.rest);
break; break;
} }
case TYPE_STRING: case TYPE_STRING: