save macro procesures in each syntax object
This commit is contained in:
@@ -276,6 +276,11 @@ gc_mark_object(pic_state *pic, struct pic_object *obj)
|
||||
break;
|
||||
}
|
||||
case PIC_TT_SYNTAX: {
|
||||
struct pic_syntax *stx = (struct pic_syntax *)obj;
|
||||
|
||||
if (stx->macro) {
|
||||
gc_mark_object(pic, (struct pic_object *)stx->macro);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case PIC_TT_SENV: {
|
||||
|
||||
+13
@@ -385,6 +385,19 @@ pic_syntax_new(pic_state *pic, int kind, pic_sym sym)
|
||||
stx = (struct pic_syntax *)pic_obj_alloc(pic, sizeof(struct pic_syntax), PIC_TT_SYNTAX);
|
||||
stx->kind = kind;
|
||||
stx->sym = sym;
|
||||
stx->macro = NULL;
|
||||
return stx;
|
||||
}
|
||||
|
||||
struct pic_syntax *
|
||||
pic_syntax_new_macro(pic_state *pic, pic_sym sym, struct pic_proc *macro)
|
||||
{
|
||||
struct pic_syntax *stx;
|
||||
|
||||
stx = (struct pic_syntax *)pic_obj_alloc(pic, sizeof(struct pic_syntax), PIC_TT_SYNTAX);
|
||||
stx->kind = PIC_STX_MACRO;
|
||||
stx->sym = sym;
|
||||
stx->macro = macro;
|
||||
return stx;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user