From ac191bd31f2983942e297beba077484ba58922f4 Mon Sep 17 00:00:00 2001 From: gingerBill Date: Thu, 26 Aug 2021 21:30:23 +0100 Subject: [PATCH] Simplify logic for `-thread-count:1` --- src/checker.cpp | 20 -------------------- src/thread_pool.cpp | 8 ++++++++ 2 files changed, 8 insertions(+), 20 deletions(-) diff --git a/src/checker.cpp b/src/checker.cpp index ebd5956c2..c93837321 100644 --- a/src/checker.cpp +++ b/src/checker.cpp @@ -4149,17 +4149,6 @@ void check_with_workers(Checker *c, WorkerTaskProc *proc, isize total_count) { semaphore_post(&c->info.collect_semaphore, cast(i32)thread_count); - if (worker_count == 0) { - ThreadProcCheckerSection section_all = {}; - section_all.checker = c; - section_all.offset = 0; - section_all.count = total_count; - Thread dummy_main_thread = {}; - dummy_main_thread.user_data = §ion_all; - proc(&dummy_main_thread); - return; - } - isize file_load_count = (total_count+thread_count-1)/thread_count; isize remaining_count = total_count; @@ -4764,15 +4753,6 @@ void check_procedure_bodies(Checker *c) { u32 worker_count = thread_count-1; // NOTE(bill): The main thread will also be used for work if (!build_context.threaded_checker) { worker_count = 0; - - auto *q = &c->procs_to_check_queue; - ProcInfo *pi = nullptr; - while (mpmc_dequeue(q, &pi)) { - consume_proc_info_queue(c, pi, q, nullptr); - } - - debugf("Total Procedure Bodies Checked: %td\n", total_bodies_checked.load(std::memory_order_relaxed)); - return; } global_procedure_body_in_worker_queue = true; diff --git a/src/thread_pool.cpp b/src/thread_pool.cpp index b0357996c..a8bc327e5 100644 --- a/src/thread_pool.cpp +++ b/src/thread_pool.cpp @@ -104,6 +104,14 @@ void thread_pool_do_task(WorkerTask *task) { } void thread_pool_wait(ThreadPool *pool) { + if (pool->threads.count == 0) { + while (!thread_pool_queue_empty(pool)) { + thread_pool_do_task(thread_pool_queue_pop(pool)); + --pool->ready; + } + GB_ASSERT(pool->ready == 0); + return; + } for (;;) { mutex_lock(&pool->mutex);