From 0d059aa797cf5a52648f2ff9dab38a16bda7a7a0 Mon Sep 17 00:00:00 2001 From: gingerBill Date: Mon, 16 Jan 2023 18:08:28 +0000 Subject: [PATCH] Replace `BlockingMutex` with `RwMutex` --- src/llvm_backend.hpp | 2 +- src/llvm_backend_general.cpp | 28 ++++++++++++++-------------- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/src/llvm_backend.hpp b/src/llvm_backend.hpp index 8237b880f..85f1078f2 100644 --- a/src/llvm_backend.hpp +++ b/src/llvm_backend.hpp @@ -143,7 +143,7 @@ struct lbModule { PtrMap struct_field_remapping; // Key: LLVMTypeRef or Type * i32 internal_type_level; - BlockingMutex values_mutex; + RwMutex values_mutex; PtrMap values; PtrMap soa_values; diff --git a/src/llvm_backend_general.cpp b/src/llvm_backend_general.cpp index 5bee5d32c..2c171239a 100644 --- a/src/llvm_backend_general.cpp +++ b/src/llvm_backend_general.cpp @@ -2186,25 +2186,25 @@ gb_internal void lb_ensure_abi_function_type(lbModule *m, lbProcedure *p) { gb_internal void lb_add_entity(lbModule *m, Entity *e, lbValue val) { if (e != nullptr) { - mutex_lock(&m->values_mutex); + rw_mutex_lock(&m->values_mutex); map_set(&m->values, e, val); - mutex_unlock(&m->values_mutex); + rw_mutex_unlock(&m->values_mutex); } } gb_internal void lb_add_member(lbModule *m, String const &name, lbValue val) { if (name.len > 0) { - mutex_lock(&m->values_mutex); + rw_mutex_lock(&m->values_mutex); string_map_set(&m->members, name, val); - mutex_unlock(&m->values_mutex); + rw_mutex_unlock(&m->values_mutex); } } gb_internal void lb_add_procedure_value(lbModule *m, lbProcedure *p) { - mutex_lock(&m->values_mutex); + rw_mutex_lock(&m->values_mutex); if (p->entity != nullptr) { map_set(&m->procedure_values, p->value, p->entity); } string_map_set(&m->procedures, p->name, p); - mutex_unlock(&m->values_mutex); + rw_mutex_unlock(&m->values_mutex); } @@ -2549,9 +2549,9 @@ gb_internal lbValue lb_find_ident(lbProcedure *p, lbModule *m, Entity *e, Ast *e } lbValue *found = nullptr; - mutex_lock(&m->values_mutex); + rw_mutex_shared_lock(&m->values_mutex); found = map_get(&m->values, e); - mutex_unlock(&m->values_mutex); + rw_mutex_shared_unlock(&m->values_mutex); if (found) { @@ -2602,9 +2602,9 @@ gb_internal lbValue lb_find_procedure_value_from_entity(lbModule *m, Entity *e) GB_ASSERT(e != nullptr); lbValue *found = nullptr; - mutex_lock(&m->values_mutex); + rw_mutex_shared_lock(&m->values_mutex); found = map_get(&m->values, e); - mutex_unlock(&m->values_mutex); + rw_mutex_shared_unlock(&m->values_mutex); if (found) { return *found; } @@ -2623,9 +2623,9 @@ gb_internal lbValue lb_find_procedure_value_from_entity(lbModule *m, Entity *e) lbProcedure *missing_proc = lb_create_procedure(m, e, ignore_body); if (ignore_body) { GB_ASSERT(other_module != nullptr); - mutex_lock(&other_module->values_mutex); + rw_mutex_shared_lock(&other_module->values_mutex); auto *found = map_get(&other_module->values, e); - mutex_unlock(&other_module->values_mutex); + rw_mutex_shared_unlock(&other_module->values_mutex); if (found == nullptr) { lbProcedure *missing_proc_in_other_module = lb_create_procedure(other_module, e, false); array_add(&other_module->missing_procedures_to_check, missing_proc_in_other_module); @@ -2702,9 +2702,9 @@ gb_internal lbValue lb_find_value_from_entity(lbModule *m, Entity *e) { } lbValue *found = nullptr; - mutex_lock(&m->values_mutex); + rw_mutex_shared_lock(&m->values_mutex); found = map_get(&m->values, e); - mutex_unlock(&m->values_mutex); + rw_mutex_shared_unlock(&m->values_mutex); if (found) { return *found; }