aboutsummaryrefslogtreecommitdiff
path: root/src/checker.cpp
diff options
context:
space:
mode:
authorJeroen van Rijn <Kelimion@users.noreply.github.com>2021-08-16 22:16:03 +0200
committerJeroen van Rijn <Kelimion@users.noreply.github.com>2021-08-16 22:16:03 +0200
commit3af078e9417274ce7b6fdfa76ebd72ac26f87668 (patch)
tree1a3b58ce02044bb1cfdfdcea03ed70c1e135f7d4 /src/checker.cpp
parent48c1f0ab590d5f120548a212fff2c762f8818f34 (diff)
parent19386814b3ff02914d59ecf20e40191f151d8dbe (diff)
Merge branch 'master' into bigint
Diffstat (limited to 'src/checker.cpp')
-rw-r--r--src/checker.cpp10
1 files changed, 6 insertions, 4 deletions
diff --git a/src/checker.cpp b/src/checker.cpp
index 79a60f896..11d706403 100644
--- a/src/checker.cpp
+++ b/src/checker.cpp
@@ -629,14 +629,16 @@ void check_scope_usage(Checker *c, Scope *scope) {
}
-void add_dependency(DeclInfo *d, Entity *e) {
+void add_dependency(CheckerInfo *info, DeclInfo *d, Entity *e) {
+ mutex_lock(&info->deps_mutex);
ptr_set_add(&d->deps, e);
+ mutex_unlock(&info->deps_mutex);
}
void add_type_info_dependency(DeclInfo *d, Type *type) {
if (d == nullptr) {
- // GB_ASSERT(type == t_invalid);
return;
}
+ // NOTE(bill): no mutex is required here because the only procedure calling it is wrapped in a mutex already
ptr_set_add(&d->type_info_deps, type);
}
@@ -657,7 +659,7 @@ void add_package_dependency(CheckerContext *c, char const *package_name, char co
e->flags |= EntityFlag_Used;
GB_ASSERT_MSG(e != nullptr, "%s", name);
GB_ASSERT(c->decl != nullptr);
- ptr_set_add(&c->decl->deps, e);
+ add_dependency(c->info, c->decl, e);
}
void add_declaration_dependency(CheckerContext *c, Entity *e) {
@@ -665,7 +667,7 @@ void add_declaration_dependency(CheckerContext *c, Entity *e) {
return;
}
if (c->decl != nullptr) {
- add_dependency(c->decl, e);
+ add_dependency(c->info, c->decl, e);
}
}