From a82186dab48c234c507693b166acd7c13433864a Mon Sep 17 00:00:00 2001 From: glenda Date: Sat, 22 Oct 2022 16:45:32 +0000 Subject: Atomic reference counting --- symbol.c | 29 +++++++++++++++-------------- 1 file changed, 15 insertions(+), 14 deletions(-) (limited to 'symbol.c') diff --git a/symbol.c b/symbol.c index ad06203..61629ee 100644 --- a/symbol.c +++ b/symbol.c @@ -1,6 +1,7 @@ #include #include #include +#include #include "apl9.h" @@ -64,7 +65,7 @@ dupsymbol(Symbol *s) memcpy(new, s, sizeof(Symbol)); new->name = runestrdup(s->name); if(new->value) - incdatumref(new->value); + incref(new->value); return new; } @@ -137,18 +138,18 @@ pushdfnframe(Rune *code, Symtab *scope, Datum *lefto, Datum *righto, Array *left new->lefto = lefto; new->righto = righto; if(lefto) - incdatumref(lefto); + incref(lefto); if(righto) - incdatumref(righto); + incref(righto); if(left){ new->left = allocdatum(ArrayTag, 0); new->left->array = left; - incarrayref(left); + incref(left); }else new->left = nil; new->right = right; if(right) - incarrayref(right); + incref(right); new->prev = td->currentdfn; new->errorguards = nil; @@ -164,13 +165,13 @@ dupdfnframe(DfnFrame *f) new->code = runestrdup(f->code); new->symtab = dupsymtab(f->symtab); if(f->lefto) - incdatumref(f->lefto); + incref(f->lefto); if(f->righto) - incdatumref(f->righto); + incref(f->righto); if(f->left) - incdatumref(f->left); + incref(f->left); if(f->right) - incarrayref(f->right); + incref(f->right); return new; } @@ -252,7 +253,7 @@ getalpha(void) throwerror(nil, ESyntax); else{ res = dfn->left; - incdatumref(res); + incref(res); } return res; } @@ -267,7 +268,7 @@ getomega(void) else{ res = allocdatum(ArrayTag, 0); res->array = dfn->right; - incarrayref(res->array); + incref(res->array); } return res; } @@ -281,7 +282,7 @@ getalphao(void) throwerror(nil, ESyntax); else{ res = dfn->lefto; - incdatumref(res); + incref(res); } return res; } @@ -295,7 +296,7 @@ getomegao(void) throwerror(nil, ESyntax); else{ res = dfn->righto; - incdatumref(res); + incref(res); } return res; } @@ -308,7 +309,7 @@ setalpha(Datum *new) throwerror(nil, ESyntax); if(dfn->left == nil){ dfn->left = new; - incdatumref(new); + incref(new); } } -- cgit v1.2.3