fix gc not acknowledging macros and strings
This commit is contained in:
parent
5504f6b123
commit
d23a9a4827
2 changed files with 5 additions and 1 deletions
5
src/gc.c
5
src/gc.c
|
|
@ -99,13 +99,16 @@ V gc_collect(Gc *gc) {
|
||||||
obj->tail = forward(gc, obj->tail);
|
obj->tail = forward(gc, obj->tail);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case TYPE_CLOS: {
|
case TYPE_CLOS:
|
||||||
|
case TYPE_MAC: {
|
||||||
Cl *obj = (Cl *)(hdr + 1);
|
Cl *obj = (Cl *)(hdr + 1);
|
||||||
obj->args = forward(gc, obj->args);
|
obj->args = forward(gc, obj->args);
|
||||||
obj->body = forward(gc, obj->body);
|
obj->body = forward(gc, obj->body);
|
||||||
obj->env = forward(gc, obj->env);
|
obj->env = forward(gc, obj->env);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case TYPE_STR:
|
||||||
|
break;
|
||||||
case TYPE_FWD:
|
case TYPE_FWD:
|
||||||
fprintf(stderr, "fatal GC error: forwarding pointer in to-space\n");
|
fprintf(stderr, "fatal GC error: forwarding pointer in to-space\n");
|
||||||
abort();
|
abort();
|
||||||
|
|
|
||||||
|
|
@ -24,6 +24,7 @@ int main(void) {
|
||||||
error_print(&interp);
|
error_print(&interp);
|
||||||
}
|
}
|
||||||
gc_rootreset(&interp.gc, mark);
|
gc_rootreset(&interp.gc, mark);
|
||||||
|
gc_collect(&interp.gc);
|
||||||
nexttoken(&lex);
|
nexttoken(&lex);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue