From 7a9b7af078da29ca54e4dbd653b4ac0fa46d18c3 Mon Sep 17 00:00:00 2001 From: gingerBill Date: Tue, 13 Jul 2021 23:09:24 +0100 Subject: Reduce mutex usage and convert things to queues from arrays --- src/check_expr.cpp | 18 +++++------------- 1 file changed, 5 insertions(+), 13 deletions(-) (limited to 'src/check_expr.cpp') diff --git a/src/check_expr.cpp b/src/check_expr.cpp index beff1a532..70d8a891f 100644 --- a/src/check_expr.cpp +++ b/src/check_expr.cpp @@ -225,15 +225,13 @@ bool find_or_generate_polymorphic_procedure(CheckerContext *c, Entity *base_enti return false; } - - gb_mutex_lock(&info->gen_procs_mutex); - defer (gb_mutex_unlock(&info->gen_procs_mutex)); - String name = base_entity->token.string; Type *src = base_type(base_entity->type); Type *dst = nullptr; - if (type != nullptr) dst = base_type(type); + if (type != nullptr) { + dst = base_type(type); + } if (param_operands == nullptr) { GB_ASSERT(dst != nullptr); @@ -242,6 +240,8 @@ bool find_or_generate_polymorphic_procedure(CheckerContext *c, Entity *base_enti GB_ASSERT(dst == nullptr); } + gb_mutex_lock(&info->gen_procs_mutex); + defer (gb_mutex_unlock(&info->gen_procs_mutex)); if (!src->Proc.is_polymorphic || src->Proc.is_poly_specialized) { return false; @@ -314,9 +314,6 @@ bool find_or_generate_polymorphic_procedure(CheckerContext *c, Entity *base_enti auto *found_gen_procs = map_get(&info->gen_procs, hash_pointer(base_entity->identifier)); if (found_gen_procs) { - // gb_mutex_lock(&info->gen_procs_mutex); - // defer (gb_mutex_unlock(&info->gen_procs_mutex)); - auto procs = *found_gen_procs; for_array(i, procs) { Entity *other = procs[i]; @@ -353,9 +350,6 @@ bool find_or_generate_polymorphic_procedure(CheckerContext *c, Entity *base_enti } if (found_gen_procs) { - // gb_mutex_lock(&info->gen_procs_mutex); - // defer (gb_mutex_unlock(&info->gen_procs_mutex)); - auto procs = *found_gen_procs; for_array(i, procs) { Entity *other = procs[i]; @@ -425,7 +419,6 @@ bool find_or_generate_polymorphic_procedure(CheckerContext *c, Entity *base_enti proc_info->generated_from_polymorphic = true; proc_info->poly_def_node = poly_def_node; - // gb_mutex_lock(&info->gen_procs_mutex); if (found_gen_procs) { array_add(found_gen_procs, entity); } else { @@ -433,7 +426,6 @@ bool find_or_generate_polymorphic_procedure(CheckerContext *c, Entity *base_enti array_add(&array, entity); map_set(&info->gen_procs, hash_pointer(base_entity->identifier), array); } - // gb_mutex_unlock(&info->gen_procs_mutex); GB_ASSERT(entity != nullptr); -- cgit v1.2.3