diff options
| author | gingerBill <bill@gingerbill.org> | 2023-01-16 18:05:58 +0000 |
|---|---|---|
| committer | gingerBill <bill@gingerbill.org> | 2023-01-16 18:05:58 +0000 |
| commit | 65c0255e7ef82fe45fbc5e55a2c642e96b81343a (patch) | |
| tree | 2d7f332022f6c4211e686ebdc656a623edc679ea /src/llvm_backend_general.cpp | |
| parent | b289a27c4eb26f0e2984c0cbb1a9a7e07cc40325 (diff) | |
Replace `RecursiveMutex` with a `BlockingMutex`
Diffstat (limited to 'src/llvm_backend_general.cpp')
| -rw-r--r-- | src/llvm_backend_general.cpp | 20 |
1 files changed, 11 insertions, 9 deletions
diff --git a/src/llvm_backend_general.cpp b/src/llvm_backend_general.cpp index 7846c302a..5bee5d32c 100644 --- a/src/llvm_backend_general.cpp +++ b/src/llvm_backend_general.cpp @@ -2547,11 +2547,14 @@ gb_internal lbValue lb_find_ident(lbProcedure *p, lbModule *m, Entity *e, Ast *e return *found; } } + + lbValue *found = nullptr; mutex_lock(&m->values_mutex); - defer (mutex_unlock(&m->values_mutex)); + found = map_get(&m->values, e); + mutex_unlock(&m->values_mutex); - auto *found = map_get(&m->values, e); if (found) { + auto v = *found; // NOTE(bill): This is because pointers are already pointers in LLVM if (is_type_proc(v.type)) { @@ -2598,10 +2601,10 @@ gb_internal lbValue lb_find_procedure_value_from_entity(lbModule *m, Entity *e) e = strip_entity_wrapping(e); GB_ASSERT(e != nullptr); + lbValue *found = nullptr; mutex_lock(&m->values_mutex); - defer (mutex_unlock(&m->values_mutex)); - - auto *found = map_get(&m->values, e); + found = map_get(&m->values, e); + mutex_unlock(&m->values_mutex); if (found) { return *found; } @@ -2698,11 +2701,10 @@ gb_internal lbValue lb_find_value_from_entity(lbModule *m, Entity *e) { return lb_find_procedure_value_from_entity(m, e); } + lbValue *found = nullptr; mutex_lock(&m->values_mutex); - defer (mutex_unlock(&m->values_mutex)); - - - auto *found = map_get(&m->values, e); + found = map_get(&m->values, e); + mutex_unlock(&m->values_mutex); if (found) { return *found; } |