summaryrefslogtreecommitdiff
path: root/symbol.c
diff options
context:
space:
mode:
authorglenda <glenda@9front>2022-10-22 16:45:32 +0000
committerglenda <glenda@9front>2022-10-22 16:45:32 +0000
commita82186dab48c234c507693b166acd7c13433864a (patch)
treeeb6db255c93b1e6278e0e833e915c4c85372c84f /symbol.c
parenta3b635de1753ed4ce73dabdc7e2c24dfdf77891e (diff)
Atomic reference counting
Diffstat (limited to 'symbol.c')
-rw-r--r--symbol.c29
1 files changed, 15 insertions, 14 deletions
diff --git a/symbol.c b/symbol.c
index ad06203..61629ee 100644
--- a/symbol.c
+++ b/symbol.c
@@ -1,6 +1,7 @@
#include <u.h>
#include <libc.h>
#include <bio.h>
+#include <thread.h>
#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);
}
}